Excel関数 逆引き集 | 右詰め0埋め → REPT

Excel
スポンサーリンク

概要

「桁数がバラバラの数字を、右にそろえて左側を 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

動きをかみ砕くと、

  1. LEN(A2) で今の桁数を求める
    1 → 1桁、12 → 2桁、123 → 3桁…
  2. 4 - LEN(A2) で「足りない桁数」を求める
    1桁なら 3、2桁なら 2、3桁なら 1、4桁なら 0
  3. REPT("0", 足りない桁数) で左側の 0 を作る
    3 → 「000」、2 → 「00」、1 → 「0」、0 → 「」(何もなし)
  4. 最後に & 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 だけでなくスペースや記号でも、自在に“右寄せパディング”ができるようになります。

Excel
スポンサーリンク
シェアする
@lifehackerをフォローする
スポンサーリンク
タイトルとURLをコピーしました