• ベストアンサー

下記の式の意味が理解できず関数の式が組めません。

IF(A10="","",IF(J10=1,0,IF(I10=0,LOOKUP(M10,$U$9:$V$10),IF(I10=1,LOOKUP(M10,$X$9:$Y$10),LOOKUP(M10,$AA$9:$AB$10))))) 上記の関数式の意味が分からず自分で式が組めず困っています。どなたかかなりの初心者ですが教えて頂けませんでしょうか。宜しくお願い致します。

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

  • ベストアンサー
回答No.4

ここのサイトは、このような問題にはすぐ解答が付くと思いますが >かなりの初心者 ということなので、細かく回答を書いてみます。 一.まず、IF(条件式,真の場合,偽の場合) 条件式がこの場合は、A10="" となっていますので、セルA10に何もないか?ということで、 ・何もなければ、真の場合に書かれている物が、この式が設定されているセルに入ります。この場合は、""ですので、何も入らない(表示されない)ということになります。 ・もし何かは言っていた場合、次の偽の場合にある、 IF(J10=1,0,IF(I10=0,・・・の、結果が表示されます。 二.IF(J10=1,0,IF( 条件式がこの場合は、J10=1 となっていますので、セルJ10の値が1であるか?ということで、 ・1であれば、真の場合に書かれている物が、この式が設定されているセルに入ります。この場合は、0ですので、値として 0が、入ります。 ・1でなければ、次のif関数の結果が表示されます。 三.IF(I10=0,LOOKUP(M10,$U$9:$V$10),IF(I10=1,LO・・ 条件式がこの場合は、I10=0 となっていますので、セルI10の値が0であるか?ということで、 ・0であれば、真の場合に書かれている物が、この式が設定されているセルに入ります。 この場合は、LOOKUP(M10,$U$9:$V$10)の結果が表示されます。 _○LOOKUP(検査値,配列) _検査値が M10 となっていますので、セルM10の値が、配列(この場合は、$U$9:$V$10 となっていますので、セルU9からV10の範囲)の、前の列(この場合はセルU9か、セルU10)の値と同じかどうかが検査され、もしセルU9と同じであればV9の値が、表示されます。もしセルU10と同じであればV10の値が、表示されます。もし、どちらとも等しくない場合は、セルU9、セルU10の値で、セルM10の値より小さい値があれば、そのセルの隣のV9か、V10の値になります。セルM10の値がセルU9セルU10よりも小さい場合は、#N/Aという、エラー表示になります。 また、$U$9:$V$10と絶対参照になっていますので、この式を別なセルにコピーした場合も、$U$9:$V$10の部分は変わりません。 ・三.のif関数で、0でなければ、次の), IF(I10=1,LOOKUP(M10,$X$9:・・・がというように結果が表示されます。 文章で、書くとわかりにくかったでしょうか?

miyu1107
質問者

お礼

どうもありがとうございました。 助かりました☆

その他の回答 (4)

  • mu2011
  • ベストアンサー率38% (1910/4994)
回答No.5

以下の条件で値を表示するみたいです。(関数説明は、既回答を参考にして下さい) ・A10が空の場合、空を表示 ・A10が空でない場合、J10が1ならば、0を表示 ・J10が1以外の場合、  ・I10が0ならばM10とU9:V10範囲を検索、有ればM10、無ければV10を表示  ・I10が1ならばM10とX9:Y10範囲を検索、有ればM10、無ければY10を表示  ・I10が1,0以外ならばAA:AB10範囲を検索、有ればM10、無ければAB10を表示

miyu1107
質問者

お礼

分かりやすくて助かりました。ありがとうございました☆

  • hirumin
  • ベストアンサー率29% (705/2376)
回答No.3

[IF条件]     [Trueの場合]     [falseの場合] という形に式を書き換えてみましょう。 すると、以下のようになります。 =IF(A10="", …(1)     "", …(2)     IF(J10=1, …(3)         0, …(4)         IF(I10=0, …(5)             LOOKUP(M10,$U$9:$V$10), …(6)             IF(I10=1, …(7)                 LOOKUP(M10,$X$9:$Y$10), …(8)                 LOOKUP(M10,$AA$9:$AB$10) …(9)             )         )     ) ) 【A10=""であるか?】 …(1)     True → ""を出力(空欄ですね)し終了 …(2)     false → J10=1であるか? …(3)         True → 0を出力し終了 …(4)         false → 【I10=0であるか?】 …(5)             True → LOOKUP(M10,$U$9:$V$10)を実行し終了 …(6)             false → 【I10=1であるか?】 …(7)                 True → LOOKUP(M10,$X$9:$Y$10)を実行し終了 …(8)                 false → LOOKUP(M10,$AA$9:$AB$10)を実行し終了 …(9) IF条件を目立つように【 】で囲ってみました。 LOOKUP関数は、(6)で説明しますと 『LOOKUP(M10,$U$9:$V$10)』 「$U$9:$V$10」の範囲から、[M10]の値を検索。同じものがあれば出力し、無ければ範囲に含まれている[M10]以下の最大の値を出力する (詳細はヘルプを参照して下さい) 長い式で判らない場合、このように段をつけて書き直すと判りやすい場合があります。 セルに式を入力中に、[Alt]+[Enter]で改行できますので試してみて下さい。

miyu1107
質問者

お礼

どうもありがとうございました☆

  • kokorone
  • ベストアンサー率38% (417/1093)
回答No.2

1)A10がブランクならば、ブランクを設定 2)A10がブランク以外の場合 2-1)J10が1ならば0を設定   2-2)J10が1以外の場合 2-2-1)I10が0ならば、U9からV10でM10の値と一致する値を設定 2-2-2)I10が0以外の場合        2-2-2-1)I10が1ならば、X9からY10でM10の値と一致する値を設定        2-2-2-2)I10が1以外の場合AA9からAB10でM10の値と一致する値を設定 こんな意味でしょうか。

miyu1107
質問者

お礼

どうもありがとうございました☆

  • acacia7
  • ベストアンサー率26% (381/1447)
回答No.1

IF( _A10=""; _""; _IF( __J10=1; __0; __IF( ___I10=0; ___LOOKUP(M10,$U$9:$V$10); ___IF( ____I10=1; ____LOOKUP(M10,$X$9:$Y$10); ____LOOKUP(M10,$AA$9:$AB$10) ___) __) _) ) IF(式1;式2;式3) 式1の値によって式2か式3の値を返します。 LOOKUP(Cell1,Cell2:Cell3) Cell1の値をCell2からCell3までの範囲から探します。 IF関数の式の区切りに注意してみてください。

miyu1107
質問者

お礼

どうもありがとうございました☆

関連するQ&A