【VBAリファレンス|実務向け】日付の表示で日にちの桁数を揃える|Excel 実務テクニック

スポンサーリンク

導入: なぜ日付の桁揃えが重要なのか

実務において、見積書や請求書、あるいは日報などのリストを作成する際、日付の表示がバラバラだと非常に見栄えが悪く、視認性が低下します。例えば「1月1日」を「1/1」と表示し、「1月10日」を「1/10」と表示すると、桁数が異なるために数字の列が揃わず、表としての美しさを損ないます。今回は、Excelの「表示形式」をカスタマイズして、日付の見た目をピシッと揃える方法を解説します。

基礎知識: 表示形式の「ユーザー定義」とは

Excelのセルに日付を入力すると、通常は「2023/1/1」や「1/1」といった形式で表示されます。これは、Excelがセルの値を「日付データ」として認識しているからです。この見え方を制御するのが「表示形式」です。
特にユーザー定義を使用すると、Excelにあらかじめ用意されていない自由な書式を作ることができます。例えば、「d」は日を1桁または2桁で表示、「dd」は常に2桁(1日の場合は「01」)で表示するというルールがあります。

実装: 桁数を揃えるための具体的な手順

日付の桁数を揃えるには、主に2つのアプローチがあります。

1. 「dd」を使って強制的に2桁にする
もっともスマートな方法は、表示形式を「m/dd」にすることです。これだけで、1日は「01」、10日は「10」となり、桁数が揃います。

2. スペースを入れて調整する
もし「01」という表記ではなく、1桁の数字を右詰め気味にしたい場合は、ユーザー定義で「m/” “d」のように記述します。これにより、1桁の数字の前に半角スペースが挿入され、視覚的に揃って見えるようになります。

サンプルプログラム: VBAで動的に書式を設定する

実務では、マクロを使って大量のデータの日付を一括整形することも多いでしょう。以下に、選択した範囲の日付を「2桁表示(dd)」に統一するコードを記載します。

Sub FormatDateToDoubleDigits()
    ' 選択範囲の日付表示を「月/日(2桁)」に統一するマクロ
    ' 実行前に対象の日付範囲を選択してください
    
    Dim rng As Range
    Set rng = Selection
    
    ' 表示形式を「m/dd」に設定
    ' これにより、1日は「01」、10日は「10」と表示されます
    rng.NumberFormatLocal = "m/dd"
    
    MsgBox "日付の表示形式を2桁に統一しました。"
End Sub

応用・注意点: 現場で役立つアドバイス

注意点: ユーザー定義でスペースを入れる手法(m/” “d)は、あくまで見た目上の調整です。2桁の日付(10日以降)にはスペースが入らないため、1桁の日付と2桁の日付が混在するリストでは、数値の配置が厳密には揃わない可能性があります。
現場でのベストプラクティス:
実務でレポートを作成する際は、数字の桁を完全に揃えたい場合、「dd」を使って「01, 02…」と表示させるのが最もバグが少なく、管理しやすいです。
また、VBAで書式を操作する際は、`NumberFormat`ではなく`NumberFormatLocal`を使うと、PCの地域設定に左右されず意図した書式を適用できるため、配布用ブックには推奨されます。

ぜひ、日々の帳票作成の際に活用してみてください。

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