• ベストアンサー

エクセル関数で日付かどうかの確認?

ワークシート関数でセル内が日付かどうか調べるものはないでしょうか? VBAのIsDateなら存じておりますが。

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

  • ベストアンサー
  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.1

日付を表すデータは、セルの値としては、単なる数値なのですが、どういう種類のセルの書式が設定されているかを調べることはできます。 調べたいセルがA1だとして =cell("format",A1) で "D1"になれば概ね日付だと判別できます。 時刻を含めたものにする場合は、 Dで始まることをチェックすればいいかも。 詳しくは、CELL関数のヘルプを参照してください。

error123
質問者

お礼

ありがとうございます。 > 日付を表すデータは、セルの値としては、単なる数値なのですが、 言われてみれば、まったくその通りでしたね。 勉強になりました。

その他の回答 (3)

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.4

Sub test01() For i = 1 To 5 MsgBox Cells(i, 1).NumberFormat Next i End Sub 上記は、日付書式の種類が一般的には多すぎて、IFで聞くにしても破綻する。 しかし日付書式の種類をそのシートでは、一種や数種に絞っている場合は使えるかもしれない。 本質的には、日付は整数値で書式でもって初めて日付たりうるものである。例えば37345が整数か日付(2002/3/30)かは書式で決まる。

error123
質問者

お礼

> 本質的には、日付は整数値で書式でもって初めて日付たりうるものである。例えば37345が整数か日付(2002/3/30)かは書式で決まる。 仰せのとおりでございます。 ありがとうございました。

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.3

#2の方の方法の場合、日付というより数値だったら全て○になってしまいます。

error123
質問者

お礼

そうですね、ありがとうございます。

  • cucsna
  • ベストアンサー率23% (12/51)
回答No.2

VBAのIsDateにあたる関数は分かりませんが、 以下の方法で確認は可能かと思います。 「=IF(ISERROR(DAY(A1)),"×","○")」 (調べたいセルがA1の場合です) 日付の場合は「○」。日付でない場合は「×」が戻ります。 DAYが、そのセルの値から日を返す関数なので、 日付以外の値の場合は、「#VALUE!」というエラーとなります。 それをISERROR関数で調べたらいいかと思いました。 ただ、この方法だとセルがブランクの場合に「○」となってしまうので、もう少し工夫が必要かもしれません。

error123
質問者

お礼

ありがとうございました。