- ベストアンサー
入力した日付が正しいかどうかを判断する関数
いつもお世話になっております。 環境 OS:VISTA Excel:2007 A1セルに 日付データ(例えば、2012/2/29)を入力 した際に、その日付データが有効なものかどうかを 判断する関数はあるでしょうか? ネットで検索して、「IsDate」という関数を紹介している サイトがあったのですが、B1セルに =IsDate(A1)と入力したのですが、「#NAME?」とエラー 表示されました。 IsDate関数は、VBAでないと有効ではないのでしょうか? もし、関数で標題の処理ができる関数があれば、教えて いただきたいのですが。 よろしくお願いいたします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
A1に「日付」か,「日付に見える間違った日付(2012/2/31とか)」が記入される,というお話なら =ISNUMBER(A1) で検査できます。 期間を区切ってその間の日付を有効とした方が良いのでしたら, B1とC1に開始日と終わりの日を手で正しく記入し, =MEDIAN(A1,B1,C1)=A1 などのように検査してみることも考えられます。 B1とC1をわざわざセルに用意せず,式中に直接用意して計算させるような手も考えられますね。 B1とC1を「遠い昔」と「遙かな未来の日付」で計算してみるようなことも,やれば出来ます。 #補足 IsDate関数はマクロで使える関数なので,ワークシートのセルに記入して使うことは出来ません。 #補足 ご相談では「間違った記入」としていったいどんな記述内容まで想定しているのかはっきりしていませんが,通常エクセルのワークシートではA1セルに事前に「日付」の書式が設定されていますので,例えば間違って「1500」とかの数字を記入しても,勝手に日付になって表示されます。 こういう場合,日付違いではありますが「日付になっている」のは確かなので,今どこまで想定しているのですか?というお話になります。
その他の回答 (1)
- KURUMITO
- ベストアンサー率42% (1835/4283)
入力したデータが正しいかどうかを判断させるということでしたら関数というよりも「データの入力規則」によって正しい日付が入力されない場合にはそれに警告を出すようにするか、入力出来ないようにすることがベターと考えますね。 例えば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()),"正しい日付","不正なデータ")
お礼
データの入力規則を使うという方法もあるんですね。 視野が広がりました。 ありがとうございます。
お礼
早々にご回答いただき、ありがとうございました。 =ISNUMBER(A1)で、確認できました。 補足説明までしていただき、ありがとうございました。 次回からは、前提条件等もキチンと書いて投稿させて いただきます。