いきなり答える備忘録

Google Workspace・Microsoft 365・LibreOfficeなどに関するメモ

(Gスプレッドシート)ISDATE関数で値が日付や時刻かどうか判定する

 [※2022年3月更新]
 Googleスプレッドシートでは、Excelのワークシート関数にはないISDATE関数が利用でき、値が日付や時刻(とみなせるものかどうか)を判定できます。ここでは判定の実例を見てみます。

  • ISDATE関数により、値が日付や時刻かどうかを判定できます。
  • テキストとして入力されている場合でも日付や時刻とみなせるものであればTRUEと判定します。数値はFALSEと判定されます。
  • 判定結果は、参照先のセルの表示形式の変更の影響を受けます。

手順

 B列にいろいろな値が入力されています。
 これに対しD3セルに「=ISDATE(C3)」と入力し、下方にコピーしています。比較のためE列にはISTEXT関数を、F列にはISNUMBER関数を入力してB列の値を評価しています。

 結果からわかるように、ISDATE関数は本来の日付や時刻(シリアル値であるもの)だけでなく、日付や時刻に見える文字列に対してもTRUEを返します。画像に示したもの以外にも「2021-3-31」など一定の書式に沿った文字列に対してはTRUEを返します。
 ただしGoogleスプレッドシートは和暦をサポートしていないので、和暦の文字列に対してはFALSEを返します。
 また、ただの数値にはFALSEを返します。
 ちなみにエラーを評価すると、この手の関数には珍しくエラーを返します(B12セル→C12セルの例)。


 ちょっとした注意点です。
 上記の例のように日付であれば表示形式を多少変えてもTRUEと評価されますし、それと見た目が同じ文字列もTRUEと評価されます。
 しかし曜日だけの場合は少し異なります。日付の入っているセルに対しカスタム数値形式を使って曜日だけを表示したものはTRUEと評価されますが、曜日を表すただの文字列はFALSEと評価されます。


 ところで、ISDATE関数の結果は参照先のセルの表示形式に影響されます(ISTEXTやISNUMBERも同様)。
 右の画像は最初の画像のB3セルの表示形式を「自動」に変更した様子です。これによりB3セルにはシリアル値(数値)が表示されるようになり、同時にB3セルの判定結果もFALSEに変わりました。
 こうした変化はExcelにはない特徴です。