それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

Excelの書式設定で数字を0埋めする。(ゼロパディング)

Excel で数字をゼロ埋めたい。

000123 のように数字を0で埋めることで、桁数が揃ったり、視認性があるので採用する人も多いと思います。

また、最大桁数が一瞥してわかるのも魅力ですね。

ゼロ埋めはヒューマンインタフェース*1として、対人間との情報のやり取りとして非常に優秀です。

数字をゼロ埋めにする書式設定

次のような、セルがあるときに

f:id:takuya_1st:20190909142609p:plain ( A列は比較用です

セルの書式設定→その他

セルの書式設定を呼び出します。

f:id:takuya_1st:20190909142621p:plain

書式設定で0をたくさん書きます。

ゼロの数でゼロ埋めの個数が決まります。

 0000: 123→ 0123
00000: 123→00123

今回は、0 を6つ書きました。

f:id:takuya_1st:20190909142636p:plain

000 の場合です。

では、最大桁数より少ないゼロの数を指定したらどうなるでしょうか。

結果は次のようになります。 f:id:takuya_1st:20190909144642p:plain

二回目以降はユーザー定義

一度書式を指定したら、次から、ユーザー定義に出現します。

そこから選ぶのが速いでしょう。

ユーザー定義書式に名前をつけられたいいのにな。

数字?文字?

数字のゼロ埋め 00123 のように記載するのは、文字列と数値をごっちゃにするので、あまりよろしくないのですが。

何がよろしくいかというと、数字であるところを、文字列にしてしまう方がいらっしゃいます。

さら悪いことには、ごっちゃにする方々への予防策のために、担当者が「うちでは0埋めを採用しない」とか「0埋めをみたら文字列だと思え」などと、謎なローカル・ルールが誕生してたりします。
声の大きいひとの意見が通るのは良くないですよね。理性的に行動してほしい。

セルの値を「数字」としてあつかい、表示の書式設定で0を補って数字を書式表示するのが正しい。

Excel ワールド

プログラミングを習ったことがある人だと printf(%06d, 134 ) のような printf による書式を考えてしまいがちです。

しかし、ExcelVBAには GNU bash のような 組み込み printf も、C言語のような stdio による printf もありません。

Excelにはエクセルの流儀があり、プログラミングの世界にはプログラミングの流儀があがります。

私はプログラマなので、これをExcel異世界だと思うようにしています。プログラミングとExcelの世界は似ていますが、違いますね。

「郷に入れば郷に従え」の通り、あれこれローカルルールや独自基準をつくらず、素直な解決方法を受け入れるようにしたいです。

*1:今どきの呼び方をするなら、UI/UXでしょうか