• ベストアンサー

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% (6635/9401)
回答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% (6635/9401)
回答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で値を検索するなどした方が良いのですが…。

関連するQ&A

  • if関数を使って割引率をだす

    売上金額の50,000円以下を0%,50,000以上100,000円以下を5%,100,000以上を10%を値引き率とします。 例えばG6のセルにF5の売上金額を参照して上記の条件の元に式を作りたいんです。IF関数を使うのだと思うのですが、どうしてもうまくいかないのでお助けください。

  • IF関数について

    どういうIF関数にすればいいのかわからないので教えて下さい。 ・50以上の場合は0.8掛け ・50以下の場合はマイナス10 ・10以下の場合は0 ・小数点以下は切り捨て 上記を満たす式を教えて下さい。

  • エクセル IF関数 複数条件?

    いつもお世話になります IF関数で複数条件を記入する場合 現在は =IF(AND(A16="aaa",H16>=81),H16-80,IF(AND(A16="aaa",H16>=1),H16+80,IF(AND(A16="bbb",H16>=81),H16-80,IF(AND(A16="bbb",H16>=1),H16+80,H16)))) と やたらと長い条件設定になっています 結果は正しいのですが、もっとスッキリ出来る方法を教えて頂きたいのです。

  • if関数とAND関数の使い方

    エクセルのif関数とANDをつかって複数条件を設定したいのですが、上手く行かずに困っています。 D13のセルの値が以下の場合 29以下なら”1” 30以上34以下なら”2” 35以上39以下なら”3" 40以上44以下なら"4" 45以上なら"5" そこで、次のように式を作ってみたのですが、 「この関数に対して多すぎる引用が入力されています。」とエラーがでてしまいます。 どなたか、お詳しい方、教えていただけたら幸いです。 お願い致します。 =IF(IF(D13<=45,"5"),AND(D13>=40,D13<=44),"4",IF(AND(D13>=35,D13<39),"3",IF(AND(D13>=30,D13<34),"2",IF(D13>=29,"1")))))

  • IF関数で複数の条件の式

    エクセルのIF関数を教えてください。 A1=B1の時、C1に1と表示 A1=B2の時、C1に2と表示 A1=B3の時、C1に3と表示 上記3つの条件以外の場合は何も表示しない 以上の条件の時にC1に入れる式を教えてください。 宜しくお願いします。

  • エクセル2010 IF関数について

    以下のような表を作成中です。 H6 =H7 H7 =E10 H8 =E10 H9 =E10 H11 =IF(AND(H$8>=$E11,H$8<=$F11),"1",IF(OR(H$8>=$F11,H$8<=$G11),"2","")) H11の条件付き書式は以下のようになっています。 H11 =H11="1" 緑に塗りつぶし H11 =H11="2" 赤に塗りつぶし H11の関数についてご教示お願いいたします。 E11に開始日、F11に終了日、G11に遅延の日付を入力するようになっています。 G11に日付が入っていなければE11とF11の日付を、 G11に日付が入っていればE11とF11、F11とG11の日付を 条件付き書式でそれぞれ塗りつぶしたいのですが、 今のH11のIF文だと遅延の日付が入らなくても赤く塗りつぶされてしまいます。 G11が空欄なら・・・と付け加えたいのですが、うまくいかずに困っています。 そもそものIF文にも自信がないのですが、 上記のようなことが出来るようにするには、 どういった関数にすればよいのかご教示願います。 よろしくお願いいたします。

  • IF関数の組み合わせ

    A1セル 21000 B1セル 20000 引き算して1000以上なら+と表示、999以下なら△を表示したいのです。 結果はC1セルにして =A1-B1にIF関数を入れるにはどうしたら良いでしょうか? =IF(C1>=1000,"+","△") 結果 +1010 △988 組み合わせが分からないので教えて下さい。

  • IF関数 どうか教えてください。

    IF関数の式を教えてください。 関数に関しては素人でまったくわかりません。 0は0、1~3は1、4以上は2にしたいのです   IF(セル番号<=3,1,2) 上記の式を考えたのですが0も1となります 0を0とするにはどうしたらいいのでしょうか? ごぞんじの方よろしくお願いします。

  • IF関数が分かりません。

    IF関数を使ったことがなく、自分で調べてやりましたが、うまくいきません。 教えていただければと思います。 うまく行かなかった関数↓#VALUE!と出ます。 =IF("G8>=95","1",IF("G8<=65","2","3")) G8が95以上なら1、65以下なら2、それ以外は3としたいです。 G8にはすでに、=SUM(C8:F8)が入っています。

  • エクセルのIF関数について

    エクセルの数式でIFを使って、下記のような複数の条件の時に、それぞれの計算結果を算出する式を作りましたが、単純に条件を並べただけで(IFとAND使用)、式が長くなってしまいます。これを短く出来る式の方法はありますでしょうか?(他の関数を使用する方法など)また、エクセルの関数の数式を応用編まで詳しく調べられるサイトをご存知でしたら教えてください。 (条件の例)R1への式入力 (1)A1がに"A"か"B"かを入力 (2)A1がAで、B2の値がC3以下の時、R1には8、C3より大きい場合は、B2-C3の値を表示 (3)A1がBで、B2の値がC3以下の時、R1には5、C3より大きい場合は、(B2-C3)/2の値を表示 といった条件を満たすものが作成したいです。 ちなみに私が作成した式は、 =IF(AND(A1=A,B2<=C3),8),IF(AND(A1=A,B2>C3),B2-C3,・・・・)って感じです。こんな方法しか無いでしょうか?

専門家に質問してみよう