• ベストアンサー
  • すぐに回答を!

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
  • 閲覧数532
  • ありがとう数8

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

  • ベストアンサー
  • 回答No.8
  • mshr1962
  • ベストアンサー率39% (7416/18946)

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)))),"")

共感・感謝の気持ちを伝えよう!

質問者からのお礼

素晴らしい回答ありがとうございます。 失礼ながらさらに質問させていただきたいのですが、 セル(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)の各セルに文字列が入っている(または入っていない)場合で右から入力されている文字列を見に行く数式はどのようになるのでしょうか?(できれば数値バージョンも)よろしくお願いします

関連するQ&A

  • エクセルの条件文で抽出したセルに改行を入れたい

    条件文で作成した文字列内に改行を入れる方法を教えてください。 下記のようなエクセル(以後、数百行あります)があり、○がついているところの1行目にある文字をK2セルに入力したいと思います。   A  B  C  D  E  F  G  H  I  J K  1 あ い う  え  お  か  き  く け  こ   2 ○       ○       ○    ○  ○ 3   ○      ○    ○  ○ K2セルには、○印のついている あ え き け こ と改行して出力されるように関数を組むにはどうしたらいいのでしょうか? =IF(A2=○,A1&"","")&IF(B2=○,B1,"")&IF(C2=○,C1,"")&IF(D2=○, D1,"")&IF(E2=○,E1,"")&IF(F2=○,F1,"")&IF(G2=○,G1,"")&IF(H2=○,H1,"")&IF(I2=○,I1,"")&IF(J2=○,J1,"") と入力してみましたがうまくいかず、これではうまくいったとしても 改行なしで あえきけこ と出てしまう気がします・・・。 一晩悩みましたがどうしてもうまくいかないのでどなたか教えてください。 よろしくお願いいたします。

  • Excelの関数について

    質問についてうまく表現が出来ないのでセル番地等を記します。 I1とJ1を結合して2005/12(文字列で入力) K1とL1を結合して2005/11(同じ) M1とN1を結合して2005/10(同じ)           ・           ・ AE1とAF1........2005/01 まで I2,K2,L2,N2・以降1個とび・・・AE2に個数という項目名 J2,L2,N2,P2・以降1個とび・・・AF2に単価という項目名 I3~AF3までに数値が入ります。 I3~AF3までの範囲の最新の単価を表示させる為の関数はどうしたらよいのでしょうか? 個数と単価は空白のセルも出てきます。 考え方的にはI3~AF3の範囲で0又は空白セル以外の項目のうち一番左側のセルの値を表示させるようにすれば良いのですが、関数がわかりません。 よろしくお願いいたします。

  • 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 列に表示したいのですが、何度やってもできません。      良い知恵をお持ちの方、よろしくおねがいします。

その他の回答 (7)

  • 回答No.7

一番右側ですよね? 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)の各セルに文字列が入っている(または入っていない)場合で右から入力されている文字列を見に行く数式はどのようになるのでしょうか?(できれば数値バージョンも)よろしくお願いします

  • 回答No.6
  • imogasi
  • ベストアンサー率27% (4558/16316)

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)の各セルに文字列が入っている(または入っていない)場合で右から入力されている文字列を見に行く数式はどのようになるのでしょうか?(できれば数値バージョンも)よろしくお願いします

  • 回答No.5

> (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)の各セルに文字列が入っている(または入っていない)場合で右から入力されている文字列を見に行く数式はどのようになるのでしょうか?(できれば数値バージョンも)よろしくお願いします

  • 回答No.4

No1です。失礼しました N2に入れる関数は =IF(M2="",IF(E2="",IF(D2="",IF(C2="",IF(B2="",IF(A2="","",A2),B2),C2),D2),E2),F2)ですね。

共感・感謝の気持ちを伝えよう!

質問者からのお礼

回答ありがとうございます。 ですがうまくいきませんでした・・・

  • 回答No.3

IF関数を使わなくていいなら、 =IF(ISERROR(MATCH("",A1:L1,-1)),"",INDEX(A1:L1,MATCH("",A1:L1,-1)))

共感・感謝の気持ちを伝えよう!

質問者からのお礼

ありがとうございますm(__)m できました。また、(A1)~(L1)までが文字列ではなく数値の場合はどうなるのでしょうか?よろしくお願いします。

  • 回答No.2

No1です。失礼しました N2に入れる関数は =IF(M2=0,D2,IF(D2="",C2,IF(C2="",B2,IF(B2="",A2)))) ですね。

共感・感謝の気持ちを伝えよう!

  • 回答No.1

残念ながら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,"") とか・・。

共感・感謝の気持ちを伝えよう!

