- ベストアンサー
EXCELのIF関数の入れ子について
すみませんよろしくお願いします。 EXCELでセル(A1)~(L1)までに不特定の文字列が入力されており、(M1)に「もし(L1)が入力されていたら(L1)の値を表示、もし(L1)がブランクなら(K1)の値を表示、もし(K1)がブランクなら(J1)の値を表示、もし(J1)がブランクなら(I1)の値を表示・・・・」といった具合で関数を作成したいのです。また、(A1)~(L1)のセルで穴あき状態で入力されていた場合は最も(L1)寄りのセルを表示させたいです。 EXCEL2003のIF関数だと、 =IF(L2="",IF(K2="",IF(J2="",IF(I2="",IF(H2="",IF(G2="",IF(F2="",IF(E2="","",E2),F2),G2),H2),I2),J2),K2),L2) で最後の(A1)までの入れ子を作ることができせん。 EXCEL2007を使用すると、 =IF(L2="",IF(K2="",IF(J2="",IF(I2="",IF(H2="",IF(G2="",IF(F2="",IF(E2="",IF(D2="",IF(C2="",IF(B2="",IF(A2="","",A2),B2),C2),D2),E2),F2),G2),H2),I2),J2),K2),L2) と作成できます。 EXCEL2003で作成するいい方法はありますでしょうか? ご指南の程よろしくお願いします。
- みんなの回答 (8)
- 専門家の回答
質問者が選んだベストアンサー
EXCEL2007以前は関数の入れ子は最大7つまでという制限があるためです。 使用するEXCELのバージョンにばらつきがある場合は旧バージョンでも対応できる数式にするしかないですね。 A2:L2で最初にデータのある値を表示なら =IF(COUNTA(A2:L2),INDEX(A2:L2,1,MATCH("!",A2:L2,-1)),"") ちなみに最初だと =IF(COUNTA(A2:L2),INDEX(A2:L2,1,SUMPRODUCT(MIN(13^(A2:L2="")*COLUMN(A2:L2)))),"")
その他の回答 (7)
- ham_kamo
- ベストアンサー率55% (659/1197)
一番右側ですよね? imogasiさんの式を一部お借りして、 =INDEX($A$1:$L$1,,MAX(IF(A1:L1<>"",COLUMN(A1:L1)))) で Ctrl+Shift+Enter でできないでしょうか。
お礼
素晴らしい回答ありがとうございます。 失礼ながらさらに質問させていただきたいのですが、 セル(A1)~(AZ)の範囲における(AZ),(AV),(AR),(AN),(AJ),(AF),(AB),(X),(T),(P),(L),(H),(D)の各セルに文字列が入っている(または入っていない)場合で右から入力されている文字列を見に行く数式はどのようになるのでしょうか?(できれば数値バージョンも)よろしくお願いします
補足
素晴らしい回答ありがとうございます。 失礼ながらさらに質問させていただきたいのですが、 セル(A1)~(AZ)の範囲における(AZ),(AV),(AR),(AN),(AJ),(AF),(AB),(X),(T),(P),(L),(H),(D)の各セルに文字列が入っている(または入っていない)場合で右から入力されている文字列を見に行く数式はどのようになるのでしょうか?(できれば数値バージョンも)よろしくお願いします
- imogasi
- ベストアンサー率27% (4737/17069)
IFの入れ子が3つ以上越えたらそのやり方を再考すること。 一番左列のデータは =INDEX($A$1:$K$1,1,MIN(IF(A1:K1<>"",COLUMN(A1:K1)))) SHIFT+CTRL+ENTERを押す。3つのキーを同時押しする。配列数式。 A-K列でもっとも左列のデータを採る。 こういうのを利用できないですか。
お礼
素晴らしい回答ありがとうございます。 失礼ながらさらに質問させていただきたいのですが、 セル(A1)~(AZ)の範囲における(AZ),(AV),(AR),(AN),(AJ),(AF),(AB),(X),(T),(P),(L),(H),(D)の各セルに文字列が入っている(または入っていない)場合で右から入力されている文字列を見に行く数式はどのようになるのでしょうか?(できれば数値バージョンも)よろしくお願いします
- shikisaito
- ベストアンサー率52% (257/491)
> (A1)~(L1)までが文字列ではなく数値の場合はどうなるのでしょうか? =IF(ISERROR(MATCH(MAX(A1:L1)+1,A1:L1,1)),"",INDEX(A1:L1,MATCH(MAX(A1:L1)+1,A1:L1,1)))
お礼
素晴らしい回答ありがとうございます。 失礼ながらさらに質問させていただきたいのですが、 セル(A1)~(AZ)の範囲における(AZ),(AV),(AR),(AN),(AJ),(AF),(AB),(X),(T),(P),(L),(H),(D)の各セルに文字列が入っている(または入っていない)場合で右から入力されている文字列を見に行く数式はどのようになるのでしょうか?(できれば数値バージョンも)よろしくお願いします
補足
素晴らしい回答ありがとうございます。 失礼ながらさらに質問させていただきたいのですが、 セル(A1)~(AZ)の範囲における(AZ),(AV),(AR),(AN),(AJ),(AF),(AB),(X),(T),(P),(L),(H),(D)の各セルに文字列が入っている(または入っていない)場合で右から入力されている文字列を見に行く数式はどのようになるのでしょうか?(できれば数値バージョンも)よろしくお願いします
- p-applepie
- ベストアンサー率53% (156/290)
No1です。失礼しました N2に入れる関数は =IF(M2="",IF(E2="",IF(D2="",IF(C2="",IF(B2="",IF(A2="","",A2),B2),C2),D2),E2),F2)ですね。
お礼
回答ありがとうございます。 ですがうまくいきませんでした・・・
- shikisaito
- ベストアンサー率52% (257/491)
IF関数を使わなくていいなら、 =IF(ISERROR(MATCH("",A1:L1,-1)),"",INDEX(A1:L1,MATCH("",A1:L1,-1)))
お礼
ありがとうございますm(__)m できました。また、(A1)~(L1)までが文字列ではなく数値の場合はどうなるのでしょうか?よろしくお願いします。
- p-applepie
- ベストアンサー率53% (156/290)
No1です。失礼しました N2に入れる関数は =IF(M2=0,D2,IF(D2="",C2,IF(C2="",B2,IF(B2="",A2)))) ですね。
- p-applepie
- ベストアンサー率53% (156/290)
残念ながらIF関数の入れ子に制限があります。 http://oooug.jp/compati/unixuser/0406.html ↑2の関数のネストレベルの違いは?をご覧ください http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1310019853 どこかのセルを一つかましてIF関数を使用されてはいかがでしょう。 M列に =IF(L2="",IF(K2="",IF(J2="",IF(I2="",IF(H2="",IF(G2="",IF(F2="",IF(E2="","",E2),F2),G2),H2),I2),J2),K2),L2) N列に =IF(M2="",A2,"") とか・・。
お礼
素晴らしい回答ありがとうございます。 失礼ながらさらに質問させていただきたいのですが、 セル(A1)~(AZ)の範囲における(AZ),(AV),(AR),(AN),(AJ),(AF),(AB),(X),(T),(P),(L),(H),(D)の各セルに文字列が入っている(または入っていない)場合で右から入力されている文字列を見に行く数式はどのようになるのでしょうか?(できれば数値バージョンも)よろしくお願いします
補足
素晴らしい回答ありがとうございます。 失礼ながらさらに質問させていただきたいのですが、 セル(A1)~(AZ)の範囲における(AZ),(AV),(AR),(AN),(AJ),(AF),(AB),(X),(T),(P),(L),(H),(D)の各セルに文字列が入っている(または入っていない)場合で右から入力されている文字列を見に行く数式はどのようになるのでしょうか?(できれば数値バージョンも)よろしくお願いします