概要
「桁数がバラバラの数字を、右にそろえて左側を 0 で埋めたい」
「文字列として扱いたいので、TEXT ではなく REPT で柔軟にやりたい」
そんなときに使えるのが REPT(指定文字のくり返し)+LEN(文字数) の組み合わせです。
ここでは、
- 「全体を何桁にそろえるか」を決める
- 足りない桁数ぶんだけ 0 を REPT で作る
- その右側に元の値をくっつける
という流れで、右詰めの 0 埋め を作る方法を、初心者向けにかみ砕いて説明します。
基本の考え方(REPT と LEN の役割)
REPT 関数とは
REPT は「指定した文字を、指定回数だけくり返す」関数です。
=REPT(文字列, 回数)
例:
=REPT("0", 3)
結果:「000」
=REPT("*", 5)
結果:「*****」
つまり、
「足りない桁数ぶん 0 を作る」係が REPT です。
LEN 関数とは
LEN は「文字列の長さ(文字数)」を返します。
=LEN(文字列)
例:
A2 に「123」が入っているとき、
=LEN(A2)
結果:3
A2 に「98765」が入っているときは 5 になります。
この LEN で「今の桁数」を調べて、
「全体の桁数 − 今の桁数 = 足りない桁数」を計算し、
その足りないぶんだけ REPT で 0 を作る、というのが定番パターンです。
基本:右詰め 0 埋めの標準形
4桁にそろえて右詰め 0 埋めする
A2 に「1」「12」「123」「1234」などが入っているとします。
これをすべて「4桁」にそろえて、左を 0 で埋めたい場合。
定番の式はこうなります。
=REPT("0", 4-LEN(A2)) & A2
動きをかみ砕くと、
LEN(A2)で今の桁数を求める
1 → 1桁、12 → 2桁、123 → 3桁…4 - LEN(A2)で「足りない桁数」を求める
1桁なら 3、2桁なら 2、3桁なら 1、4桁なら 0REPT("0", 足りない桁数)で左側の 0 を作る
3 → 「000」、2 → 「00」、1 → 「0」、0 → 「」(何もなし)- 最後に
& A2で、右側に元の値をくっつける
「000」&「1」 → 「0001」など
これで、「右に本来の値・左側に 0 埋め」という形になります。
桁数を変えたい場合
たとえば「6桁で右詰め 0 埋め」にしたいなら、4 の部分を 6 に変えるだけです。
=REPT("0", 6-LEN(A2)) & A2
A2=1 → 「000001」
A2=123 → 「000123」
A2=123456 → 「123456」(6桁なので 0 個)
「何桁にそろえたいか」= REPT("0", ここ − LEN(A2)) の“ここ”をいくつにするか、という考え方です。
応用:文字列にもそのまま使える
REPT+LEN の良いところは、「中身が数値でも文字列でも同じ式でいける」ことです。
たとえば A2 に「7」「A」「123」など、文字列として入っている場合でも、
=REPT("0", 4-LEN(A2)) & A2
で、
「0007」「000A」「0123」
のように、右詰めで 0 埋めされた“コード”が作れます。
コードやIDが文字+数字の混在でも、そのまま扱えるのが TEXT 関数との違いのひとつです。
応用:右詰めスペース埋めや他の文字でも応用可能
REPT は「0」に限らず、任意の文字を埋めることができます。
スペースで右詰めにしたい場合
たとえば、「全角文字を含むコードを、左にスペースを入れて右側をそろえたい」とき。
A2 を 10 文字幅で右詰めしたいなら、次のようなイメージです。
=REPT(" ", 10-LEN(A2)) & A2
結果は、左側にスペース、右端に文字列が寄った形になります
(見た目はフォントや全角/半角でズレることもあるので、あくまで文字数ベース)。
任意の記号で埋める
同じ仕組みで、
=REPT("*", 8-LEN(A2)) & A2
とすれば、******A1 のような“マスクされたコード”風にもできます。
TEXT との違いと使い分けのイメージ
右詰め 0 埋めだけなら TEXT でもできます。
=TEXT(A2,"0000")
との違いをざっくりいうと、
- TEXT
書式指定が楽。数値や日付に向いている。結果は文字列。 - REPT+LEN
「何文字か」「何を繰り返すか」を自分で制御したいときに強い。
文字列・数値の区別なく、“純粋に文字数ベースでパディングしたい”とき向き。
「0 埋めコードを作りたい」だけなら TEXT のほうが簡単です。
「0 以外も含めて、右詰めの仕組みそのものを理解しておきたい」なら、REPT+LEN の型を覚えておくと応用範囲が広がります。
問題1
A2 に「7」が入っています。
これを「4 桁右詰め 0 埋め」して、「0007」と表示したいです。
REPT と LEN を使った式を書いてください。
=REPT("0",4-LEN(A2)) & A2
問題2
A2 に「123」が入っています。
これを「6 桁右詰め 0 埋め」して、「000123」と表示したいです。
REPT と LEN を使った式を書いてください。
=REPT("0",6-LEN(A2)) & A2
問題3
A2 に「A9」という文字列が入っています。
これを 4 桁にそろえて右詰め 0 埋めし、「00A9」と表示したいです。
REPT と LEN を使った式を書いてください。
=REPT("0",4-LEN(A2)) & A2
問題4
A2 に任意の文字列が入り、その長さは行ごとに異なります。
これを「10 文字幅」にそろえ、左側をスペースで埋めて右詰めしたいです。
REPT と LEN を使った式を書いてください。
=REPT(" ",10-LEN(A2)) & A2
問題5
A2 に「12345」、B2 に「桁数」として 8 が入っています。
B2 の桁数に合わせて、A2 を右詰め 0 埋めし、「00012345」と表示したいです。
REPT と LEN を使い、桁数を B2 から参照する式を書いてください。
=REPT("0",B2-LEN(A2)) & A2
右詰め 0 埋めの本質は、この形です。
=REPT("0", 目標桁数 - LEN(元の文字列)) & 元の文字列
この「REPT+LEN の型」をひとつ覚えておくと、
0 だけでなくスペースや記号でも、自在に“右寄せパディング”ができるようになります。
