Excel で数字をゼロ埋めたい。
000123 のように数字を0で埋めることで、桁数が揃ったり、視認性があるので採用する人も多いと思います。
また、最大桁数が一瞥してわかるのも魅力ですね。
ゼロ埋めはヒューマンインタフェース*1として、対人間との情報のやり取りとして非常に優秀です。
数字をゼロ埋めにする書式設定
次のような、セルがあるときに
( A列は比較用です
セルの書式設定→その他
セルの書式設定を呼び出します。
書式設定で0をたくさん書きます。
ゼロの数でゼロ埋めの個数が決まります。
0000: 123→ 0123 00000: 123→00123
今回は、0 を6つ書きました。
000 の場合です。
では、最大桁数より少ないゼロの数を指定したらどうなるでしょうか。
結果は次のようになります。
二回目以降はユーザー定義
一度書式を指定したら、次から、ユーザー定義に出現します。
そこから選ぶのが速いでしょう。
ユーザー定義書式に名前をつけられたいいのにな。
数字?文字?
数字のゼロ埋め 00123 のように記載するのは、文字列と数値をごっちゃにするので、あまりよろしくないのですが。
何がよろしくいかというと、数字であるところを、文字列にしてしまう方がいらっしゃいます。
さら悪いことには、ごっちゃにする方々への予防策のために、担当者が「うちでは0埋めを採用しない」とか「0埋めをみたら文字列だと思え」などと、謎なローカル・ルールが誕生してたりします。
声の大きいひとの意見が通るのは良くないですよね。理性的に行動してほしい。
セルの値を「数字」としてあつかい、表示の書式設定で0を補って数字を書式表示するのが正しい。
Excel ワールド
プログラミングを習ったことがある人だと printf(%06d, 134 )
のような printf による書式を考えてしまいがちです。
しかし、ExcelのVBAには GNU bash のような 組み込み printf も、C言語のような stdio による printf もありません。
Excelにはエクセルの流儀があり、プログラミングの世界にはプログラミングの流儀があがります。
私はプログラマなので、これをExcel異世界だと思うようにしています。プログラミングとExcelの世界は似ていますが、違いますね。
「郷に入れば郷に従え」の通り、あれこれローカルルールや独自基準をつくらず、素直な解決方法を受け入れるようにしたいです。
*1:今どきの呼び方をするなら、UI/UXでしょうか