エクセルの日付のチェックについて ご質問です。 エンドユーザーに日付を入力...

avatar
nor********さん
2020/09/05 00:31

エクセルの日付のチェックについて ご質問です。 エンドユーザーに日付を入力して頂いていますが 今日の日付より今日を含む 以前の日付を記載すると エラーとなる関数はありますか?

(例) 今日は: 20200905 とします。 エラー: 20200905 (今日) エラー: 20200904 (今日より前) OK: 20200906 OK としたいのですが

最良の答え

avatar
kky********さん
2020/09/05 02:43

日付をどのように入力してもらっているのですか? エクセルでは通常、日付の入力は「2020/9/5」のように / を入れて入力しますが、そうでなく8桁の数字を入れているのですか? それによってエラーチェックの方法もかわります。 また関数でなく入力規則で正しくない値が入力出来ないようにした方がいいと思います。

答え
avatar
nor********
2020/09/05 14:56

回答ありがとうございます。 表示形式が「文字列」で 8桁を入れております。

avatar
kky********
2020/09/05 15:04

8桁の文字列なら 例えばA1に入力するとして、B1に =IF(DATE(LEFT(A1,4),MID(A1,5,2),RIGHT(A1,2))<=TODAY(),"エラー","") とします。 ですが最初の回答に書いたように入力規則でエラーの日付は入力させないようにした方がいいのではないですか? メッセージの表示だけでいいのでしょうか。

他の答え


avatar
nonocoteppeさん
2020/09/05 01:19

それでは日付と言うよりただの数値ではありますが、 日付も1900/1/0からの累積日数ですので、必ず8桁の入力なら、以前とは以下と同等になりますから、 =IF(A1="","",IF(A1<=TEXT(TODAY(),"yyyymmdd")*1,"エラー","OK"))

答え
avatar
nor********
2020/09/05 10:41

回答ありがとうございます。 参照元の表示形式が「標準」ですと OKです。 参照元の表示形式が「文字列」ですと 全てOKに なります。 違いはなんなんでしょうか?

avatar
nonocoteppe
2020/09/05 11:54

セルに普通に「20200905」と入力すれば数値になります。 ですので、提示したTEXTだと文字列として返るので、1掛けて(*1)数値に変換してます。 なので標準だとどちらも数値として比較できますが、 文字列で入力していれば、文字対数値と言う事で別物と判断されます。 入力が文字列であれば、*1は付けなくてよい。