• ベストアンサー

エクセルのネスト回数について(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

  • エクセル ドロップダウンリストについて

    A,B,C,D列にドロップダウンリストを設定し連動できるかお教え下さい。 A列のリストに値を複数設定し、B列のリストの値をA列の値によって変化させるまでは過去の回答にて確認しました。そのB列の値によってC列もドロップダウンリストを設定し、さらにD列も同様に・・というのは 可能なものでしょうか。

  • EXCELのIF関数について

    9セルA1~J1に1~15の数のうちの10個が一つずつ入っており、セルA3~J3にも1~15の数が入っています。またA2~J2には、A~Jまでの英字が入っています      1 2 15 9 7 6 5 4 11 3        A B C D E F G  H  I  J       2 3 5 7 9 10 11 12  13 15   のとき                                          B J G E D    I        C   のようにA3列の値と同じ1列の数字の下の値を            A5 列に表示したいのですが、何度やってもできません。      良い知恵をお持ちの方、よろしくおねがいします。

  • エクセル関数 VLOOKUPで

    エクセル2007です A列に商品名 B列に価格 C列に税込価格(B1*1.05) の表があります。    A   B  C  |いちご|900|945|  |みかん|300|315|   D1にA列の商品名を選択して入力できるように 入力規則でドロップダウンリストがら選択にしました。 (範囲はA列です) E1には商品名を選択すると税込金額が反映されるようにしたいので、 =IF(D1="","",VLOOKUP(D1,A:C,3,1)) と入力しました。        D   E           D   E 正 |いちご|945|  →  誤 |いちご|315|   D1の商品名と同行の3列目の値を返す…とやりたかったのですが、 別の行の値を返します。(C列の値であることは確かなのですが…) なぜでしょうか? また、テーブルを昇順で表示とあるのですが、優先はどの列でしょうか? A列優先でもD列優先でも値が違います。

  • エクセル関数のことで困っています。

    今、簡単な表計算の表を作っていますが、先に進まず困っています。 A1~A200のセルに1~200の番号が昇順で入っています。そしてデータとして,B2,C2,D2,E2 に各々a、b、c、dが入っており,,B3,C3,D3,E3 にa1、b1、c1、d1・・・・・・・・・・・・B200,C200,D200,E200にw,x,y,zのようにB,C,D,E列に適当な数が入っています。 そこで、E列の値で昇順  SMALL(D$1:D$200,A1)  に並べ替え、同時にB,C,D,Eの値も返したいのです。つまりエクセルの並べ替え機能を関数で自動で行いたいのです。 今は、関数の、ROW,SUMPRODUCT,COUNT,INDEX,LARGE,COUNTIF,COLUMN,などを使い関数バーに5行ほどになり、処理にとても時間がかかります。 何とか、簡単で早い計算式はないでしょうか。 よろしくおねがいします。

  • エクセル関数について

    エクセルでセルA1に1、B1に2・・・・・Iに、J1に10が入力された表があります。また、A2に1、B2に3、C2に5、D2に7が入力されています。A2からD2を検索してA3に1、C3に1、E3に1、G3に1を入力します。次に、A2からにD2に2,4,6,8、と入力して同様にB3、D3、F3、H3に1が入るようにしたいのです。 このとき、1,3,5,7の値と2,4,6,8、の値が消去されず。またA2からD2に再度異なる数を入力した場合3列の値に1が加算されるようにしたいのですが、教えてください。

  • エクセル IF関数 初心者です。。

    A    B   C  D Aさん 9:00  1  9:00 Bさん 10:00 2  9:30 Cさん 11:00 3  10:00 Dさん 12:00 4  10:30 Eさん 9:00  1  9:00 A列氏名 B列時間 C列 B列IF関数 9:00からは1、10時からは2、 11からは3・・・ D列はC列のVLOOKUP関数 1=9:00、2=9:30、3=10:00・・・ そこでお聞きしたいのですが・・ A    B   C  D Aさん 9:00  1  9:00 Bさん 10:00 3  10:00 Cさん 11:00 4  10:30 Dさん 12:00 5  11:00 Eさん 9:00  2  9:30 IF関数を用いて IF(B1>=0.375),1,if(B1>=0.416666666666667),2,IF(B1>=0.458333333333333),3・・・ Eさんが2になるような数式がわかりません。 よろしくお願いします。。

  • Excel比較関数について教えてください。2

    下記のようにA列とC列を比較して、 一致した値が存在する場合、B列とC列を比較して、 E列に全て一致した場合は○、一致しない場合は×にしたいのですが教えてください。 また、A列にあってC列にない場合は、×を表示したいです。 A列 B列 C列 D列 E列 1 12345 aaa 12389 aaa A1とA3が一致&B1とD3が一致したので○ 2 12389 bbb 22222 bbb A2とC1が一致したが、B2とD1が一致しないので× 3 33333 bbb 12345 aaa A3の値がC列にないので空欄 教えてください。

  • excel エクセルIF関数の作り方を教えて下さい

       A        B       C       D      E 1  発注納期  修正(1)   修正(2)     修正(3)    遅延日数    2  7/9      7/21     8/4               25 3  6/7       7/28     8/5       7/27     -1  4  6/22     7/28     8/7       8/9      47 <A列:発注納期)に対して、B・C・Dと修正し、<E列:遅延日数>を計算する式を E2=IF(B2="","",DAYS360(A2,MAX(B2:D2))) と入力していましたが、そうすると E3=58 となります。 列B~列Dのうち一番右側を選択して計算して、 E3=-1 とするためには、どのような式を作れば良いのか教えてください。

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

    A列の時刻表示を、ある条件によって、隣のB列に書き直す計算式について質問します。 A1セルの値が10:00又はそれよりも早いとき(9:45や9:20など)は、B1セルに10:00(ぴったり)と入力されるような計算式。 A1の値が10:00よりも遅い場合(10:13や10:37)は10分の位で切り下げて表示(この場合10:10や10:30等)になるような計算式です。 以下の式を作りましたが、うまく作動しません。 どこが悪いでしょうか? =IF(A1<=10:00,[B1=10:00],[B1=ROUNDDOWN(D3,1)]) 特に最後の(D3,1)の1は時刻表示の10分の位の位置のばあい、何になるのかよく わかりません。 どうぞよろしくお願いします。

  • EXCEL IF関数に関する質問

    EXCELです。よろしくお願いします。 A列(A1~A300まで) に0~100までの数字が入っています。 B列に80以上100以下ならA、    60以上79以下ならB、    40以上59以下ならならC、    20以上39以下ならD、    0以上19以下ならEを 入れたいのです。 そして C列にB列がAなら5、    B列がBならば4、 B列がCならば3、 B列がDならば2、    B列がEならば1 を入れたいのです。 B1とC1のどのような関数を入れればよいですか。 教えてください。 よろしくお願いします。  

専門家に質問してみよう