- ベストアンサー
エクセルで複雑な条件の関数
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
地域や果物の名称、魚の名称が追加されて多くなっても対応できる方法です。 ご質問の表はシート1に有るとして、初めにデータベースとなる表を例えばシート2に作成します。 シート2のA2セルから下方に、例えばA2セルには りんご・みかん・ぶどう A3セルには サバ・サンマ・イワシ を入力します。各セルで果物の名称や魚の名称を追加して記入してもかまいません。ただし、A列のセルで異なった行に同じ名称がダブって入力しないようにします。 シート2のB1セルから横の列には地域名を入力します。例えばB1セルに関東、C1セルに東北、D1セルに関西などと入力します。 そこで例のケースではB2セルに50、C2セルに70、B3セルに100、C3セルに120のように入力します。 最後のシート1に戻ってD2セルには次の式を入力して下方にオートフィルドラッグコピーします。 =IF(OR(COUNTA(A2:C2)<>3,COUNTIF(Sheet2!A:A,"*"&A2&"*")=0),"",C2+INDEX(Sheet2!A:Z,SUMPRODUCT(ISNUMBER(FIND(A2,Sheet2!A:A))*ROW(A:A)*1),MATCH(B2,Sheet2!$1:$1,0))) 式に意味はA2セルからC2セルのすべてに入力が無い場合、また、A2セルに入力された名称がシート2のA列に無い場合には空白のセルにしなさい。それ以外ではA2セルの名称がシート2のA列で入力されている行を求め、また、B2セルの地域名がシート2の1行目で入力されている列番号を求め、それらの行と列から加算される料金を求めて、その値をC2セルのデータに加算しなさい。という意味になります。
その他の回答 (4)
- mu2011
- ベストアンサー率38% (1910/4994)
将来の事を想定して表にしていた方が良いと思います。 (1)別シート(Sheet2)に項目列(A列)、地域列(B列)、差額列(C列)の 別表(見出し行あり)を作成します。 項目、地域及び差額の追加・変更があった場合には表変更するだけです。 (2)金額欄に=IF(COUNTA(A2:C2)>2,C2+SUMPRODUCT((Sheet2!A$2:A$1000=A2)*(Sheet2!B$2:B$1000=B2)*(Sheet2!C$2:C$1000)),"")として下方向に必要分コピー
- chie65536(@chie65535)
- ベストアンサー率44% (8740/19838)
追記。 ANo.2の式は「サバ・サンマ・イワシは他より50円高く、東北は他より20円高く、合計は価格より50円高い」と言う式になっています。 従って「サバ・サンマ・イワシ以外はりんご・みかん・ぶどうと同じ」として扱い、「東北以外はすべて関東」として扱います。 なので「サバ・サンマ・イワシでも、りんご・みかん・ぶどうでもない項目」や「関東でも東北でもない地域」は「りんご・みかん・ぶどうの関東」になります。
- chie65536(@chie65535)
- ベストアンサー率44% (8740/19838)
D2セルに =C2+OR(A2="サバ",A2="サンマ",A2="イワシ")*50+(B2="東北")*20+50 と入力して下にコピー。
- papiyonys
- ベストアンサー率30% (53/174)
=IF(AND(OR(A2="りんご",A2="みかん",A2="ぶどう"),B="関東"),C2+50,IF(AND(OR(A2="りんご",A2="みかん",A2="ぶどう"),B="東北"),C2+70,IF(AND(OR(A2="サバ",A2="サンマ",A2="イワシ"),B="関東"),C2+100,C2+120))))
お礼
お礼内容 皆さんの回答を参考に解決することが出来ました! 答えていただいた皆様どうもありがとうございました。 大変参考になりました!