「このセルに入っている値、日付として認識されている?」と気になったことはありませんか。
見た目は日付っぽいのに、計算するとエラーになる。並べ替えたら順番がバラバラ。フィルターをかけても日付として絞り込めない。こうしたトラブルは、セルの値が本当に日付データ型かどうかを確認すれば防げます。
スプレッドシートのISDATE関数を使えば、セルの値が日付かどうかを一発で判定できますよ。
この記事では、ISDATE関数の基本構文から、IF関数・FILTER関数・ARRAYFORMULA関数との組み合わせ、データ入力チェック、Excelとの違いまでまとめて紹介します。
スプレッドシートのISDATE関数とは?
ISDATE関数(読み方: いず でいと)は、指定した値が日付かどうかを判定する関数です。
名前は英語の「IS DATE(日付ですか?)」からきています。対象が日付データであれば TRUE を返し、日付でなければ FALSE を返します。日付だけでなく、日時(日付+時刻)の値も TRUE になります。
ISDATE関数にできることをまとめると、次のとおりです。
- セルの値が日付データかどうかを
TRUE/FALSEで返す - IF関数と組み合わせて日付・非日付で処理を分岐する
- 入力データのバリデーション(日付チェック)に使う
- FILTER関数で日付データだけ抽出する
- COUNTIF関数と組み合わせて不正データの件数をカウントする
NOTE
ISDATE関数はGoogleスプレッドシート独自の関数です。Excelには存在しません。Excelでの代替方法は記事の後半で詳しく解説しています。
ISDATE関数の書き方(構文と引数)
基本構文
=ISDATE(値)
カッコの中に、日付かどうか判定したい値を指定します。
引数の説明
| 引数 | 必須/任意 | 説明 |
|---|---|---|
| 値 | 必須 | 日付かどうか判定したい値またはセル参照 |
引数は1つだけです。省略はできません。セル参照・直接値・数式の結果のいずれも指定できます。
TIP
ISDATE関数が判定するのは「セルの値が日付型かどうか」です。見た目が日付っぽい文字列(例:
"2026/3/22"のような半角スラッシュ区切り文字列)でも、スプレッドシートが日付型として認識していなければFALSEになります。
ISDATE関数の基本的な使い方
まずはシンプルな例で動きを確認してみましょう。
値の種類ごとの判定結果
さまざまなデータをISDATE関数で判定すると、次のような結果になります。
| 数式 | A1 の中身 | 結果 | 理由 |
|---|---|---|---|
=ISDATE(A1) | 日付「2026/3/22」 | TRUE | スプレッドシートが日付として認識している |
=ISDATE(A1) | 数値「100」 | FALSE | 数値は日付ではない |
=ISDATE(A1) | 文字列「こんにちは」 | FALSE | 文字列は日付ではない |
=ISDATE(A1) | 日時「2026/3/22 10:30」 | TRUE | 日時も日付型として扱われる |
=ISDATE(A1) | 空白 | FALSE | 空白セルは日付ではない |
=ISDATE(A1) | 文字列「3月22日」 | FALSE | 表示形式が日付風でも文字列ならFALSE |
=ISDATE(A1) | エラー(#N/Aなど) | エラー伝播 | エラー値はそのまま伝播する |
ポイントは「見た目」ではなく「データ型」で判定されることです。
セル参照で判定する
セル参照を使えば、特定のセルの値が日付かどうかを確認できます。
=ISDATE(A1)
A1 にカレンダーから入力した日付や、2026/3/22 のように自動的に日付認識された値が入っていれば TRUE を返します。文字列として手入力されたものは FALSE です。
直接値を判定する
セル参照を使わず、ISDATE関数のカッコ内に値を直接書くこともできます。
=ISDATE("2026/3/22")
ただし、ダブルクォートで囲んだ値は文字列として扱われるため、この式は FALSE を返します。直接値を使う場合は、後述の DATE関数 で日付を作るのが確実です。
DATE関数の結果を判定する
ISDATE関数の引数に数式を直接入れることもできます。
=ISDATE(DATE(2026,3,22))
DATE関数は日付型の値を返すので、この結果は TRUE です。同じく TODAY関数 や NOW関数 の結果もすべて TRUE になります。
ISDATE関数の実践的な使い方・応用例
IF関数と組み合わせて日付チェックする
データ入力が日付かどうかに応じてラベルを付けたい場面で使えます。
=IF(ISDATE(A2),"OK","日付を入力してください")
A2 が日付なら「OK」と表示します。日付でなければ「日付を入力してください」と表示されます。
申込フォームの回答チェックや、勤怠表の入力チェックに便利ですよ。複数条件を組みたい場合は IFS関数 と組み合わせると見通しがよくなります。
入力データのバリデーションに使う
複数人で共有するシートでは、日付欄に文字列やおかしな値が入ることがあります。ISDATE関数で一括チェックできます。
- B列に
=ISDATE(A2)を入力します - 下方向にコピーします
FALSEが表示された行が「日付として認識されていない」データです
COUNTIF関数と組み合わせれば、不正データの件数もすぐわかります。
=COUNTIF(B2:B100,FALSE)
これで日付として認識されていないセルの数が出ます。データクレンジングの第一歩として活用してみてください。
条件付き書式と組み合わせて目立たせる
ISDATE関数は条件付き書式のカスタム数式にも使えます。日付以外のセルだけ赤く塗ると、ミスがひと目で見つかります。
- 範囲 A2:A100 を選択する
- 「表示形式」→「条件付き書式」→「カスタム数式」を選ぶ
- 数式に
=NOT(ISDATE(A2))を入力する - 背景色を赤に設定する
これで「日付ではない=赤」になります。チェック専用列を増やさずに済むので、シートがスッキリしますよ。
FILTER関数で日付データだけ抽出する
日付が入っている行だけを取り出したい場面があります。FILTER関数と組み合わせると便利です。
=FILTER(A2:C20,ISDATE(A2:A20))
A列の値が日付のデータだけが抽出されます。日付と文字列が混在するリストの整理に役立ちますよ。
逆に「日付ではない行」だけ抽出したい場合は、NOT(ISDATE(...)) でラップします。
=FILTER(A2:C20,NOT(ISDATE(A2:A20)))
不正データの行だけを取り出せるので、修正担当者にそのまま渡せます。
ARRAYFORMULA関数で一括判定する
大量のデータを一括で判定したいときは、ARRAYFORMULA関数と組み合わせます。
=ARRAYFORMULA(ISDATE(A2:A100))
A2からA100まで、すべてのセルに対して日付判定が一括で実行されます。1つずつ数式をコピーする手間が省けます。データの追加に強い「動的な数式」を作りたいときの定番パターンです。
DATEVALUE関数と組み合わせて文字列を日付に変換する
「ISDATE で FALSE だったら、DATEVALUE関数 で日付に変換する」という処理もよく使われます。
=IF(ISDATE(A2),A2,DATEVALUE(A2))
A2 がすでに日付ならそのまま、文字列なら日付に変換した値を返します。Webからコピーしてきた日付文字列を一気に正規化したいときに便利です。
ISDATE関数でよくあるエラーと対処法
ISDATE関数で「思った結果にならない」ケースをまとめました。
| 症状 | 原因 | 対処法 |
|---|---|---|
日付っぽいのに FALSE になる | セルの値が文字列として入力されている | セルを選択して「表示形式」→「数値」→「日付」に変更する。またはDATEVALUE関数で日付型に変換する |
数値なのに TRUE になる | セルの表示形式が「日付」に設定されている | 表示形式を「数値」に戻す。ISDATE関数はセルの内部型を見るため、表示形式によっては数値でも TRUE になる |
時刻だけ入力したセルが TRUE になる | 時刻のみ(例: 10:30)も内部では日付+時刻として扱われる | 時刻のみのセルもTRUEになることがある。日付だけを判定したい場合は =AND(ISDATE(A1),A1>=DATE(2000,1,1)) のように範囲を絞る |
空白セルで FALSE になる | 空白は日付ではない | 仕様どおりの動作。空白を許容したい場合は =IF(A1="","未入力",IF(ISDATE(A1),"OK","日付ではありません")) |
2026/13/01 で FALSE になる | 存在しない月のため、スプレッドシートが日付として認識しない | 正しい日付を入力し直す |
インポートしたCSVの日付が全部 FALSE | テキスト形式で取り込まれている | A列を選択し「データ」→「列を分割」→「自動検出」、またはDATEVALUE関数で一括変換 |
#N/A などのエラーが返る | 引数のセルがエラー値 | IFERROR関数でラップする: =IFERROR(ISDATE(A1),FALSE) |
ExcelとのISDATE関数の違い
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関数の部分は
#NAME?エラーになります。Excel環境との共有が前提のファイルでは、ISNUMBER関数による代替式を使いましょう。
ISDATE関数とISNUMBER関数の違い
ISDATE関数とISNUMBER関数は、どちらもデータ型を判定するIS系関数です。判定する対象が異なります。
| 比較項目 | ISDATE関数 | ISNUMBER関数 |
|---|---|---|
| 判定対象 | 日付型かどうか | 数値型かどうか |
| 日付セルに対して | TRUE | TRUE(日付はシリアル値=数値) |
| 数値セルに対して | FALSE | TRUE |
| 文字列セルに対して | FALSE | FALSE |
| Excel互換 | なし(Sheets独自) | あり |
注目すべきポイントは、日付セルに対する動作の違いです。ISNUMBER関数は日付セルでも TRUE を返します。日付はスプレッドシート内部で数値(シリアル値)として管理されているためです。
「日付かどうか」だけを判定したい場合はISDATE関数を使いましょう。「数値全般(日付含む)かどうか」を判定したい場合はISNUMBER関数が適しています。
ほかのIS系関数として ISTEXT関数(文字列判定)、ISBLANK関数(空白判定)も合わせて覚えておくと、データ検証のレパートリーが広がります。
ISDATE関数のよくある質問(FAQ)
Q. 「2026-03-22」と「2026/03/22」で結果が変わりますか?
スプレッドシートの設定ロケール(言語と地域)によって変わります。日本ロケールでは両方とも自動的に日付として認識されることが多いですが、英語ロケールでは 2026-03-22 が引き算と解釈されるケースがあります。「ファイル」→「設定」→「言語と地域」を日本に揃えておくと安全です。
Q. ISDATE関数で時刻だけのセルもTRUEになるのを防ぎたい
時刻のみ(例: 10:30:00)はシリアル値として 0以上1未満の小数になります。次の式で「整数部分があるか」をチェックすれば、純粋な時刻を除外できます。
=AND(ISDATE(A1),INT(A1)>0)
Q. ISDATE関数の処理が重いです。軽くする方法は?
ISDATE関数自体は軽量ですが、何千行に対して個別の数式を入れると再計算が遅くなります。ARRAYFORMULA関数でまとめて1つの数式にする、または列ごとフィルターで対象を絞ってから判定するのがおすすめです。
Q. ISDATE関数とDATEVALUE関数はどう使い分ける?
ISDATE関数は「判定するだけ」、DATEVALUE関数は「変換する」関数です。文字列を日付に変えたいときはDATEVALUE、現状の型を確認したいときはISDATEを使います。両者を IF で組み合わせると「すでに日付ならそのまま、違うなら変換」という処理が書けます。
Q. ISDATE関数の結果をTRUE/FALSEではなく日本語で表示したい
IF関数でラップするのが定番です。
=IF(ISDATE(A1),"日付","日付ではない")
これで TRUE/FALSE ではなく日本語ラベルで表示できます。社内の共有シートでは日本語表示にしておくと、他の人にも伝わりやすいですよ。
Q. 株価やレートのデータを取り込んだら日付列がFALSEだらけになります
GOOGLEFINANCE関数や外部CSVから取り込んだ日付は、まれにテキストとして扱われることがあります。DATEVALUE で正規化するか、列を選択して「データ」→「列を分割」→「自動検出」で再認識させてください。
まとめ
ISDATE関数は、セルの値が日付かどうかを判定するシンプルな関数です。
ポイントを整理します。
- 構文は
=ISDATE(値)で、引数は1つだけ - 日付型なら
TRUE、それ以外はFALSEを返す - 「見た目」ではなく「データ型」で判定される
- 日時(日付+時刻)の値も
TRUEになる - IF関数と組み合わせて入力データのバリデーションに使うのが定番
- FILTER関数やARRAYFORMULA関数との組み合わせも便利
- 条件付き書式の「カスタム数式」でミスを色分け表示できる
- Googleスプレッドシート独自の関数でExcelには存在しない
- Excelでの代替はISNUMBER関数を使う
まずは =ISDATE(A1) で、セルの値が日付として認識されているか確認してみてください。日付計算がうまくいかないときの「最初の一手」として覚えておくと、データクレンジングのスピードがぐっと上がりますよ。
