- ベストアンサー
IF関数 複数
IFを使った複数式について教えてください。 A1が”コード1”の時、40%以上は A2(利益)×10%、 39%以下は A2(利益)×5% ↓ =IF(A43="","",IF(A43="コード1",IF(H43<40%,G43*10%,G43*5%))) 上記式でできたのですが、コードが4つまであり そのコードごとに 40%以上は A2(利益)×10%、 39%以下は A2(利益)×5% としたいです。 複数の組み合わせはどのようにしたらよいのでしょうか?
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
今回の場合、 「A43が"コード1"または"コード2"または"コード3"または"コード4"の時に、(以下同文)」 とできるので、or条件(or関数)を使えばよいでしょう。 or( ) 内のどれかの条件が真になれば、or( )関数全体も真になります。 =IF(A43="","",IF(or(A43="コード1",A43="コード2",A43="コード3",A43="コード4"),IF(H43<40%,G43*10%,G43*5%)))
その他の回答 (3)
- tom04
- ベストアンサー率49% (2537/5117)
No.3です! たびたびごめんなさい。 数式に変なものが表示されていました。 もう一度数式のみ投稿します。 =IF(A2="","",G2*INDEX(Sheet2!$B$3:$C$6,MATCH(A2,Sheet2!$A$3:$A$6,0),MATCH(H2,Sheet2!$B$1:$C$1,1))) としてオートフィルで下へコピーです。 実は前回の数式の「コード」部分は、Sheet2のA3~A6セルに名前定義していたので あのような表示になってしまいました。 この際ですので、Sheet1のA列にプルダウンリストを表示する方法も投稿しておきます。 Sheet2のA3~A6セルを範囲指定 → 名前ボックス(画面左上のセル番地が表示されているところ) に コード と入力してOK これでA3~A6セル範囲が「コード」と名前定義されました。 後はSheet1のA列を範囲指定 → データ → 入力規則 → 「リスト」を選択 → 「元の値」の欄に =コード としてOK こうすることによってSheet1のA列はわざわざ入力しなくても、入力規則の「リスト」から ↓の画像のようにプルダウンの中から選択できます。 余計なお世話だったらごめんなさいね。 何度も失礼しました。m(_ _)m
- tom04
- ベストアンサー率49% (2537/5117)
- asciiz
- ベストアンサー率70% (6803/9674)
>コードごとに利益が異なります。 だとしたら、普通にif文を重ねないと行けませんね。 最初にヌル文字列を判定するのは意味ない気がするので省略すると、 =IF(A43="コード1",IF(H43<40%,G43*10%,G43*5%), IF(A43="コード2",IF(H43<40%,G43*20%,G43*10%), IF(A43="コード3",IF(H43<40%,G43*30%,G43*15%), IF(A43="コード4",IF(H43<40%,G43*40%,G43*20%), "" ) ) ) ) 見やすく段付けするとこうなります。 実際の式は1行で書かなければ行けませんので、改行・スペースを取り除いて =IF(A43="コード1",IF(H43<40%,G43*10%,G43*5%),IF(A43="コード2",IF(H43<40%,G43*20%,G43*10%),IF(A43="コード3",IF(H43<40%,G43*30%,G43*15%),IF(A43="コード4",IF(H43<40%,G43*40%,G43*20%),"")))) こんな感じになります。※回答枠の幅で自動改行してしまっていますが、改行無しに書いています もっとコードが増えたり、汎用的にすることを考えると、コードに対する閾値・利益率と言った物を別表(テーブル)にして、vlookupで値を検索するなどした方が良いのですが…。
お礼
迅速に対応いただきありがとうございました。
補足
ありがとうございます。 そして説明が足らずすいませんが、 コードごとに利益が異なります。 ・コード1 40%以上 A2(利益)×10%、 39%以下は A2(利益)×5% ・コード2 40%以上は A2(利益)×20%、 39%以下は A2(利益)×10% ・・・・といった感じです。 ORを使ってできますでしょうか?