%20em%20uma%20entrada%20de%2018%20d%C3%ADgitos%3F.png)
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 |