- ベストアンサー
エクセル関数で日付かどうかの確認?
ワークシート関数でセル内が日付かどうか調べるものはないでしょうか? VBAのIsDateなら存じておりますが。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
日付を表すデータは、セルの値としては、単なる数値なのですが、どういう種類のセルの書式が設定されているかを調べることはできます。 調べたいセルがA1だとして =cell("format",A1) で "D1"になれば概ね日付だと判別できます。 時刻を含めたものにする場合は、 Dで始まることをチェックすればいいかも。 詳しくは、CELL関数のヘルプを参照してください。
その他の回答 (3)
- imogasi
- ベストアンサー率27% (4737/17069)
Sub test01() For i = 1 To 5 MsgBox Cells(i, 1).NumberFormat Next i End Sub 上記は、日付書式の種類が一般的には多すぎて、IFで聞くにしても破綻する。 しかし日付書式の種類をそのシートでは、一種や数種に絞っている場合は使えるかもしれない。 本質的には、日付は整数値で書式でもって初めて日付たりうるものである。例えば37345が整数か日付(2002/3/30)かは書式で決まる。
お礼
> 本質的には、日付は整数値で書式でもって初めて日付たりうるものである。例えば37345が整数か日付(2002/3/30)かは書式で決まる。 仰せのとおりでございます。 ありがとうございました。
- BLUEPIXY
- ベストアンサー率50% (3003/5914)
#2の方の方法の場合、日付というより数値だったら全て○になってしまいます。
お礼
そうですね、ありがとうございます。
- cucsna
- ベストアンサー率23% (12/51)
VBAのIsDateにあたる関数は分かりませんが、 以下の方法で確認は可能かと思います。 「=IF(ISERROR(DAY(A1)),"×","○")」 (調べたいセルがA1の場合です) 日付の場合は「○」。日付でない場合は「×」が戻ります。 DAYが、そのセルの値から日を返す関数なので、 日付以外の値の場合は、「#VALUE!」というエラーとなります。 それをISERROR関数で調べたらいいかと思いました。 ただ、この方法だとセルがブランクの場合に「○」となってしまうので、もう少し工夫が必要かもしれません。
お礼
ありがとうございました。
お礼
ありがとうございます。 > 日付を表すデータは、セルの値としては、単なる数値なのですが、 言われてみれば、まったくその通りでしたね。 勉強になりました。