¿Cómo puedo personalizar el formato en Excel para colocar puntos (como separadores) en una entrada de 18 dígitos?

¿Cómo puedo personalizar el formato en Excel para colocar puntos (como separadores) en una entrada de 18 dígitos?

Se trata de códigos contables de 18 dígitos que contienen múltiples períodos, a modo de separadores. Me gustaría ingresar solo los dígitos sin escribir los puntos. Ejemplo:

112233333444555556

se formatearía automáticamente como

11.22.33333.444.55555.6

He usado esta fórmula:

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

que funciona excepto por el último dígito siempre aparece como 0

¿Cómo se debe cambiar este código para aceptar cualquier número ingresado en el último espacio?

Respuesta1

Aquí está el código VBA que monitorea la columna A y agrega los puntos cuando la entrada de texto tiene 18 caracteres. Seleccione toda la columna y el formato sea Texto, luego puede escribir o pegar el 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

Respuesta2

Como lo menciona @teylyn, Excel sigue la especificación IEEE 754 para números de punto flotante y solo puede almacenar 15 dígitos significativos. La solución alternativa más sencilla y no macro es dividir la fórmula en dos partes (los 15 dígitos situados más a la izquierda y los dígitos restantes más a la derecha).

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

es decir

= 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    |

información relacionada