エクセルの2000で関数を使ってセルに表示したい内容が#VALUEになる問題が発生

このQ&Aのポイント
  • エクセルの2000で関数を使ってセルに表示したい内容が#VALUEになる問題が発生しています。どのセルの値が空白かを判定して、条件に応じて表示する値を指定する式を作成したのですが、うまく機能しません。
  • セルの値が空白かどうかを判定するために、IF関数を使って条件判定を行っています。論理式の部分で複数のセルを選択することはできず、1つのセルを指定する必要があるため、うまく動作していません。
  • 解決策としては、セルの値が空白かどうかを判定するために、COUNTBLANK関数を使用する方法があります。COUNTBLANK関数はセルの範囲を指定することができるため、複数のセルの値を同時に判定することが可能です。また、ネストしたIF関数の使用による解決も可能です。
回答を見る
  • ベストアンサー

エクセルの2000で下記のような式を作りたいのですが、#VALUEにな

エクセルの2000で下記のような式を作りたいのですが、#VALUEになってしまいます。 D1~I1が空白であれば、J1にI2を表示、 E1~I1が空白であれば、J1にD2を表示、 F1~I1が空白であれば、J1にE2を表示、 G1~I1が空白であれば、J1にF2を表示、 H1~I1が空白であれば、J1にG2を表示、 I1~I1が空白であれば、J1にH2を表示、 D1~I1がどれも空白でない場合も、J1にI2を表示します。 =IF(D1:I1="",I2,IF(E1:I1="",D2,IF(F1:I1="",E2,IF(G1:I1="",F2,IF(1:I1="",G2,IF(I1:I1="",H2,I2)))))) ネスト回数には引っかかっていないと思うのですが、IF関数の論理式は複数のセルを選択出来ないんですかね? D~H2のセルには=SUM(D15:I15)/SUM(D1:I1)といった数式が入っており、パーセンテージで小数点以下第二位まで表示しています。 うまく表示できる方法をどなたか教えていただけないでしょうか? 逆に D1だけが空白でなければ、D2を表示、 D1~E1だけが空白でなければ、J1にE2を表示、 D1~F1だけが空白でなければ、J1にF2を表示、 D1~G1だけが空白でなければ、J1にG2を表示、 D1~H1だけが空白でなければ、J1にH2を表示、 D1~I1だけが空白でなければ、J1にI2を表示、 D1~I1の全てが空白の場合は、J1にI2を表示、 でもかまいません。 どうかよろしくお願いします。

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

  • ベストアンサー
  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.4

簡単には次のようにすればよいでしょう。 D1セルからI1セルには数値が入力されるのでしたらJ1セルには次の式を入力します。 =IF(COUNTBLANK(D1:I1)=6,I2,INDEX(D2:I2,MATCH(10^10,D1:I1))) D1セルからI1セルに文字列が入力されるのでしたらJ1セルには次の式を入力します。 =IF(COUNTBLANK(D1:I1)=6,I2,INDEX(D2:I2,MATCH("ー",D1:I1))) MATCH関数の引数でーはひらがな入力モードで入力します。半角モードではありません。

somesyun
質問者

お礼

ご回答ありがとうございました。 できました! 本当にありがとうございます。

その他の回答 (3)

  • mt2008
  • ベストアンサー率52% (885/1701)
回答No.3

要するに、全部空白のときはI2、それ以外は何か入っている一番右のセルの下の行を表示で良いんですよね? =OFFSET(A1,1,SUMPRODUCT(MAX((D1:I1<>"")*COLUMN(D1:I1)))+9*(COUNTA(D1:I1)=0)-1)

somesyun
質問者

お礼

度々すみません。 他のやり方でうまくできそうです。 本当にありがとうございました。

somesyun
質問者

補足

ご回答ありがとうございます。 OFFSET、いろいろ調べてみたのですがよく分からなかったので教えてください。 教えていただいた数式で、A1というのはどこを参照していることになるのでしょうか? 何回もすみませんがよろしくお願いします。

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.2

