Concatenando números com zeros à esquerda

2

Eu estou tentando combinar / concatenar números em colunas diferentes em um número longo. Alguns dos números têm zeros à esquerda por causa dos formatos personalizados aplicados às células. Quando os concateno juntos, os zeros são removidos. Alguém sabe como a fórmula deve ficar para que os zeros à esquerda não sejam removidos?

Exemplo:
A1 = 08,
B1 = 7,
C1 = 0,
D1 = 17,
E1 = 00
F1 = 01
G1 = número concentrado de A1 para F1

O número resultante deve ser 0870170001 no entanto, o número a seguir aparece 8701701.

Eu estou usando o Excel 2010, e esta é a fórmula que eu tentei: =CONCATENATE(A1;B1;C1;D1;E1;F1).

Helpneeded
fonte
1
Números não pode ter zeros à esquerda porque "3" e "03" são dois diferentes representações do mesmo número . Números confusos com representações numéricas não causarão problemas no uso de computadores e, principalmente, programação deles.
David Schwartz

Respostas:

2

Você maio não precisa do; mas, em vez disso, use uma vírgula para mostrar que cada um é um valor de string separado (isso pode depender das configurações de localização - Obrigado Bob).

=CONCATENATE(A1,B1,C1,D1,E1,F1)

No entanto, você precisará verificar se as células com os números estão formatadas em texto, destacando a linha e, na faixa de opções Início, na guia Número, na lista suspensa, selecione 'Texto'.

enter image description here

Dave
fonte
2
Eu acho que o Excel usa ponto-e-vírgula ao invés de vírgulas para separar os parâmetros em algumas localizações ... (IIRC são os que usam vírgulas para indicar o ponto decimal [ponto de radix])
Bob
Obrigado @Bob, eu não percebi isso. Atualizando a resposta de acordo (embora cautelosamente)
Dave
Existe uma maneira de combinar colunas formatadas como "personalizadas" e não como "texto"?
Helpneeded
Você pode concatenar a maioria das células formatadas (mas não se dá bem com casas decimais, a menos que seja uma string). A questão é se a célula exibe os dados como você deseja.
Dave
Se os dados do usuário estiverem em um formato personalizado, a alteração do formato da célula para Texto alterará a exibição dos dados e alterará o que é passado para a fórmula de concatenação. Por esse motivo, alterar o formato não é uma solução.
Excellll
0

Pelo seu comentário, vejo que suas células provavelmente têm formatos personalizados, e o valor exibido nessas células provavelmente é diferente do valor inserido (por exemplo, "8" é exibido como "08"). Neste caso, você pode concatenar cada valor envolto em um TEXT função com o formato especificado da célula. Por exemplo, se A1 tem formato personalizado "00", você usaria TEXT(A1,"00") como o termo para A1 na sua fórmula de concatenação. Para a fórmula completa, você pode ter algo assim:

=TEXT(A1,"00")&TEXT(B1,"@")&TEXT(C1,"0")&...

Claro, isso é tedioso, pois exige que você recrie manualmente o formato de cada célula. Se você for usar muito isso com muitos formatos variados, eu diria que esta é uma oportunidade perfeita para usar uma função VBA para fazer o trabalho pesado. Você pode colar o seguinte código em um módulo no VBA Editor (aberto pressionando Alt + F11 ).

Public Function CONCATwFORMATS(rng1 As Range) As String
Dim tmpstr As String, tmpFormat As String
Dim c As Range

For Each c In rng1
    tmpFormat = c.NumberFormat
    If tmpFormat = "General" Then
        tmpstr = tmpstr & c.Value
    Else
        tmpstr = tmpstr & Format(c.Value, tmpFormat)
    End If
Next c
CONCATwFORMATS = tmpstr
End Function

Então, você pode usar a seguinte fórmula em G1.

=CONCATwFORMATS(A1:F1)

Esta é apenas uma tentativa rápida neste código, portanto, observe dois requisitos da função:

  1. Leva apenas um intervalo contíguo como argumento.
  2. Ele concatena os valores na ordem da esquerda para a direita (e de cima para baixo).

O código pode ser ajustado para remover essas restrições, mas para o que você quer, parece que isso funcionará bem.

Excellll
fonte