日付の表示を揃える時 表示形式をユーザー定義で「yyyy"年"mm"月"dd"日"」のようにする方が多いと思います。等幅フォントを使っていれば
これできれいに左右の幅が揃います。ただ月や日が一桁の時に表示される「0」を邪魔だと感じたことはないでしょうか。
こうできたらいいなと考えたことはありませんか? しかし「0」を「 」に置換えようと 色々試行錯誤してみたところで それは徒労に終わることでしょう。何故なら
Excelの日付は 見た目はともかく実際の値は「39654」のようなシリアル値で管理されています。「年・月・日の2桁目がゼロの時」という条件は
どうあがいても表示形式で判断させることはできません。日付の書式をスペースで揃えるには上の画像のように 別のセルに数式を使って文字列として表示させる必要があります。
まずはシリアル値を一定の書式の文字列に変更する必要があります。「39654」ではどうしようもありません。この計算にはTEXT関数を使います。
■B1セル
=TEXT(A1,"g.ee.mm.dd")
これでまずは書式が揃いました。「g」の後にも「.」を入れているのがミソです。さて この時 B7セルに注目して下さい。空白セルが「M.33.01.00」になってしまいましたね。Excelでは「式の計算結果の
空白は0として扱われる」というルールがあります。シリアル値の「0」は「1900年1月0日」として扱われるので 上のような表示になってしまいます。これを避けるのは簡単で
式で計算する前に空白を文字列にしておけばいいです。
■B1セル
=TEXT(A1&"","g.ee.mm.dd")
「&」を入れることで 空白は文字列として扱われ TEXT関数の結果が文字列表示に振り分けられます。これによって「結果なし」は「
空白文字列」として返されます。
上記の表の2桁目の「0」に注目してみると その前の文字が必ず「.」だということに気付くと思います。これによって1桁目の「0」と区別させることが可能になります。SUBSTITUTE関数で「.」&「0」を「.」&「
」に置き換えてやります。
■B1セル
=SUBSTITUTE(TEXT(A1&"","g.ee.mm.dd"),".0",".
")
これでほぼ式は完成です。最後に頭の記号の後ろについた「.」が邪魔なので これを取り除いてやります。
■B1セル
=REPLACE(SUBSTITUTE(TEXT(A1&"","g.ee.mm.dd"),".0",".
"),2,1,"")
これで完成です。おそらく自分でわざわざ使うことはないと思いますが「人からの要望でどうしても」という時に 使える方法だと思います。
→参考ファイル(040.xls)