【VBAリファレンス|実務向け】【Excel実務】関数不要!セルの書式設定で「日付と曜日」をスマートに表示するテクニック

スポンサーリンク

導入:なぜこのスキルが重要なのか

実務において、請求書や報告書、日報などの日付管理は避けて通れません。「2023/10/01」という日付の隣に、わざわざ「(日)」と手入力したり、TEXT関数を使って別のセルに曜日を表示させていませんか?
実は、Excelの「セルの書式設定」を正しく活用すれば、元のデータは日付シリアル値のまま、見た目だけを「2023年10月1日(日)」のように変更できます。これにより、データの検索や集計といった「本来の計算機能」を損なうことなく、読みやすい帳票を作成することが可能になります。

基礎知識:Excelにおける「日付」と「表示形式」の仕組み

Excelにとって「日付」は、単なる文字列ではなく「1900年1月1日を1とした通し番号(シリアル値)」として保存されています。
そのため、セルに「2023/10/1」と入力すると、Excelは自動的に日付として認識します。
今回使う「セルの書式設定」は、この「中身の数値」を変えることなく、「画面上の見せ方」だけを自由に変える機能です。特にユーザー定義の書式記号「aaa」や「aaaa」を組み合わせることで、曜日を自動計算して表示させることができます。

実装:設定手順と書式記号のルール

以下の手順で設定を行います。

1. 日付が入力されているセルを選択し、[Ctrl] + [1] キーを押して[セルの書式設定]を開きます。
2. [表示形式]タブの[分類]から[ユーザー定義]を選択します。
3. [種類]の欄に、以下の記号を組み合わせて入力します。

・aaa:曜日(月、火…)
・aaaa:曜日(月曜日、火曜日…)
・ddd:英語の曜日(Mon、Tue…)
・dddd:英語の曜日(Monday、Tuesday…)

例えば「yyyy”年”m”月”d”日”(aaa)」と入力すれば、「2023年10月1日(日)」と表示されます。

サンプルプログラム:VBAで一括設定する方法

もし、大量の既存シートの日付を一括で「日付+曜日」形式に変換したい場合は、以下のVBAコードが非常に有効です。

Sub FormatDateWithDay()
‘ 選択範囲の日付表示形式を「yyyy/mm/dd(aaa)」に変更するマクロ
Dim targetRange As Range

‘ 選択されているセル範囲を対象にする
Set targetRange = Selection

‘ 表示形式を設定(ユーザー定義)
‘ yyyy/mm/dd(aaa) とすることで 2023/10/01(日) のように表示されます
targetRange.NumberFormatLocal = “yyyy/mm/dd(aaa)”

MsgBox “選択範囲の表示形式を日付と曜日に変更しました。”, vbInformation
End Sub

応用・注意点:現場で陥りやすいバグの回避策

最後に、実務でよくある注意点を2つ挙げます。

1. 「計算」への影響:
表示形式を変えても、中身はあくまで日付シリアル値です。そのため、WEEKDAY関数やIF関数で曜日判定を行う際、セルの見た目(文字列)ではなく、シリアル値に基づいて処理ができるため、非常に安全です。

2. 英語表記の罠:
海外支店とのやり取りがある場合、環境によって曜日が自動的に英語になる場合があります。明示的に日本語で表示させたい場合は、書式設定で「”(”aaa”)”」のように、あえてダブルクォーテーションで囲む癖をつけておくと、環境依存のトラブルを回避できます。

このテクニックをマスターすれば、帳票作成の工数が大幅に削減できます。ぜひ明日からの業務でお試しください。

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