• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:エクセルの2000で下記のような式を作りたいのですが、#VALUEにな)

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

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

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

  • ベストアンサー
  • 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/17069)
回答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% (7417/18945)
回答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