2

Это касается 18-значных учетных кодов, которые содержат несколько периодов в качестве разделителей. Я хотел бы ввести только цифры без ввода периодов. Пример:

112233333444555556

будет автоматически форматировать как

11.22.33333.444.55555.6

Я использовал эту формулу:

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

который работает за исключением последней цифры всегда появляется как 0

Как изменить этот код, чтобы принять любую цифру, введенную в последнем пробеле?

2 ответа2

3

Вот код 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
0

Как уже упоминалось @ teylyn, Excel следует спецификации IEEE 754 для чисел с плавающей запятой и может хранить только 15 значащих цифр. Самый простой обходной путь, не связанный с макросами, - это разбиение формулы на две части (самые левые 15 цифр и самые правые оставшиеся цифры).

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

т.е.

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .