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

2

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

112233333444555556

seria formatado automaticamente como

11.22.33333.444.55555.6

Eu usei essa fórmula:

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

que funciona com exceção do último dígito sempre aparece como 0

Como este código deve ser alterado para aceitar qualquer numeral como inserido no último espaço?

    
por Mary Ann Ours 13.02.2016 / 00:40

2 respostas

3

Aqui está o código VBA que monitora a coluna A e adiciona os pontos quando a entrada de texto tiver 18 caracteres. Selecione a coluna inteira e o formato é como 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
    
por 13.02.2016 / 01:13
0

Como mencionado por @ teylyn , o Excel segue a especificação IEEE 754 para números de ponto flutuante e pode armazenar apenas 15 dígitos. A solução alternativa mais fácil e não macro é dividir a fórmula em duas partes (a maioria dos 15 dígitos à esquerda e os dígitos restantes da 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    |
    
por 15.02.2016 / 18:17