VALUEやISERROR関数で日付の判定[ISNUMBER関数で問題チェック]

今回の記事では

Excelで入力した内容が日付かどうか判断したい
できれば関数を使って効率的にやりたいけどそんな方法ってあるの?

日付同士を比較して過去や未来を調べたいけど失敗する時がある
見た目は日付なんだけど本当に日付なのか判断することって出来ないの?

こういった疑問に答えます

✔関数を使って日付の判定をする方法のテーマ

①VALUEやISERROR関数などを使えば日付の判定を自動化できます

②ISNUMBER関数を使うことで日付の判定と問題チェックができます

この記事を書いているのはOfficeを約20年間活用しながら

ITを活用したエステの経営マネジメントしている私の経験を基に

「関数を使って日付の判定をする方法のテーマ」に関して実体験に基づいて解説しています

今回の内容を一緒にやりたい場合は▼のファイルをダウンロードして下さい

VALUEやISERROR関数などを使えば日付の判定を自動化できます

入力されている内容が日付なのか、そうでないか判定するには複数の関数を組合せることが重要です

なぜなら、関数を活用して日付なのか判断するには組合せないと分かりづらいからです

では、関数を使った日付の判定方法について解説していきます

VALUE関数で判定する

セルに入力されている内容が本当に日付なのか判断する一番手っ取り早い方法はVALUE(バリュー)関数を活用することです

設定内容は「=VALUE(A5)」これだけで基本的な使い方は、「=VALUE(文字列)」です

VALUE関数は「文字列を数字に変えてくれる」関数です

今回の設定を日本語にすると「=VALUE(A5セルの内容を数字に変換してね)」という意味になります

前提として日付は「シリアル値という数字」ですよね

普通は日付(シリアル値)を数字に直したとしても、元々数字なので何も問題ありません

ところがエラーが表示されているセルに注目してみましょう

パッと見では問題ないように見えますが、よく見ると「2022/2/29や2022/2/30」は存在しない日付なんです

特にうるう年がある2月は間違いやすさNo1ですよね

でも、連続した日付から間違いを探し出すことはめちゃくちゃ大変です

こんな時は、VALUE関数を使うと「エラーを表示」してくれます

この結果を上手く利用したのが今回のVALUE関数を使った「セルに入力されているのは日付なのか判断する方法」という訳です

ただ、このままだとエラーが表示されているだけなのでかっこ悪いし、何が原因なのか他の人が見た時に分かりにくいですよね

そこで次に「VALUE関数の結果がエラーになった場合の処理」を追加する必要があります

そんな時は、ISERROR関数を使ってエラーになるかどうか判断する設定してきましょう

ISERROR関数でエラー判定

こんな風に「ISERROR(イズエラー)関数」をVALUE関数にネストさせることで判断できます

ISERROR関数は結果がエラーになった場合「TRUE」を返します

今回の設定内容は「=ISERROR(VALUE(A6))」で基本的な使い方は「=ISERROR(テストの対象))」です

「テストの対象」とはエラーになるかどうか結果を判断することです

使い方を日本語にすると「=ISERROR(VALUE(A6セルの内容を判定)結果がエラーになったらTRUEを表示、そうでなければFALSEを表示してね)」

という意味です

仕上げはIF関数を使ってエラーになった場合とそうでない場合を振り分ければもう少しスマートに日付の判定が出来ます

IF関数を使って日付か判定する

最後の仕上げとしてIF関数をネストさせてみます

設定した結果はこんな感じです

ISERROR関数などの結果をそのまま入れてネストさせています

今回の内容は「=IF(ISERROR(VALUE(A6))=TRUE,”日付が間違っています”,””)」ですね

ISERROR関数の結果がTRUEであれば、日付が間違っているメッセージを表示しFALSE(問題ない)場合は何も表示しない という設定です

この式を日本語にすると「=IF(ISERRORの結果が「TRUE」なら,「日付が間違っています」と表示してね,そうでなければ「空白」を表示してね)」という意味になります

これで正しい日付が入力されているかどうかを自動的に知ることが出来ます

ISNUMVER関数で日付を判定する方法

次は、もう一つの日付判定をするISNUMBER(イズナンバー)関数を使ったやり方を解説します

ISNUMBER関数を使った結果はこんな感じです

ISNUMBER関数は対象が「数字かどうか」を判断して「数字であればTRUE」を「数字でなければFALSE」を表示してくれます

ISNUMBER関数の基本的な使い方は「=ISNUMBER(テストの対象)」です

今回の場合は、「=ISNUMBER(A6)」なので日本語にすると「=ISNUMBER(A6セルの内容を調べてね)」という意味になります

ただ、このままだと表示内容が英語のままで分かりづらいのでIF関数と組み合わせて日付ではない場合の処理を設定してみましょう

設定した内容はこんな感じです

設定内容は「=IF(ISNUMBER(A6)=FALSE,“日付じゃないよ”,“”)」でコレを日本語にすると「=IF(ISNUMBER関数の結果が「FALSE」だったら,「日付じゃないよ」と表示してね,そうじゃないなら「空白」を表示してね)」という意味になります

こっちのやり方の方がシンプルですね

