如何在 Excel 中自訂格式以在 18 位數條目中放置句點(作為分隔符號)?

如何在 Excel 中自訂格式以在 18 位數條目中放置句點(作為分隔符號)?

這是關於包含多個句點作為分隔符號的 18 位元會計代碼。我想只輸入數字而不輸入句點。例子:

112233333444555556

會自動格式化為

11.22.33333.444.55555.6

我用過這個公式:

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

除了最後一位數字始終為 0 之外,它的工作原理

應如何更改此代碼以接受最後一個空格中輸入的任何數字?

答案1

下面是監視 A 列並在文字輸入有 18 個字元時添加點的 VBA 代碼。選擇整列,格式為文本,然後您可以鍵入或貼上 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    |

相關內容