- ベストアンサー
エクセルの2000で関数を使ってセルに表示したい内容が#VALUEになる問題が発生
- エクセルの2000で関数を使ってセルに表示したい内容が#VALUEになる問題が発生しています。どのセルの値が空白かを判定して、条件に応じて表示する値を指定する式を作成したのですが、うまく機能しません。
- セルの値が空白かどうかを判定するために、IF関数を使って条件判定を行っています。論理式の部分で複数のセルを選択することはできず、1つのセルを指定する必要があるため、うまく動作していません。
- 解決策としては、セルの値が空白かどうかを判定するために、COUNTBLANK関数を使用する方法があります。COUNTBLANK関数はセルの範囲を指定することができるため、複数のセルの値を同時に判定することが可能です。また、ネストしたIF関数の使用による解決も可能です。
- みんなの回答 (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関数の引数でーはひらがな入力モードで入力します。半角モードではありません。
その他の回答 (3)
- mt2008
- ベストアンサー率52% (885/1701)
要するに、全部空白のときはI2、それ以外は何か入っている一番右のセルの下の行を表示で良いんですよね? =OFFSET(A1,1,SUMPRODUCT(MAX((D1:I1<>"")*COLUMN(D1:I1)))+9*(COUNTA(D1:I1)=0)-1)
お礼
度々すみません。 他のやり方でうまくできそうです。 本当にありがとうございました。
補足
ご回答ありがとうございます。 OFFSET、いろいろ調べてみたのですがよく分からなかったので教えてください。 教えていただいた数式で、A1というのはどこを参照していることになるのでしょうか? 何回もすみませんがよろしくお願いします。
- imogasi
- ベストアンサー率27% (4737/17069)
珍しい問題だな。 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)に当たる関数がなくて苦労するだろう。 右から最初の非空白行の列を捉える、なども関数では難しい。右から迫るのはもっと難しい。
お礼
ご回答ありがとうございました。 お礼が遅くなりまして申し訳ございません。 現在の私の頭では理解できそうもないので、今後勉強していくことにします。 本当にありがとうございました。
- mshr1962
- ベストアンサー率39% (7417/18945)
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))))))
お礼
ご回答ありがとうございました。 お礼が遅くなりまして申し訳ございません。 ご丁寧な回答、本当に感謝いたします。
お礼
ご回答ありがとうございました。 できました! 本当にありがとうございます。