• ベストアンサー

入力した日付が正しいかどうかを判断する関数

いつもお世話になっております。 環境  OS:VISTA  Excel:2007 A1セルに 日付データ(例えば、2012/2/29)を入力 した際に、その日付データが有効なものかどうかを 判断する関数はあるでしょうか? ネットで検索して、「IsDate」という関数を紹介している サイトがあったのですが、B1セルに =IsDate(A1)と入力したのですが、「#NAME?」とエラー 表示されました。 IsDate関数は、VBAでないと有効ではないのでしょうか? もし、関数で標題の処理ができる関数があれば、教えて いただきたいのですが。 よろしくお願いいたします。

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

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.1

A1に「日付」か,「日付に見える間違った日付(2012/2/31とか)」が記入される,というお話なら =ISNUMBER(A1) で検査できます。 期間を区切ってその間の日付を有効とした方が良いのでしたら, B1とC1に開始日と終わりの日を手で正しく記入し, =MEDIAN(A1,B1,C1)=A1 などのように検査してみることも考えられます。 B1とC1をわざわざセルに用意せず,式中に直接用意して計算させるような手も考えられますね。 B1とC1を「遠い昔」と「遙かな未来の日付」で計算してみるようなことも,やれば出来ます。 #補足 IsDate関数はマクロで使える関数なので,ワークシートのセルに記入して使うことは出来ません。 #補足 ご相談では「間違った記入」としていったいどんな記述内容まで想定しているのかはっきりしていませんが,通常エクセルのワークシートではA1セルに事前に「日付」の書式が設定されていますので,例えば間違って「1500」とかの数字を記入しても,勝手に日付になって表示されます。 こういう場合,日付違いではありますが「日付になっている」のは確かなので,今どこまで想定しているのですか?というお話になります。

noname#150782
質問者

お礼

早々にご回答いただき、ありがとうございました。 =ISNUMBER(A1)で、確認できました。 補足説明までしていただき、ありがとうございました。 次回からは、前提条件等もキチンと書いて投稿させて いただきます。

その他の回答 (1)

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

入力したデータが正しいかどうかを判断させるということでしたら関数というよりも「データの入力規則」によって正しい日付が入力されない場合にはそれに警告を出すようにするか、入力出来ないようにすることがベターと考えますね。 例えばB2セルから下方に日付が入力されるとしてその日付が本日の日付より1年前から本日の日付までの日付の入力をOKとしそれ以外の入力をできないようにするためにはB2セルから下方のセルを範囲として選択したのちに「データ」タブの「データの入力規則」をクリックし、「データの入力規則」を選択します。 表示の画面で入力値の種類では「ユーザー設定」を選択し、数式の窓には次の式を入力してOKします。 =AND(B2>=DATE(YEAR(TODAY())-1,MONTH(TODAY()),DAY(TODAY())),B2<=TODAY()) なお、関数でC2セルに次の式を入力して下方にオートフィルドラッグすることで、その日付が本日の日付より1年前から本日の日付までの日付の入力であるかどうかの結果を表示させることもできます。 =IF(AND(B2>=DATE(YEAR(TODAY())-1,MONTH(TODAY()),DAY(TODAY())),B2<=TODAY()),"正しい日付","不正なデータ")

noname#150782
質問者

お礼

データの入力規則を使うという方法もあるんですね。 視野が広がりました。 ありがとうございます。

関連するQ&A

専門家に質問してみよう