珍しい問題だな。 IF文のネストは常々泥臭いと思っているので ユーザー定義関数を考えた。 標準モジュールに Function aa() Application.Volatile True 'MsgBox Application.WorksheetFunction.CountBlank(Range("D1:I1")) If Application.WorksheetFunction.CountBlank(Range("D1:I1")) = 6 Then aa = Range("j2") Else c = Range("j1").End(xlToLeft).Column aa = Range("A1").Offset(1, c - 1) End If End Function をコピペ。 (注)Range("j1").End(xlToLeft).Column はENDキーの次に←(左向き矢印キー)を押す操作に当たるコード(マクロの記録でも取れる) ーー 例データ C1:J2に -は、この画面で、左に詰められないように空白の代わりに入れたもの。実際は空白セルです - - - - - - - a7 - a1 a2 a3 a4 a5 a6 a7 ーーー J1セルに=aa()と入れる。 D1からI1までにデータを入れて、テストしてみてください。左から入れていくと判りやすいだろう。 ーー これをエクセル関数でやろうとするとEnd(xlToLeft)に当たる関数がなくて苦労するだろう。 右から最初の非空白行の列を捉える、なども関数では難しい。右から迫るのはもっと難しい。

somesyun
質問者

お礼

ご回答ありがとうございました。 お礼が遅くなりまして申し訳ございません。 現在の私の頭では理解できそうもないので、今後勉強していくことにします。 本当にありがとうございました。

  • mshr1962
  • ベストアンサー率39% (7418/18948)
回答No.1

D1~I1が空白であれば、J1にI2を表示、 E1~I1が空白であれば、J1にD2を表示、 F1~I1が空白であれば、J1にE2を表示、 G1~I1が空白であれば、J1にF2を表示、 H1~I1が空白であれば、J1にG2を表示、 I1~I1が空白であれば、J1にH2を表示、 D1~I1がどれも空白でない場合も、J1にI2を表示します。 =IF(COUNTBLANK(D1:I1)=6,I2,IF(COUNTBLANK(E1:I1)=5,D2,IF(COUNTBLANK(F1:I1)=4,E2,IF(COUNTBLANK(G1:I1)=3,F2,IF(COUNTBLANK(H1:I1)=2,G2,IF(COUNTBLANK(I1)=1,H2,I2))))))

somesyun
質問者

お礼

ご回答ありがとうございました。 お礼が遅くなりまして申し訳ございません。 ご丁寧な回答、本当に感謝いたします。

