• ベストアンサー

エクセルのネスト回数について(IF関数)

こんにちは。昨日も同じような質問をしたのですが、うまくいかないので再度詳細を書いて質問させていただきます。 まず、A1にはドロップダウンリスト(以後DL)でAとBが選べるようにしています。A1の値に応じてBはそれぞれに対応したDLがでるようになっています。仮にAに対応するリストをa,b,c、Bはα,β,γ、とします。ここまではできているのですが、次にC列、D列、E列も同じくB列の値に対応したDL(C,D,Eは別の内容のリスト、例えばB列がaならC列はa1,a2,a3、D列はb1,b2,b3、bならC列はd1,d2,d3、D列はe1,e2,e3)が表示されるようにしたいのですが、もう一度この例を参考にご教授ください。ただし、実際にはB列の項目が13あります。ここが引っかかっています。よろしくお願いします。

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

  • ベストアンサー
  • vista2446
  • ベストアンサー率46% (131/279)
回答No.1

入力規則の元の値に、IF関数を使われているんですね。IF関数はネストに制限があったんじゃないでしょうか? IF関数は忘れて、INDIRECT関数を使いましょう。過去ログですが、チラッとお読みになってみてください。参考になるかも。。。 http://questionbox.msn.co.jp/qa2992410.html

pe-777
質問者

補足

回答ありがとうございます。試してみましたが、この方法だと、Bの値に応じてC,D,Eの3つのセルのリスト内容を変更できないのですが、何か一ひねりいるのでしょうか。

その他の回答 (4)

  • maron--5
  • ベストアンサー率36% (321/877)
回答No.5

◆下のURLが参考になる思います

参考URL:
http://www.kenzo30.com/ex_kisopoint/onepoint_sonota3.htm#Q4
  • vista2446
  • ベストアンサー率46% (131/279)
回答No.4

またまた#1です。 数式を間違えていました。B列で選択するのに「A1」と書いてしまいました。「B1」と読み替えてください。

  • vista2446
  • ベストアンサー率46% (131/279)
回答No.3

#1です。 応用すれば対応できると思います。たとえば、B列で選択される値が「a、b」なら、C列で選択するリストの名前を「c_a」「c_b」として、入力規則の元の値に「=INDIRECT("c_"&A1)」に設定します。D列も同じようにリストの名前を「d_a」「d_b」とし、D列の入力規則を「=INDIRECT("d_"&A1)」と設定します。 複数のリストに同じ名前を付けることができませんので、ご注意ください。検証してませんが、試してみてください。

  • suekun
  • ベストアンサー率25% (369/1454)
回答No.2

IFについての質問なので、その事に関して回答しますね。 選択肢13個に対して、関数のネスト回数は7回が上限です。 つまり単純に個々を比較していては階層が足りません。 ではどうするか? 選択肢13個がABCDEFGHIJKLMだっとすると、これを二つの語群に分けます。 IF(OR(  とする訳です。 IFの最初のネストにORで ABCDEFGを含むかどうか? これで2階層目で選択肢は二分されますよね。 次は、再びIF(OR( でさらに分岐します。 ABCDなのかどうか? これが4階層目です。 5階層目から、Aなのか 6階層目でBなのか 7階層目でC? でなければ D。 図表に置き換えると 階層↓ IF OR ABCDEFGの場合           HIJKLMの場合 IF OR ABCDの場合   EFGの場合     HIJの場合   KLMの場合 IF A? それ以外  E?それ以外   H? それ以外 K?それ以外 IF B? それ以外  F?違えばG。   I? 違えばJ  L違えばM。 IF C? 違えばD。 これで制限内の7階層で13個の判断ができます。 (少しややこしいですよ) ただ、複雑なIF関数を組むより 検索値13個に対応するリスト範囲を表にして、INDIRECT関数で 切り替えた方が無難と思います。     A    B    C    D    E    F   G 1  検索値   A    D1:G1  1    2    3   4 2   A     B    D2:G2  5    6    7   8 入力規則に入れる関数(上記配置だとすると) =INDIRECT(VLOOKUP(A2,C1:D2,2,0))  VLOOKUPでA2の検索値を対応表範囲で探しC1のD1:G1が返されます。 このD1:G1をINDIRECTで囲う事で範囲だと認識させます。

関連するQ&A