• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Excelで4つの条件で計算式を変える)

Excelで4つの条件で計算式を変える方法とは?

このQ&Aのポイント
  • Excelで4つの条件で計算式を変える方法について試行錯誤しています。
  • A1のセルに「あいう」か「いろは」、B1のセルに「A」か「B」の値が入るとし、組み合わせはあいう・A、あいう・B、いろは・A、いろは・Bの4通りになります。
  • あいう・Aの場合は(C1-D1)*10、あいう・Bの場合は(D1-C1)*10、いろは・Aの場合は(C1-D1)*500、いろは・Bの場合は(D1-C1)*500の計算式を当てはめてE1セルに表示させたいですが、IF関数やAND関数を使用してもうまく表示されません。どのように関数を書けば正しく表示されるのでしょうか?

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

  • ベストアンサー
  • kkkkkm
  • ベストアンサー率66% (1719/2589)
回答No.1

=IF(A4="あいう",IF(B4="A",(C4-D4)*10,(D4-C4)*10),IF(A4="いろは",IF(B4="A",(C4-D4)*500,(D4-C4)*500),"")) でいかがですか。 =IF(A1="あいう",IF(B1="A",(C1-D1)*10,(D1-C1)*10)) 最初のIFでなければ(偽の場合)のところが抜けてましたので、A1が「あいう」でなければFALSEと表示されてたと思います。「あいう」以外の選択肢がない場合、空白にすることが多いです。 =IF(A1="あいう",IF(B1="A",(C1-D1)*10,(D1-C1)*10),"") ので""のところにIFのいろはを入れました

ojimaty2003
質問者

お礼

早速の回答ありがとうございます。 やってみました! ちゃんと表示されました! ありがとうございます。 書いてもらって見れば、なるほど~って思うんですが、いざ自分でやるとドツボにはまります(笑)

その他の回答 (4)

  • SI299792
  • ベストアンサー率47% (772/1616)
回答No.5

まず、整理をします。 あいうの時 10 いろはの時 500 A の時 C1-D1 B の時 D1-C1 もし、あいう、いろは、A B 以外はいらないのであれば =IF(B1="A",C1-D1,D1-C1)*IF(A1="あいう",10,500) でいいです。これが一番解りやすいと思います。 それ以外の場合空白にしたいのであれば =IF(AND(OR(A1="あいう",A1="いろは"),OR(B1="A",B1="B")),IF(B1="A",C1-D1,D1-C1)*IF(A1="あいう",10,500),"") それ以外の場合0にして、セルの書式設定で空白にする方法もあります =IF(B1="A",C1-D1,IF(B1="B",D1-C1))*IF(A1="あいう",10,IF(A1="いろは",500)) 書いてある通りを数式にしてみましたが、長くなりました。 =IF(AND(A1="あいう",B1="A"),(C1-D1)*10,IF(AND(A1="あいう",B1="B"),(D1-C1)*10,IF(AND(A1="いろは",B1="A"),(C1-D1)*500,IF(AND(A1="いろは",B1="B"),(D1-C1)*500,"")))) =ifsを使っても長くなるので、やめた方がいいです。

ojimaty2003
質問者

お礼

回答ありがとうございます。 返事が遅れてしまって申し訳ございませんでした。

  • kon555
  • ベストアンサー率51% (1842/3559)
回答No.4

 既にif文の完成系は回答がついていますので、複数のif文を組み合わせた書き方についての考えかたなどを。  こうした書き方はネスト(入れ子)と言われます。基本的にはif文で「真なら〇〇、偽なら次のif」で書けばよく、まさに貴方が書かれている考え方がズバリ正解です。 http://www.eurus.dti.ne.jp/~yoneyama/Excel/waza/if01.html  ただこの入れ子構造、慣れればスルスル書けるのですが、慣れるまでは大変だと思います。if関数のウィザードもネストには対応していないので。  なので実務的なオススメとしては、慣れるまでは以下のような手順でやる事です。 1.別々のセルでif関数を1つずつ作成。2.作成したif文について、編集モードで計算式をコピー。 3.入れ子にしたい対象のif文について編集ウィザード立ち上げ。真・偽の結果に、コピーしたif文をペーストして上書き。 4.あとは延々繰り返し  この手順でいくと、比較的スムーズに入れ子でのifが作成できます。  今回書かれた条件で言うと、 「=IF(B1="A",(C1-D1)*10,"")」(あいう・『A』の時) 「=IF(B1="B",(D1-C1)*10,"")」(あいう・『B』の時) 「=IF(B1="A",(C1-D1)*500,"")」(いろは・『A』の時) 「=IF(B1="B",(D1-C1)*500,"")」(いろは・『B』の時)  の4つとをまず作ります。この時にあいう・いろは、は構文の中では気にしません。  次にこの4つのペアを合体させます。とは言え作業としては、空白にしておいた偽の場合の部分にペーストするだけです。 「=IF(B1="A",(C1-D1)*10,IF(B1="B",(D1-C1)*10,""))」(あいう・『A』『B』) 「=IF(B1="A",(C1-D1)*500,IF(B1="B",(D1-C1)*500,""))」(いろは・『A』『B』)  これで1つ分の入れ子構造ができました。あとはこれを繰り返していけば、延々と入れ子を重ねていく事が出来ます。  ただ入れ子になった条件式は中々理解しにくいですので、あんまり複雑なものを作るのはおすすめしません。ほどほどでやめておきましょう。

ojimaty2003
質問者

お礼

返事が遅くなってしまい申し訳ございません。 回答ありがとうございます。   考え方までご教示いただきありがとうございます。 一気に作ろうとするとこんがらがるので、細かく考えて後でつなげてく方式がわかりやすいですね!

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.3

・小生はIF関数のネストが嫌い、なのと ・VBAに興味があるので 下記を考えた。 Case分のネストです。 条件の記述が、表のように記述できて、その面ではわかりやすいと思った。 でもVBAに馴染みのない人には、意味ないかな? ーーー 例データ A1:D7 E列は(私製)関数を入れた結果です。 E列は関数の結果。 A列  B列  C列  D列   E列(結果) 式≌のタイプ。私の仮に作った計算式 結果は、「私の作った計算式」による結果です。実際はVBAのコードの中を、質問者の式に、改めてください。 E1の式は、=aaa(A1,B1,C1,D1)で、素の式を下方向に複写してください。aaaは意味なし、関数名であって、手抜きした。 あいう A 100 1000 -900   c-d あいう B 200 2000 2200   c+d いろは A 300 3000 -2698   (c-d)+2 いろは B 400 4000 4402   (c+d)+2 あいう B 500 5000 5500 いろは B 600 6000 6602 いろは A 700 7000 -6298 ーーー 標準モジュールに Function aaa(a, b, c, d) Select Case a Case "あいう" Select Case b Case "A" aaa = c - d Case "B" aaa = c + d Case Else aaa = Err End Select '--- Case "いろは" Select Case b Case "A" aaa = (c - d) + 2 Case "B" aaa = (c + d) + 2 Case Else aaa = Err End Select '--"あいう" "いろは" 以外 Case Else aaa = Err End Select End Function

ojimaty2003
質問者

お礼

回答ありがとうございます。   VBAですね~ VBAは勉強しようと思っていますが、まだまだ入り口なので今後の課題ですね。 時間のある時にトライしてみます。

  • kkkkkm
  • ベストアンサー率66% (1719/2589)
回答No.2

No1は4行目の式を出してしまいました。行の4は1にしてください。

関連するQ&A