%EB%A5%BC%20%EB%B0%B0%EC%B9%98%ED%95%98%EA%B8%B0%20%EC%9C%84%ED%95%B4%20Excel%EC%97%90%EC%84%9C%20%ED%98%95%EC%8B%9D%EC%9D%84%20%EC%82%AC%EC%9A%A9%EC%9E%90%20%EC%A0%95%EC%9D%98%ED%95%98%EB%A0%A4%EB%A9%B4%20%EC%96%B4%EB%96%BB%EA%B2%8C%20%ED%95%B4%EC%95%BC%20%ED%95%A9%EB%8B%88%EA%B9%8C%3F.png)
이는 구분 기호로 여러 마침표가 포함된 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
)
즉
= 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 |