Como posso personalizar o formato no Excel para colocar pontos (como separadores) em uma entrada de 18 dígitos?

Como posso personalizar o formato no Excel para colocar pontos (como separadores) em uma entrada de 18 dígitos?

Trata-se de códigos contábeis de 18 dígitos que contêm vários períodos, como separadores. Gostaria de inserir apenas os dígitos sem digitar os pontos. Exemplo:

112233333444555556

formataria automaticamente como

11.22.33333.444.55555.6

Eu usei esta fórmula:

??"."??"."?????"."???"."?????"."?

que funciona, exceto o último dígito sempre aparece como 0

Como esse código deve ser alterado para aceitar qualquer numeral digitado no último espaço?

Responder1

Aqui está o código VBA que monitora a coluna A e adiciona pontos quando a entrada de texto tem 18 caracteres. Selecione a coluna inteira e o formato é Texto, então você pode digitar ou colar o código de 18 dígitos.

Private Sub Worksheet_Change(ByVal Target As Range)
Dim s As String
If Not Intersect(Target, Range("A:A")) Is Nothing Then
    Application.EnableEvents = False
    If Len(Target) = 18 Then
        s = Left(Target, 2) & "." & _
        Mid(Target, 3, 2) & "." & _
        Mid(Target, 5, 5) & "." & _
        Mid(Target, 10, 3) & "." & _
        Mid(Target, 13, 5) & "." & _
        Right(Target, 1)
        Target.Value = s
    End If
Application.EnableEvents = True
End If

End Sub

Responder2

Como mencionado por @teylyn, o Excel segue a especificação IEEE 754 para números de ponto flutuante e só pode armazenar 15 dígitos significativos. A solução alternativa mais fácil e não macro é dividir a fórmula em duas partes (os 15 dígitos mais à esquerda e os dígitos restantes mais à direita).

=TEXT(
   LEFT([input], 15), format_left
 ) & 
 TEXT(
   RIGHT([input], LEN([input]) - 15), format_right
 )

ou seja

= TEXT(LEFT(A2,15),"00-00-00000-000-000") & TEXT(RIGHT(A2,3),"00-0")

| Account number     | Account number (formatted) |
| ------------------ | -------------------------- |
| 112233333444555556 | 11-22-33333-444-55555-6    |

informação relacionada