Adicione zeros / 0 iniciais aos valores existentes do Excel com um determinado comprimento

299

Existem muitas, muitas perguntas e respostas de qualidade no SO relacionadas a como impedir que os zeros à esquerda sejam removidos ao importar ou exportar do Excel. No entanto, eu já tenho uma planilha com valores truncados como números quando, na verdade, eles deveriam ter sido tratados como seqüências de caracteres. Preciso limpar os dados e adicionar os zeros à esquerda novamente.

Há um campo que deve ter quatro caracteres, com zeros à esquerda preenchendo a string com quatro caracteres. Contudo:

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

Pergunta: Existe uma fórmula do Excel para colocar esses 0 de volta nesses valores, para que eles tenham todos os quatro caracteres?

Nota: isso é semelhante ao problema antigo do CEP, em que os códigos postais da região da Nova Inglaterra recebem seu zero inicial e você precisa adicioná-los novamente.

Mark A
fonte
O período deveria estar aí "3829."?
Josh Lee
Não, mas essa é a posição correta para um "." personagem na frase de acordo com minha cópia fiel de Strunk & White. Removido para maior clareza.
Mark A
7
Eu aceitaria isso, exceto que estava em um bloco de código, no qual costumo interpretar as coisas de maneira mais literal. (Além disso, Excel armazena todos os números como um flutuador, de modo que poderia ter sido uma casa decimal.)
Josh Lee
4
@josh voto positivo por ortografia correta "aceite isso, exceto isso".
Michiel van der Blonk

Respostas:

506
=TEXT(A1,"0000")

No entanto, a função TEXTO é capaz de fazer outras coisas sofisticadas, como formatação de data, além disso.

GSerg
fonte
4
AMD! Perfeito! Você aprende algo novo todos os dias. Eu tenho vários livros em Excel e nunca me deparei com isso - usarei sempre que eu tiver mutilado dados de códigos postais baseados em Excel no futuro.
Mark A
1
Isso funciona bem com números decimais ... mas e o hexadecimal? Não consigo encontrar uma maneira de tornar líder 0s trabalho com ele ...
Sombra
10
@shadow O número hexadecimal do Excel é uma string, não um número. Então, lidar com isso como uma string: =RIGHT("0000" + A1, 4).
GSerg
8
@shadow, DEC2HEX leva um argumento lugares. Portanto, =DEC2HEX(HEX2DEC(A1),4)funciona bem para preencher números hexadecimais.
precisa
9
@mcs Eles não mudaram a sintaxe. Sua versão do Excel é usada; como separador de parâmetros, que é usado nas configurações de idioma do Windows.
GSerg
78

A maneira mais eficiente (menos invasiva) de fazer isso é através da formatação personalizada.

  1. Destaque a coluna / matriz que você deseja estilizar.
  2. Clique em ctrl+ 1ou Formatar -> Formatar células.
  3. Na guia Número, escolha Personalizado.
  4. Defina a formatação personalizada como 000 #. (zero zero zero #)

Observe que isso realmente não altera o valor da célula. Ele exibe apenas os zeros à esquerda na planilha.

Moisés
fonte
8
Isso funciona muito bem se não for necessário reter os zeros à esquerda da célula original, mas não funcionará se as cadeias precisarem ser usadas em qualquer outro lugar. Isso faria com que as células fossem exibidas como 0004, 01032, 0284, mas se você tentasse combinar as seqüências em uma célula separada, mostraria, por exemplo, 4-1032-284 em vez do 0004-01032-0284 desejado
Ashton Sheets
@AshtonSheets sim, como observei na resposta, ele exibe apenas os zeros à esquerda, mas não faz nada com o valor real. No entanto, houve situações em que eu usei isso em vez de =text()por sua conveniência e falta de fórmula envolvida.
Moses
7
Para referência, isso realmente deveria ser 0000, não 000#. Caso contrário, não funciona para 0. #
PearsonArtPhoto 17/03
2
Para aqueles com meu problema acima, a resposta foi trocar # (hash) por 0 (zero). O # não dá nenhum caractere quando não há valor, mas o 0 dá zero quando não há valor! Faz sentido e funciona muito bem: US $ 0,0 ,, "M"
Andrew
1
Também não funcionou para mim usando 000 #, mas funcionou quando eu apenas especificado formato personalizado como 0000 para um número de quatro dígitos, 00000 para cinco, 000000 para seis etc. Obviamente, isso só é útil para formatar números mais curtos
Hilary
16

Eu bati nesta página tentando preencher valores hexadecimais quando percebi que DEC2HEX()fornece esse recurso gratuitamente .

Você só precisa adicionar um segundo parâmetro. Por exemplo, tentando se transformar 12em 0C
DEC2HEX(12,2)=> 0C
DEC2HEX(12,4)=> 000C
... e assim por diante

MonoThreaded
fonte
9

Não tenho certeza se isso é novo no Excel 2013, mas se você clicar com o botão direito do mouse na coluna e dizer "Especial", na verdade, há uma opção predefinida para CEP e CEP + 4. Magic.

insira a descrição da imagem aqui

ProVega
fonte
6
Ótima sugestão e atualização. É necessário atribuir -1 à Microsoft para incentivar qualquer pessoa a armazenar SSNs em uma planilha.
Mark A
8

Eu sei que isso foi respondido há um tempo atrás, mas apenas com uma solução simples aqui, estou surpreso por não ter sido mencionado.

=RIGHT("0000" & A1, 4)

Sempre que preciso de almofada, uso algo como o descrito acima. Pessoalmente, acho a solução mais simples e mais fácil de ler.

zgirod
fonte
1

Se você usar formatação personalizada e precisar concatenar esses valores em outro local, poderá copiá-los e Colar Especial -> Valores em outro local da planilha (ou em uma planilha diferente) e concatenar esses valores.

JeffK627
fonte
1

Mesmo isso vai funcionar bem

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

onde 2 é o número total de dígitos, para 0 ~ 9 -> ele exibirá de 00 a 09 resto, nada será adicionado.

user2902302
fonte