ツイッター出題回答
8桁数値が日付として不適切なら赤にする条件付き書式

ExcelマクロVBAとエクセル関数についての私的雑感
公開日:2022-08-10 最終更新日:2022-08-10

8桁数値が日付として不適切なら赤にする条件付き書式


ツイッターで出題した問題です。


日付が8桁数値、つまりyyyymmdd形式で入力されている場合に、
その入力されている8桁数値が日付として正しいかどうかを判定し、日付として不適切なら赤文字にする条件付き書式を設定します。


出題ツイート

【エクセル問題】日付・条件付き書式
A列に条件付き書式を設定してください。
8桁数値が日付として不適切な場合に赤文字にする。
※32以上、小の月の31、うるう年以外の2/29等々

Excel エクセル問題 日付・条件付き書式
https://twitter.com/yamaoka_ss/status/1556634948013920256


引用リツイートでの回答

出題者としての解答

数式の書き方はいろいろ考えられますが、
まずは、短めの数式で定番といえる方法で、

=ISERROR(TEXT(A1,"0000!/00!/00")*1)
または、
=ISERROR(TEXT(A1,"0000-00-00")*1)
※「/」は書式文字になっているので「!」でエスケープが必要です。

Excel エクセル問題 日付・条件付き書式

色々な数式の書き方をして比べてみました。

①=ISERROR(TEXT(A2,"0000!/00!/00")*1)
②=ISERROR(DATEVALUE(TEXT(A2,"0000!/00!/00")))
③=A2&""<>IFERROR(TEXT(DATE(LEFT(A2,4),MID(A2,5,2),RIGHT(A2,2)),"yyyymmdd"),"")
④=OR(LEN(A2)<>8,ISERROR(DATEVALUE(LEFT(A2,4)&"/"&MID(A2,5,2)&"/"&RIGHT(A2,2))))
⑤=NOT(AND(LEN(A2)=8,ISNUMBER(DATEVALUE(LEFT(A2,4)&"/"&MID(A2,5,2)&"/"&RIGHT(A2,2)))))

Excel エクセル問題 日付・条件付き書式

「19000100」の行で違いが出ていますが、実用で問題になることはないでしょう。
「19000229」これが正しいと判定されていますが、もうこれはエクセルなので仕方ないです。
日付の謎:IsDateとCDate
ツイッターで出したVBAのお題です。エクセルにおける日付のちょっと不思議な挙動についての、ちょっと変わった、ちょっと意地悪な問題です。お題のツイート https://twitter.com/yamaoka_ss/status/1271776939343110146 【VBA問題】 画像のVBAはエラーになる事がある…

DATE関数を使う場合、日がその月の末日より大きくても翌月の日付として認識してしまう為、今回の場合はどうしても面倒な数式になってしまいますね。
DATEVALUE関数は、末日より大きい日はエラーになるので、今回は割と楽に処理できています。
もちろん、ときどきの処理内容によって使い分けが必要になります。

④⑤は、7桁数値で偶然にも一致してしまう事があるので桁数チェックも入れています。
⑤では、日付はシリアル値なのではISERROR判定をISNUMERICで代替してみましたが、TRUE/FALSEが逆になるので、今回の場合は面倒なだけでした。




同じテーマ「ツイッター出題回答 」の記事

m/d/yyyy形式文字列を日付シリアル値に変換
成績表(ネ申エクセル)を別表に集計
年月に対して有効な日だけの入力規則のリスト作成
8桁数値が日付として不適切なら赤にする条件付き書式
条件付きの最大値と中央値("A"が2文字の条件)
日付時刻のマイナス表示に対応する方法
一覧から複数条件(部分一致、範囲)に合致するデータを抽出する
構成比を合計しても100%にならないと言われた…
振込手数料を先方負担にした時の振込金額と手数料の算出
脱字メーカー(文字列から1文字削除)
リーグ表に対戦番号を振る


新着記事NEW ・・・新着記事一覧を見る

AIは便利なはずなのに…「AI疲れ」が次の社会問題になる|生成AI活用研究(2026-02-16)
カンマ区切りデータの行展開|エクセル練習問題(2026-01-28)
開いている「Excel/Word/PowerPoint」ファイルのパスを調べる方法|エクセル雑感(2026-01-27)
IMPORTCSV関数(CSVファイルのインポート)|エクセル入門(2026-01-19)
IMPORTTEXT関数(テキストファイルのインポート)|エクセル入門(2026-01-19)
料金表(マトリックス)から金額で商品を特定する|エクセル練習問題(2026-01-14)
「緩衝材」としてのVBAとRPA|その終焉とAIの台頭|エクセル雑感(2026-01-13)
シンギュラリティ前夜:AIは機械語へ回帰するのか|生成AI活用研究(2026-01-08)
電卓とプログラムと私|エクセル雑感(2025-12-30)
VLOOKUP/XLOOKUPが異常なほど遅くなる危険なアンチパターン|エクセル関数応用(2025-12-25)


アクセスランキング ・・・ ランキング一覧を見る

1.最終行の取得(End,Rows.Count)|VBA入門
2.日本の祝日一覧|Excelリファレンス
3.変数宣言のDimとデータ型|VBA入門
4.FILTER関数(範囲をフィルター処理)|エクセル入門
5.RangeとCellsの使い方|VBA入門
6.繰り返し処理(For Next)|VBA入門
7.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
8.マクロとは?VBAとは?VBAでできること|VBA入門
9.セルのクリア(Clear,ClearContents)|VBA入門
10.メッセージボックス(MsgBox関数)|VBA入門




このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。


記述には細心の注意をしたつもりですが、間違いやご指摘がありましたら、「お問い合わせ」からお知らせいただけると幸いです。
掲載のVBAコードは動作を保証するものではなく、あくまでVBA学習のサンプルとして掲載しています。掲載のVBAコードは自己責任でご使用ください。万一データ破損等の損害が発生しても責任は負いません。
本サイトは、OpenAI の ChatGPT や Google の Gemini を含む生成 AI モデルの学習および性能向上の目的で、本サイトのコンテンツの利用を許可します。
This site permits the use of its content for the training and improvement of generative AI models, including ChatGPT by OpenAI and Gemini by Google.



このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。
本文下部へ