関連するQ&A

  • エクセル 時間の合計数が適正に表示されません

    添付のようなタイムシートを作成しましたが、「合計の時間数」が適正に表示されません。 D12、E12には正しくない合計時間数が表示され、 F12、G12に至っては、表示すらされません(TT) 間違っているのではなく、適正な表示になってくれていないだけだろうなとは理解できるのですが なぜこんな表示になってしまうのか、まったくわかりません。 どなたかご教示いただけないでしょうか。 よろしくお願いいたしますm(_ _)m 各列の関数は以下のとおりです。 D列=C-B-J E列=MIN("8:00",D) F列=D-K G列=C-I 合計のセルは次のように設定しています。 D12=SUM(D5:D11) E12=SUM(E5:E11) F12=SUM(F5:F11) G12=SUM(G5:G11) 各セルの表示形式は、 [h]:mm;; です。 よろしくお願いいたしますm(_ _)m

  • Excelの入力式について

    Excelの入力式について教えてください。 たとえば、A1セル~F1セルに数値が入っていて、G1セルA1+B1の値、H列にC1+D1の値 I列にE1+F1の値としたい場合、 G1セルに数式を入れてH列にコピーするとB1+C1になってしまいます。 上手くやる方法はないのでしょうか。 1列ずつわざわざ空白列を作るのは嫌ですし、たくさんあったら数式を打ち込むのも大変です。。。

  • 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で作成するいい方法はありますでしょうか? ご指南の程よろしくお願いします。

  • IF関数 VALUE エラーが出ます

    教えてください どうしても上手くいきません。 式が入ってるのが 仕入れ率G11  =IF(E9="","",+F9/E9) 販売率H11 =IF(F11="","",+G11+5%) 販売額I11 =IF(E11="","",ROUNDUP(E11*H11,0)) 今回エラーになる 累計残高K11 =IF(J12="",K11+I12-J12,K11-J12) なんでエラーになるのでしょうか?

  • エクセルの演算式で困っています。

    エクセルの演算式で困っています。 セルC1,D1,E1,F1、G1の5個のセルに人数をそれぞれ入力します、そして、5個のセルの総計をH1のセルに入力します(G1の数値は、必然的にH1-(C1+D1+E1+F1) になると思います。 A3、A4,A5 と3個のセルに金額を入力します。 で、C3のセルに、(A3×C1÷H1)+(A3×1×5) の演算結果が出るようにしたいのです。つまり、C3のセルにこの演算結果が表示されるような演算を仕込みたいのです。 以下、同様に、C4のセルに、、(A4×C1÷H1)+(A4×1×5)の演算結果を表示したいのです。 また、D3のセルには、(A3×D1÷H1)+(A3×1×5) の演算結果が出るようにしたいのです。 以下、同様に、E3のセルには、、(A3×E1÷H1)+(A3×1×5) の演算結果が出るようにしたいのです。 こうなると、最後のG3のセルには、H1-(C1+D1+E1+F1) を演算式の一部に書かないといけなくなります。 で、私には手におえなくなったのです。 すいません、もし、これをご理解頂けたら、アドバイスを御願いできないでしょうか?

  • エクセル・時間の合計が合わない

    実労働時間の1ヶ月の合計をだすのに、SUMを使ったのですが、 合計がすごく小さい数字になります。 表示は※※:※※で表示しています。 表の内容は下記の通りです。 4行目に題名 ・B出勤時刻・C休憩開始・D休憩終了・E退社時刻 F4・I4・L4・N4・Q4=0:00 G4・J4・M4・O4・R4=17:00 F  =IF($E5-F$4>0,$E5-F$4,0)-IF($B5-F$4>0,$B5-F$4,0) G  =IF($E5-G$4>0,$E5-G$4,0)-IF($B5-G$4>0,$B5-G$4,0) I  =F5-SUM(J5:$K5) L  =IF($D5-L$4>0,$D5-L$4,0)-IF($C5-L$4>0,$C5-L$4,0) M  =IF($D5-M$4>0,$D5-M$4,0)-IF($C5-M$4>0,$C5-M$4,0) N  =L5-SUM(O5:$P5) O  =M5-SUM(P5:$P5) Q  =I5-N5  (実労働時間17時までの1日の計) R  =J5-O5  (実労働時間17時からの1日の計) Qに=SUM(Q5:Q14) Rに=SUM(R5:R14) を入力しましたが、まったく違う時間数になります。 どうすれば正しい計算式がでるのでしょうか? お教え願いたくお願い申し上げます。

  • エクセル2007で%の平均値を求めたいのですが、うまくできません。

    エクセル2007で%の平均値を求めたいのですが、うまくできません。 AVERAGEやIFをいろいろ組み合わせてみたのですが、どうしても分からないので教えてください。   A   B    C    D    E    F    G   H 1 目標  6.44%  4.50%  3.77%  5.15%  2.66%  2.79%  式を入れたいセル 2 実績  5.07%  6.00%  4.85%                 A2~G2の平均値 A1~G1は、=(F3/G6)みたいな数式が入っていて、%で表示されています。 B2~G2は、最初は空欄で毎月B、C、D、E、Fと一つずつ%が入っていきます。 上記で、H1のセルに、下記の様な結果を表示できる式を入れたいのですが、何かいい方法はないでしょうか? ・B2~G2が空白の時はB1~G1の平均値 ・B2にだけ数字が入っていてC2~G2が空白の時はB1の数字 ・B2~C2に数字が入っていてD2~G2が空白の時はB1~C1の平均値 ・B2~D2に数字が入っていてE2~G2が空白の時はB1~D1の平均値 ・B2~E2に数字が入っていてF2~G2が空白の時はB1~E1の平均値 ・B2~F2に数字が入っていてG2だけが空白の時はB1~F1の平均値 ・B2~G2全てに数字が入っている時はB1~G1の平均値 どうかよろしくお願いします。

  • エクセル2007で%の平均値を求めたいのですが、うまくできません。

    エクセル2007で%の平均値を求めたいのですが、うまくできません。 先日下記の様な質問をさせて頂いたのですが、もう少し質問したいことがあったのに間違えて解決済にしてしまいました。 どなたか分かる方がいらっしゃいましたら教えてください。    A    B    C    D    E    F    G     H 1 目標  6.44%  4.50%  3.77%  5.15%  2.66%  2.79%  式を入れたいセル 2 実績  5.07%  6.00%  4.85%                 A2~G2の平均値 A1~G1は、=(F3/G6)みたいな数式が入っていて、%で表示されています。 B2~G2は、最初は空欄で毎月B、C、D、E、Fと一つずつ%が入っていきます。 上記で、H1のセルに、下記の様な結果を表示できる式を入れたいのですが、何かいい方法はないでしょうか? ・B2~G2が空白の時はB1~G1の平均値 ・B2にだけ数字が入っていてC2~G2が空白の時はB1の数字 ・B2~C2に数字が入っていてD2~G2が空白の時はB1~C1の平均値 ・B2~D2に数字が入っていてE2~G2が空白の時はB1~D1の平均値 ・B2~E2に数字が入っていてF2~G2が空白の時はB1~E1の平均値 ・B2~F2に数字が入っていてG2だけが空白の時はB1~F1の平均値 ・B2~G2全てに数字が入っている時はB1~G1の平均値 という質問に対して、 [H1]=AVERAGE(B1:INDEX(B1:G1,COUNT(B2:G2))) という式を教えて頂いたところ、うまくいきました。 半期分はこれでOKだったのですが、1年分だとHに半期の平均のセルが入るため、うまく表示できません。 ・B~Gが前期、Hが前期の平均 ・I~Nが後期、Oが後期の平均 さらに、Pに全期の平均を入れたい場合はどのようにしたらよいのでしょうか? [P1]=AVERAGE(B1:INDEX(B1:N1,COUNT(B2:G2,I2:N2))) にすると、Hのセルも入ってしまうため、後期に数字が入ると平均値の表示が1つずつずれてしまいます。 何回も申し訳ないのですが、どうぞよろしくお願いいたします。

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

    条件文で作成した文字列内に改行を入れる方法を教えてください。 下記のようなエクセル(以後、数百行あります)があり、○がついているところの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,"") と入力してみましたがうまくいかず、これではうまくいったとしても 改行なしで あえきけこ と出てしまう気がします・・・。 一晩悩みましたがどうしてもうまくいかないのでどなたか教えてください。 よろしくお願いいたします。

  • EXCLでVALUEを出さない方法は?

    エクセルで例えば=(AA5*56000+AC5*76000+AE5*136000)*0.6+(E5*2000)+(F5*3000)+(G5*1000)+(H5*1000)-(AG5*1000)+(AH5*1400)+(AI5*2400) とこんな感じで式を入れてるんですが、セルに0を入れると大丈夫なんですが空白にするとVALUEと表示します。空白でもVALUEと表示させない方法ありますでしょうか?

専門家に質問してみよう