• ベストアンサー

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% としたいです。 複数の組み合わせはどのようにしたらよいのでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • asciiz
  • ベストアンサー率70% (6803/9674)
回答No.1

今回の場合、 「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%)))

takuminatsu
質問者

お礼

迅速に対応いただきありがとうございました。

takuminatsu
質問者

補足

ありがとうございます。 そして説明が足らずすいませんが、 コードごとに利益が異なります。  ・コード1 40%以上 A2(利益)×10%、 39%以下は A2(利益)×5% ・コード2 40%以上は A2(利益)×20%、 39%以下は A2(利益)×10% ・・・・といった感じです。 ORを使ってできますでしょうか?

その他の回答 (3)

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.4

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)
回答No.3

こんばんは! コードによって掛け率が違ってくる訳ですね! 一例です。 セル配置は適当にやっていますので、やり方だけ・・・ ↓の画像のように別表を作成しておきます。 実際は薄い緑色部分だけでOKなのですが、解りやすくするために「未満」の行を表示しています。 Sheet1のI2セルに =IF(A2="","",G2*INDEX(Sheet2!$B$3:$C$6,MATCH(A2,コード,0),MATCH(H2,Sheet2!$B$1:$C$1,1))) という数式を入れオートフィルで下へコピーすると 画像のような感じになります。 参考になりますかね?m(_ _)m

  • asciiz
  • ベストアンサー率70% (6803/9674)
回答No.2

>コードごとに利益が異なります。 だとしたら、普通に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で値を検索するなどした方が良いのですが…。