スプレッドシートのISDATE関数の使い方|セルが日付かどうかを判定する完全ガイド

スポンサーリンク

「このセルに入っている値、日付として認識されている?」と気になったことはありませんか。

見た目は日付っぽいのに、計算するとエラーになる。並べ替えたら順番がバラバラ。フィルターをかけても日付として絞り込めない。こうしたトラブルは、セルの値が本当に日付データ型かどうかを確認すれば防げます。

スプレッドシートの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関数で一括チェックできます。

  1. B列に =ISDATE(A2) を入力します
  2. 下方向にコピーします
  3. FALSE が表示された行が「日付として認識されていない」データです

COUNTIF関数と組み合わせれば、不正データの件数もすぐわかります。

=COUNTIF(B2:B100,FALSE)

これで日付として認識されていないセルの数が出ます。データクレンジングの第一歩として活用してみてください。

条件付き書式と組み合わせて目立たせる

ISDATE関数は条件付き書式のカスタム数式にも使えます。日付以外のセルだけ赤く塗ると、ミスがひと目で見つかります。

  1. 範囲 A2:A100 を選択する
  2. 「表示形式」→「条件付き書式」→「カスタム数式」を選ぶ
  3. 数式に =NOT(ISDATE(A2)) を入力する
  4. 背景色を赤に設定する

これで「日付ではない=赤」になります。チェック専用列を増やさずに済むので、シートがスッキリしますよ。

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/01FALSE になる存在しない月のため、スプレッドシートが日付として認識しない正しい日付を入力し直す
インポートした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関数
判定対象日付型かどうか数値型かどうか
日付セルに対してTRUETRUE(日付はシリアル値=数値)
数値セルに対してFALSETRUE
文字列セルに対してFALSEFALSE
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) で、セルの値が日付として認識されているか確認してみてください。日付計算がうまくいかないときの「最初の一手」として覚えておくと、データクレンジングのスピードがぐっと上がりますよ。


関連記事

タイトルとURLをコピーしました