如何在 Excel 中自定义格式以在 18 位数字的条目中放置句点(作为分隔符)?

如何在 Excel 中自定义格式以在 18 位数字的条目中放置句点(作为分隔符)?

这是关于包含多个句点作为分隔符的 18 位会计代码。我想只输入数字而不输入句点。示例:

112233333444555556

将自动格式化为

11.22.33333.444.55555.6

我使用过这个公式:

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

除了最后一位数字总是为 0 之外,其他都有效

应如何更改此代码才能接受在最后一个空格中输入的任何数字?

答案1

这是 VBA 代码,用于监控 A 列,并在文本输入包含 18 个字符时添加点。选择整个列并将格式设为文本,然后您可以键入或粘贴 18 位代码。

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

答案2

正如@所提到的泰林,Excel 遵循 IEEE 754 浮点数规范,只能存储 15 位有效数字。最简单的非宏解决方法是将公式分成两部分(最左边的 15 位数字和最右边的剩余数字)。

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

IE

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

相关内容