- ベストアンサー
EXCEL 関数
毎度お世話になっております。 関数の内容で質問させて頂きます。 かなりややこしいので、ご了承ください。 A B C D 項目 日にち 金額 摘要 入金 1 1000 SONY 出金 1 500 電話代 振込入金 1 300 NEC 残高 1 200 ・ ・ ・ というように何百行とこういうデータがあります。(項目欄は、入金・出金・振込入金・残高の4つですが、摘要欄は、電話代や水道料等の他に様々な企業名等が載っております。) ここで質問なんですが、例えばこの何千行もあるデータから、項目が出金で日にちが1日で摘要に"代"という文字が含まれている場合、「水道光熱費」という文字が表示されるようにするにはどうしたらよいでしょうか? また、上記の条件にさらにプラスして、摘要欄に「振替」と記載されている場合 "代"を含む文字があり、かつ、「振替」という語句がある場合に「水道光熱費・手数料」といった合わせ技のような手法はないでしょうか? IF・SUMPRODUCT・NOT・ISERROR・FIND等の関数を合わせて色々試してみましたが、なかなかうまくできません。 どなたかご教授願います。 長くなり申し訳ございません。 よろしくお願い致します。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
「水道光熱費」、「水道光熱費・手数料」の表示を、各行のE列に表示するという前提で回答致します。 各行のE列に下記の関数を記述してみて下さい。 記述例 =IF(AND(A2="出金",B2=1),IF(ISERROR(FIND("代",D2)),"",IF(ISERROR(FIND("振替",D2)),"水道光熱費","水道光熱費・手数料")),"") ※2行目(E2)への記述例です。 1.1つ目のIFでは、項目が"出金"でかつ日にちが1であるかを判定します。 2.続いて2つ目のIFでは、摘要に"代"という文字が含まれているか否かをIserror関数の戻りを使用して判定します。 3.更に3つ目のIFでは、摘要に"振替"という文字が含まれているか否かをIserror関数の戻りを使用して判定します。 こうして、1・2・3の条件全てを満たす場合は”水道光熱費・手数料”を、 1・2のみの条件を満たす場合は”水道光熱費”をそれぞれ表示します。
その他の回答 (4)
- KURUMITO
- ベストアンサー率42% (1835/4283)
E1セルに日にちを入力しE2セルには次の式を入力して下方にオートフィルドラッグします。 =IF(OR(A2<>"出金",B2<>E$1),"",IF(COUNTIF(D2,"*代*振替*")>0,"水道光熱費・手数料",IF(COUNTIF(D2,"*代*")>0,"水道光熱費","")))
- tom04
- ベストアンサー率49% (2537/5117)
No.2です! たびたびごめんなさい。 前回の数式はA列の「出金」の条件が抜けていましたので、 数式を =IF(AND(A2="出金",B2=$G$2,ISNUMBER(FIND("代",D2)),ISNUMBER(FIND("振替",D2))),"水道光熱費・手数料",IF(AND(A2="出金",B2=$G$2,ISNUMBER(FIND("代",D2))),"水道光熱費","")) に訂正してください。 かなり長い数式になってしまいました。 何度も失礼しました。m(__)m
- tom04
- ベストアンサー率49% (2537/5117)
こんばんは! 外しているかもしれませんが・・・ ↓の画像で検索する日付のセルを設けておきます。 画像ではG2セルに2/1のシリアル値を入れています。 そして、適用2のE2セルに =IF(AND(B2=$G$2,ISNUMBER(FIND("代",D2)),ISNUMBER(FIND("振替",D2))),"水道光熱費・手数料",IF(AND(B2=$G$2,ISNUMBER(FIND("代",D2))),"水道光熱費","")) という数式を入れ、フィルハンドルの(+)マークでダブルクリックか オートフィルで下へコピーします。 これで画像のような感じになるのですが 以上、参考になれば幸いですが、 最初に書いたように的外れなら読み流してくださいね。m(__)m
- Cupper
- ベストアンサー率32% (2123/6444)
んーとですね まずは、どのように関数を使ったのかを示してみてください (そのほうが、間違いや直したほうが良いところを教えてくれるので理解が早まります) とりあえずアドバイス =IF(「条件1」,IF(「条件2」,IF(「条件3」,「適用1」,""),""),"") などと作る際には = IF(「条件3」,「適用1」,"") = IF(「条件2」,IF(「条件3」,「適用1」,""),"") =IF(「条件1」,IF(「条件2」,IF(「条件3」,「適用1」,""),""),"") などと順序だててくみ上げると間違いを減らすことができます いきなり複雑な関数を書こうとしないようにしましょう また、NOT関数を組み合わせて =IF(NOT(「条件1」),"",IF(NOT(「条件2」),"",IF(NOT(「条件3」),"",「適用1」))) としたほうが、見やすいこともあります
お礼
ご返答ありがとうございます。 自分一人ではなかなかうまくできず、こんがらがってしまいました。 参考にさせていただきます。
補足
ご返答ありがとうございます。 この数式で少し疑問に思ったことがあったのですが、最初の=IF(AND(A2="出金",B2=1),IF(ISERROR(FIND("代",D2)),という数式は理解できたのですが、その後ろの,IF(ISERROR(FIND("振替",D2)),"水道光熱費","水道光熱費・手数料")),"")というのは、1番初めのIF関数のどの欄に入れているのでしょうか? もしかしたら、すべて手入力ということなのでしょうか? 私はいつも、fx関数を用いて作成しているのですがどうなんでしょうか? よろしくお願い致します。