既存のExcel値に先行ゼロ/ 0を特定の長さに追加します


299

ExcelへのインポートまたはExcelからのエクスポート時に先頭のゼロが削除されないようにする方法に関して、SOには多くの質問と質の高い回答があります。しかし、実際には値が文字列として処理されるべきだったときに、数値として切り捨てられた値が含まれているスプレッドシートがすでにあります。データをクリーンアップして、先頭にゼロを追加する必要があります。

文字列が4文字になるように先行ゼロを埋め込んだ4文字であるフィールドがあります。しかしながら:

"23" should be "0023", 
"245" should be "0245", and
"3829" should remain "3829"

質問:これらの0を4つの文字になるようにこれらの値に埋め戻すExcel式はありますか?

注:これは、ニューイングランド地域の郵便番号の先頭のゼロが削除され、元に戻す必要があるという古い郵便番号の問題に似ています。


期間はそこにあるはず"3829."ですか?
Josh Lee

いいえ。ただし、「。」の適切な位置です。私のStrunk&Whiteの信頼できるコピーによると、文中の文字。わかりやすくするために削除しました。
マークA

7
私はそれをコードブロックの中に置いたことを除いて、それを受け入れます。(また、Excelはすべての数値を浮動小数点数として格納するため、小数点以下の桁数になる可能性があります。)
Josh Lee

4
@joshは、「それ以外は受け入れる」という正しいスペルの賛成票を投じます。
Michiel van der Blonk 2015

回答:


506
=TEXT(A1,"0000")

ただし、TEXT関数は、日付の書式設定など、その他の高度な機能も実行できます。


4
ああ、神様!パーフェクト!あなたは毎日何か新しいことを学びます。私は複数の犬耳のExcelの本さえ持っていて、これに出くわしたことはありません-将来、Excelベースの郵便番号データを壊したときはいつでも使用します。
マークA

1
これは10進数でうまく動作します...しかし、16進数はどうですか?先頭の0を使用する方法が見つかりません...
Shadow

10
@shadow Excelの16進数は文字列であり、数値ではありません。したがって、それを文字列として処理します=RIGHT("0000" + A1, 4)
GSerg

8
@ shadow、DEC2HEXは場所の引数を取ります。したがって、=DEC2HEX(HEX2DEC(A1),4)16進数を埋めるのに適しています。
Raz Wilson

9
@mcs彼らは構文を変更しませんでした。Excelのバージョンは、Windows言語設定から取得するパラメーターセパレーターとして使用さ;れます。
GSerg

78

これを行うためのより効率的な(目立たない)方法は、カスタム書式設定を使用することです。

  1. スタイルを設定する列/配列を強調表示します。
  2. ctrl+ 1または[ フォーマット]-> [セルのフォーマット]をクリックします。
  3. [数値]タブで、[カスタム]を選択します。
  4. カスタム書式を000#に設定します。(ゼロゼロゼロ#)

これは実際にはセルの値を変更しないことに注意してください。ワークシートの先行ゼロのみが表示されます。


8
これは、元のセルを越えて先行ゼロを保持する必要がない場合はうまく機能しますが、文字列を他の場所で使用する必要がある場合は機能しません。これにより、セルは0004、01032、0284として表示されますが、別のセルで文字列を結合しようとすると、たとえば、目的の0004-01032-0284ではなく4-1032-284と表示されます
アシュトンシート

@AshtonSheetsはい、私が答えで指摘したように、それは先行ゼロを表示するだけで、実際の値には何もしません。ただし、=text()便利で数式が不足しているため、代わりにこれを使用する状況がありました。
モーセ

7
参考までに、これは実際には0000である必要があります000#。それ以外の場合は0では動作しません
PearsonArtPhoto

2
上記の私の問題のある人にとっての答えは、#(ハッシュ)を0(ゼロ)に交換することでした。値がない場合、#は文字を与えませんが、値がない場合、0は0を与えます!理にかなっていてうまく機能します:$ 0.0 ,, "M"
Andrew

1
また、明らかにこれは短い形式番号の唯一の役に立つなど000#を使用して私のために仕事をしませんでしたが、6のために000000、4桁の数字、5のための00000のための0000のように私は指定されたカスタム書式を働いた
ヒラリー

16

16進数の値を埋め込もうとしてこのページにアクセスしたところDEC2HEX()、その機能が無料で提供されていることに気付きました。

2番目のパラメーターを追加するだけです。たとえば、=> => ... に変わること12を結ぶなど0C
DEC2HEX(12,2)0C
DEC2HEX(12,4)000C


9

これがExcel 2013の新機能かどうかはわかりませんが、列を右クリックして「特別」と言うと、郵便番号と郵便番号+ 4の定義済みオプションがあります。マジック。

ここに画像の説明を入力してください


6
素晴らしい提案と更新。誰でもSSNをスプレッドシートに保存するように促すには、マイクロソフトに-1を与える必要があります。
マークA

8

私はこれが少し前に答えられたことを知っていますが、ここで私が驚いたことのある簡単な解決策を単に鳴らすことは言及されませんでした。

=RIGHT("0000" & A1, 4)

パッドが必要なときはいつでも、上記のようなものを使用します。個人的には、これが最も簡単なソリューションであり、読みやすいと思います。


1

カスタムフォーマットを使用していて、それらの値を他の場所に連結する必要がある場合は、それらをコピーして、シートの別の場所(または別のシート)の[形式を選択して貼り付け]-> [値]に貼り付け、それらの値を連結できます。


1

これでもうまくいきます

REPT(0,2-LEN(F2)&F2

ここで、2は合計桁数です。0〜9の場合、00〜09と表示されます。残りは何も追加されません。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.