ポイントはISNUMBER関数が「数字かどうかを判断すること」です

繰り返しになりますが、日付とはシリアル値なので数字ですよね

つまり今回のように対象が文字列の場合はFALSEという結果を返してくるので、その結果をIF関数を使って表示内容を調整してあげればシンプルに日付の判別が出来るという訳です

繰り返しになりますが、入力されている内容が日付なのかそうでないか判定するには複数の関数を組合せることが重要です

よくある質問:日付と文字列はどうして分からなくなるのか知りたい

よくある質問として、どうして日付と文字列が見分けがつかなくなるのか知りたいという話があります

原因はExcelでは「間違った日付でも文字列として表示してくれる」という機能があるからです

このような機能がある理由は「/」を含めた文字列が必ずしも「日付」とは限らないからです

では間違った日付が発生してしまう理由と見落としてしまう原因について解説していきいましょう

通常日付と文字列にはこんな風に明らかな違いがあります

「日付は右詰めで、文字列は左詰め」このことを知っていれば違いは一目瞭然ですよね

注意したい点の一つが表示形式が「日付」になっていることです

通常日付の設定になっていれば、日付として認識してくれているなと思ってしまいます

しかし、日付としての表示設定をしていても文字列の時は特に影響されずに入力出来てしまうので気づかないポイントの一つと言えます

では、次にこうなったらどうでしょうか?

これだと日付と文字列の違いは、相当よく見ないと分かりません

しかもたくさん入力されている中から見つけるとなれば大変なことになります

今回、設定したのは単純にセルの文字の配置を「右詰め」にしただけです

こうなってしまうと当然見逃してしまいますよね

「そんなことをする人はいないだろう」と思いましたか?

そう、このブログを読んでもらっている方は勉強熱心でExcelを使いこなそうとする人なのでそういう人はいないかもしれません

但し、人は必ず失敗やミスをします

また一人で仕事をすることの方が少ないですよね

つまり、他の誰かがミスっている可能性は非常に大きいです

こういった単純な設定でも間違いを見逃す原因になるので、たくさんのチェックをしたい時には関数を利用することが重要です

繰り返しになりますが、日付と文字列が分からなくなる原因はExcelでは間違った日付でも文字列として表示してくれるという機能があるからです

ISNUMBER関数を使うことで日付の判定と問題チェックができます

日付を比較して過去か未来かを判断する時はISNUMBER関数を使うのが最適解です

なぜなら、日付のシリアル値を判断すれば問題を自動的にチェックすることが出来るからです

例えば、日付を比較して対象の日付が調べている日付よりも過去なのか未来なのかを判断する設定をすると間違った結果を表示することがあります

それがこんなケースです

ちなみに「B4セル」の内容は表示形式を設定しているだけなので実際は「2022/5/5」という日付が入力されています

今日の日付より昔であれば過去、今日よりも先の日付であれば未来として表示するようにしています

式は「=IF($B$4>A8,“過去”,“未来”)」なのでコレを日本語にすると「=IF(もしB4のセルがA8のセルよりも大きければ,「過去」と表示してね,そうじゃなければ「未来」と表示してね)」という意味になります

日付はシリアル値という数字なので日付同士を比べて過去か未来化を判断させています

ところが、赤い文字の部分は「未来」と表示しています

通常は過去の「月数」なので少なくとも「過去」やエラーを表示してほしいのですが上手くいっていませんよね

例えばこれが、賞味期限を管理したExcelの書類だったととしたら、間違える原因になるのでゾッとしませんか

なにせ、普通は間違っていても黒い文字なので気づきにくいです

どうして間違った判断をしてしまうのか原因を図解にして整理しておきましょう

原因はこんな風にシリアル値に直しても「数字と文字列」になってしまうので、「過去では無い」つまり未来と表示してしまったという訳です

では、この問題をどうしたら解決出来るのか?

それは、ISNUMBER関数とIF関数を上手く組み合わせることでちゃんと表示出来るようになります

こんな風にネストが重なって少しわかりづらくなっていますが、ISNUMBER関数で数字ではないと分かったら「日付ではありません」と表示します

そうではない、つまり日付だったら過去か未来を判断する

という処理をするという流れですね

今回の式を見てみると「=IF(ISNUMBER(A8)=FALSE,“日付ではありません”,IF($B$4>A8,”過去”,”未来”))」なので

コレを日本語にすると「=IF(もしA8のセルが数字でなければ,「日付ではありません」と表示してね,数字だったら「過去」か「未来」かを判断してね))」という意味になります

これで「日付っぽい文字列」の仕分けと過去と未来の振り分けを自動化することが出来ました

今回の式は少し長くて難しそうですが、分解して見ると意外と理解できるのでチャレンジしてみて下さい

繰り返しになりますが、日付を比較して過去か未来かを判断する時はISNUMBER関数を使うのが最適解です

オススメのExcel関数の解説書 5選

関数を本で学ぶ時は次に上げるものがオススメです

本を購入をオススメしている理由と各本の紹介に関して、下記の記事で詳しく解説しているので合わせて読んでみてください

コメントを残す

メールアドレスが公開されることはありません。