「このセルに入っている値、日付として認識されている?」と気になったことはありませんか。
見た目は日付っぽいのに計算するとエラーになる。そんなトラブルは、セルの値が本当に日付データかどうかを確認すれば防げます。
スプレッドシートのISDATE関数を使えば、セルの値が日付かどうかを一発で判定できますよ。
この記事では、ISDATE関数の基本から実務で役立つ活用パターンまでまとめて紹介します。
スプレッドシートのISDATE関数とは?
ISDATE関数(読み方: いず でいと)は、指定した値が日付かどうかを判定する関数です。
名前は英語の「IS DATE(日付ですか?)」からきています。
対象が日付データであれば TRUE を返し、日付でなければ FALSE を返します。日付だけでなく、日時(日付+時刻)の値もTRUEになります。
ISDATE関数にできることをまとめると、次のとおりです。
- セルの値が日付データかどうかをTRUE/FALSEで返す
- IF関数と組み合わせて日付・非日付で処理を分岐する
- 入力データのバリデーション(日付チェック)に使う
- FILTER関数で日付データだけ抽出する
NOTE
ISDATE関数はGoogleスプレッドシート独自の関数です。Excelには存在しません。Excelとの違いは記事の後半で詳しく解説しています。
ISDATE関数の書き方(構文と引数)
基本構文
=ISDATE(値)
カッコの中に日付かどうか判定したい値を指定します。
引数の説明
| 引数 | 必須/任意 | 説明 |
|---|---|---|
| 値 | 必須 | 日付かどうか判定したい値またはセル参照 |
引数は1つだけです。省略はできません。セル参照・直接値・数式の結果のいずれも指定できます。
TIP
ISDATE関数が判定するのは「セルの値が日付型かどうか」です。見た目が日付っぽい文字列(例: “2026/3/22″)でも、スプレッドシートが日付として認識していなければ FALSE になります。
ISDATE関数の基本的な使い方
まずはシンプルな例で動きを確認してみましょう。
値の種類ごとの判定結果
さまざまなデータをISDATE関数で判定すると、次のような結果になります。
| 数式 | 結果 | 理由 |
|---|---|---|
=ISDATE(A1) ※A1に日付「2026/3/22」 | TRUE | スプレッドシートが日付として認識している |
=ISDATE(A1) ※A1に数値「100」 | FALSE | 数値は日付ではない |
=ISDATE(A1) ※A1に文字列「こんにちは」 | FALSE | 文字列は日付ではない |
=ISDATE(A1) ※A1に日時「2026/3/22 10:30」 | TRUE | 日時も日付型として扱われる |
=ISDATE(A1) ※A1が空白 | FALSE | 空白セルは日付ではない |
=ISDATE(A1) ※A1に文字列「3月22日」 | FALSE | 書式設定で日付表示しているだけの文字列はFALSE |
ポイントは「見た目」ではなく「データ型」で判定されることです。
セル参照で判定する
セル参照を使えば、特定のセルの値が日付かどうかを確認できます。
=ISDATE(A1)
A1 にカレンダーから入力した日付が入っていれば TRUE を返します。手入力の文字列なら FALSE です。
DATE関数の結果を判定する
ISDATE関数の引数に数式を直接入れることもできます。
=ISDATE(DATE(2026,3,22))
DATE関数は日付型の値を返すので、この結果は TRUE です。
ISDATE関数の実践的な使い方・応用例
IF関数と組み合わせて日付チェックする
データ入力が日付かどうかに応じてラベルを付けたい場面で使えます。
=IF(ISDATE(A2),"OK","日付を入力してください")
A2 が日付なら「OK」と表示します。日付でなければ「日付を入力してください」と表示されます。
アンケートや申込フォームの回答チェックに便利ですよ。
入力データのバリデーションに使う
複数人で共有するシートでは、日付欄に文字列やおかしな値が入ることがあります。ISDATE関数で一括チェックできます。
- B列に
=ISDATE(A2)を入力します - 下方向にコピーします
- FALSE が表示された行が「日付として認識されていない」データです
COUNTIF関数と組み合わせれば、不正データの件数もすぐわかります。
=COUNTIF(B2:B100,FALSE)
これで日付として認識されていないセルの数が出ます。データクレンジングの第一歩として活用してみてください。
FILTER関数で日付データだけ抽出する
日付が入っている行だけを取り出したい場面があります。FILTER関数と組み合わせると便利です。
=FILTER(A2:C20,ISDATE(A2:A20))
A列の値が日付のデータだけが抽出されます。日付と文字列が混在するリストの整理に役立ちますよ。
ARRAYFORMULA関数で一括判定する
大量のデータを一括で判定したいときは、ARRAYFORMULA関数と組み合わせます。
=ARRAYFORMULA(ISDATE(A2:A100))
A2からA100まで、すべてのセルに対して日付判定が一括で実行されます。1つずつ数式をコピーする手間が省けます。
よくあるエラーと対処法
ISDATE関数で「思った結果にならない」ケースをまとめました。
| 症状 | 原因 | 対処法 |
|---|---|---|
| 日付っぽいのにFALSEになる | セルの値が文字列として入力されている | セルを選択して「表示形式」→「日付」に変更する。またはDATEVALUE関数で日付型に変換する |
| 数値なのにTRUEになる | セルの表示形式が「日付」に設定されている | 表示形式を「数値」に変更する。ISDATE関数はセルの型を見るため、表示形式が日付なら数値でもTRUEになる場合がある |
| 時刻だけ入力したセルの結果が知りたい | 時刻のみ(例: 10:30)はスプレッドシート内部では日付+時刻として扱われる | 時刻のみのセルもTRUEになることがある。用途に応じて追加チェックが必要 |
| 空白セルでFALSEになる | 空白は日付ではない | 仕様どおりの動作。空白を許容したい場合は =IF(A1="","未入力",IF(ISDATE(A1),"OK","日付ではありません")) |
| 「2026/13/01」でFALSEになる | 存在しない日付のため、スプレッドシートが日付として認識しない | 正しい日付を入力し直す |
Excelとの違い
ISDATE関数はGoogleスプレッドシート独自の関数です。Excelには存在しません。
| 項目 | Googleスプレッドシート | Excel |
|---|---|---|
| ISDATE関数 | 使える | 存在しない |
| 構文 | =ISDATE(値) | ― |
| 代替方法 | ― | ISNUMBER関数で代用する |
Excelで同じことをしたい場合は、ISNUMBER関数を使って代用できます。
=ISNUMBER(A1)
日付はExcel内部ではシリアル値(数値)として管理されています。そのため、ISNUMBER関数がTRUEを返せば日付の可能性があります。
ただし、ISNUMBER関数は普通の数値でもTRUEを返すため、日付だけを正確に判定することはできません。より厳密に日付かどうかを判定したい場合は、次の数式を使います。
=AND(ISNUMBER(A1),A1>=1,A1<=2958465)
この数式は、数値でありかつExcelの日付範囲(1900/1/1~9999/12/31)に収まるかを判定します。完璧ではありませんが、ISDATEの代わりとして実用的ですよ。
TIP
Googleスプレッドシートで作成したISDATE関数入りのファイルをExcelで開くと、ISDATE関数の部分はエラーになります。Excel環境との共有が前提のファイルでは注意してください。
ISDATE関数とISNUMBER関数の違い
ISDATE関数とISNUMBER関数は、どちらもデータ型を判定するIS系関数です。判定する対象が異なります。
| 比較項目 | ISDATE関数 | ISNUMBER関数 |
|---|---|---|
| 判定対象 | 日付型かどうか | 数値型かどうか |
| 日付セルに対して | TRUE | TRUE(日付はシリアル値=数値) |
| 数値セルに対して | FALSE | TRUE |
| 文字列セルに対して | FALSE | FALSE |
| Excel互換 | なし(Sheets独自) | あり |
注目すべきポイントは、日付セルに対する動作の違いです。ISNUMBER関数は日付セルでもTRUEを返します。日付はスプレッドシート内部で数値(シリアル値)として管理されているためです。
「日付かどうか」だけを判定したい場合はISDATE関数を使いましょう。「数値全般(日付含む)かどうか」を判定したい場合はISNUMBER関数が適しています。
まとめ
ISDATE関数は、セルの値が日付かどうかを判定するシンプルな関数です。
ポイントを整理します。
- 構文は
=ISDATE(値)で、引数は1つだけ - 日付型なら TRUE、それ以外は FALSE を返す
- 「見た目」ではなく「データ型」で判定される
- 日時(日付+時刻)の値もTRUEになる
- IF関数と組み合わせて入力データのバリデーションに使うのが定番
- FILTER関数やARRAYFORMULA関数との組み合わせも便利
- Googleスプレッドシート独自の関数でExcelには存在しない
- Excelでの代替はISNUMBER関数を使う
まずは =ISDATE(A1) で、セルの値が日付として認識されているか確認してみてください。