関連するQ&A

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

    エクセルのIF関数式を教えてください。 例えば、F2、G2、H2、I2のうち、それぞれに、Xを入力した場合、Xを入れたところだけ拾ってきて、それがF2とH2にXが入っているば場合、E2に、”AA/CC”と拾ってきたところを”/”(スラッシュ)でつなげて表示したいのですが、どうすればいいでしょうか。=IF(F2="X","AA) これだとF2にXが入っているときにE2に”AA”と表示されますが、これが複数の場合、”/”でつなげて表示がしたいです。お願いします。

  • エクセル IF式について、

    先日からこちらで=IFとisnumberの使い方を教えていただき、次のような式を作りました。 =IF(isnumber(C2),B2+C2+F2+G2+J2+K2,"") これで(C2)に数値がある時のみ計算結果を打ち返し、文字その他は空欄で、が出来ました。 次にやりたいことは、(C2)と(G2)と(K2)のいずれかに数値がある時に計算させる式はどのようにすればよろしいでしょうか? 以下の4つを試しましたがNGでした。 =IF(isnumber(C2,G2,K2),B2+C2+F2+G2+J2+K2,"") =IF(isnumber((C2)*(G2)*(K2)),B2+C2+F2+G2+J2+K2,"") =IF(isnumber((C2)OR(G2)OR(K2)),B2+C2+F2+G2+J2+K2,"") =IF(ISNUMBER((C2)*OR(G2)*OR(K2)),B2+C2+F2+G2+J2+K2,"") よろしくお願いします。

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

    =IF(L2="","EDATE(J2,K2)","EDATE(L2,K2)") という数式で L2が空白の場合、J2の日付からK2の月分だけ経過した日付を表示。 空白でない場合、L2の日付からK2の月分だけ経過した日付を表示したいのですが、 セルには直接『EDATE(J2,K2)』という数式が表示されてしまいます。 空白にしたら『EDATE(J2,K2)』、日付を入れたら『EDATE(L2,K2)』になるので一応IF関数は生きてると思うのですが、中で計算をしてくれていません。 解決方法をぜひご教授くださいませんか。

  • IF関数について

    エクセル2007を使っています。 IF(AND(OR(E22="",E22=0),OR(F22="",F22=0)),"",(G21+E22-F22,0))の書式を入力すると #VALUE!となります。 どこが悪いかお教え下さい。宜しくお願いします。

  • エクセルの関数について教えてください。

    エクセルの関数について教えてください。 A2~U100まで、データが入っています。 U2~U100に結果を表示させたいのです。 J2~J100には、〇が入っているセルと入っていないセルがあります。 K2~K100には、〇が入っているセルと入っていないセルがあります。 L2=L100には、〇が入っているセルと入っていないセルがあります。 U2~U100に、結果を表示させたいのです。 J列には、〇が入っているのが条件で K列かL列のどちらかに〇が入っていた場合に U列に◎をつけたいのです。 U列に入れる関数を教えてください。

  • ifを繰り返すと書式設定が反映されない

    Excel2010です。 O2のセルに入る数値を通貨の円マークが入る書式設定をしています。なおかつ、O2には以下の長い関数が入っています。IFが一個だけなら、円マークが出るのですが、2個以上追加すると、円マークが出ません。試しに他のセルに通貨の円マーク付きの書式設定をして=O2の値を取得しても、書式設定が反映されません。 ちなみに、C1からN1までは1月&#65374;12月のタイトルがあり、C2からN1までは各月の金額が入っています。$R$1は今月の月の数字が入っており、$R$1の値が1ならC2の値をO2に表示、$R$1の値が2ならD2の値をO2に表示するようにしています。$R$1には=month(Q1)関数が入っていて、Q1には=today()が入っています。 よろしくお願いします。 =IF($R$1=1,C2,"")&IF($R$1=2,D2,"")&IF($R$1=3,E2,"")&IF($R$1=4,F2,"")&IF($R$1=5,G2,"")&IF($R$1=6,H2,"")&IF($R$1=7,I2,"")&IF($R$1=8,J2,"")&IF($R$1=9,K2,"")&IF($R$1=10,L2,"")&IF($R$1=11,M2,"")&IF($R$1=12,N2,"")

  • EXCELのIF関数の結果の表示

    IF関数で、セルに「=IF(A1>=0.8,"合格",IF(A1>=0.6,"A",IF(A1>=0.3,"B","C")))」と入力してあります。 Windows2000上のExcel2000ではきちんと結果が表示されるのですが、 Windows98上のExcel2000ではきちんと結果が表示されず、セルに「ll」と表示されてしまいます。これをきちんと表示させるには、どうしたらいいでしょうか?

  • Excelの関数『IF』にて・・・

    EXCELにて、関数IFを使って一覧表から 自動入力をしたいと考えています。 例えば、以下のようにしてセル『C1』の数字に 応じて、自動を試みたい時 =IF($C$1>80,"=A1",IF($C$1>70,"=B1","=C1")) =A1,=B1,=C1 の場所を文字列としてしか読み取ってくれません =A1,=B1,=C1では無く=A1,=B1,=C1のセルに入力されてる 数式(他のセルの値)を、表示したいんですが どのようにすれば可能でしょうか? 何度やっても「=A1」と、そのまま文字列として出て来ちゃいます。

  • ExcelのIF関数で困ってます・・・

    ExcelにあるIF関数についてです。 条件(やりたいこと)は、『もし、そのセルに数値が入っていたら、~をしなさい。』と言う命令の関数を作りたいのですが、 『if(A1=』の後がどう入れたらよいのかわからずに困っています。どなたかわかる方がいましたらアドバイスよろしくお願いします。

  • 超基本ですみません。EXCELマクロの記述で改行

    EXCELマクロの記述で改行の仕方がまだ理解できていません。 ブランクとアンダーバーと思っていましたが、エラーになります。 ご指摘をお願いします。 (正常) ' Range("I9:J14,K5,K2,J17,H21,K22,J26,L18,I17,H11,L8,J2,H1,L3,K18,J21,I24,H27:H28,K27,H15,H8,K8,L16,L22").Select (エラー) ' Range("I9:J14,K5,K2,J17,H21,K22,J26,L18,I17,H11,L8, _ ' ,J2,H1,L3,K18,J21,I24,H27:H28,K27,H15,H8,K8,L16,L22").Select