- ベストアンサー
エクセルで範囲外のものを入力したらエラーを出したい(入力規則なしで)
いつも参考にさせていただいています。 エクセルで,シート1のA1:A30に日付のデータがあり シート2のC3に日付を入力するのですが,この日付が シート1のA1:A30の中にない日付だったら,エラーを 出したいのです。エラーは隣のD3に出します。 これを入力規則とVBAは使わずに関数だけでやろうと 思っているのですが,うまくいきません。 もし良かったら知恵をお貸しください。お願いします。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
こんな式でどうでしょうか =IF(ISNA(VLOOKUP(C3,Sheet1!A1:A30,1,0)),"エラー","OK") 関数VLOOKUP()でC3の値でSheet1のA1:A30を検索します。 関数ISNA()でVLOOKUP()の結果がエラー値#NAかどうか検査します。
その他の回答 (4)
- imogasi
- ベストアンサー率27% (4737/17069)
参照する日付けテーブルをSheet1のA1:A5に 2003/4/30 2003/9/24 2003/8/25 2003/7/21 2003/5/2 とします。 Sheet2のC1:C6にテスト値として(質問のケースではC3だけ) 2003/8/25 2003/9/24 2003/9/25 2003/7/21 2003/5/2 2003/10/1 をいれ、Sheet2のD1に(質問ではD3のみに) =IF(ISERROR(MATCH(A1,Sheet1!$A$1:$A$5,0)),"なし","あり")と入れD2:D5に複写します(質問のケースでは複写なし)。$は必ず付けること。 結果はC1:D5に 2003/8/25 あり 2003/9/24 あり 2003/9/25 なし 2003/7/21 あり 2003/5/2 あり 2003/10/1 なし となります。未入力セルを対象としたエラー表示防止は 略。 本質問の「表が日付けである」と言っても、上記例では 37741 37888 37858 37823 37743 という数(日付けシリアル値)の表に過ぎないことを 見据えてください。
お礼
ご回答ありがとうございました! 私も最初はMATCH関数を使って出来ないかな、と 悩んでおりました。こうすればよかったのですね。 お礼が遅れてしまい、すいませんでした。
- Hageoyadi
- ベストアンサー率40% (3145/7860)
#2です。ヴォケはアタシでした。 D3=IF(COUNTIF(Sheet2!A:A,C3)>=1,"","スカ") ですね。
- hanabisi73
- ベストアンサー率20% (7/34)
こんばんわ。 これでどうでしょうか? D3のセルに以下の数式を入れてみてください。 =IF((ISERROR(VLOOKUP(C3,Sheet1!A1:A30,1,FALSE)))=TRUE,"error","") この場合A1:A30までない日付であればD3のセルに『error』とでます。 もし、sheet1のシート名を変更しているようでしたらSheet1の部分を変更してください。
お礼
ご回答、ありがとうございました! いろんな方法があるのですね。 助かりました。 お礼が遅れてしまいすいませんでした。
- Hageoyadi
- ベストアンサー率40% (3145/7860)
D3=IF(COUNTIF(Sheet1!A1:A30,C3)=1,"エラーじゃ、ヴォケ","") ではどうでしょう?
お礼
ご回答、ありがとうございました! きちんとエラーを出すことが出来ました。 大変助かりました。 お礼が遅れてしまいすいませんでした。
お礼
ありがとうございました! エラーを出すことが出来ました。 VLOOKを使うなんて考え付きませんでした。 お礼が遅れてしまってすいません。