VBA를 사용하는 Ultimate 1000 구분 기호

Aug 16 2020

내 경우에는 수식을 사용할 수 없으며 사용자 지정 코드로 수행해야하므로 1000 구분 기호에 대한 VBA 솔루션을 얻으려고 노력했습니다. 현재 솔루션은 필요한 경우 수천 개의 구분 기호 및 십진수를 사용하는 숫자 형식 에서 가져옵니다.

다음은 코드입니다.

Function CustomFormat(InputValue As Double) As String
    CustomFormat = Format(InputValue, "# ###")
    If (Right(CustomFormat, 1) = ".") Then
        CustomFormat = Left(CustomFormat, Len(CustomFormat) - 1)
    End If
End Function

1000과 같은 숫자에 대해서는 작동하지만 1000000에는 작동하지 않습니다. 또한 1000000000은 작동하지 않습니다. 나는 현재 해결책을 연구하고 있지만 누군가가 공유 할 것이 있다면 감사 할 것입니다.

원래 솔루션을 사용하는 경우 :

Function CustomFormat(InputValue As Double) As String
    CustomFormat = Format(InputValue, "#,###.##")
    If (Right(CustomFormat, 1) = ".") Then
        CustomFormat = Left(CustomFormat, Len(CustomFormat) - 1)
    End If
End Function

답변

5 SuperSymmetry Aug 16 2020 at 19:40

vba에는 지역 설정에 정의 된 수천 개의 구분자가 필요하다고 생각합니다. 귀하의 경우에는 쉼표이므로 다음과 같이 할 수 있습니다.

Function CustomFormat(InputValue As Double) As String
    CustomFormat = Format(InputValue, "#,###")
    If (Right(CustomFormat, 1) = ".") Then
        CustomFormat = Left(CustomFormat, Len(CustomFormat) - 1)
    End If
    CustomFormat = Replace(CustomFormat, ",", " ")
End Function

또 다른 방법은 레지스트리에서 구분 기호를 읽는 것입니다. 이것은 다른 지역 설정에서 작동합니다.

Function CustomFormat(InputValue As Double) As String
    Dim sThousandsSep As String
    Dim sDecimalSep As String
    Dim sFormat As String
    
    sThousandsSep = Application.International(xlThousandsSeparator)
    sDecimalSep = Application.International(xlDecimalSeparator)
    
    ' Up to 6 decimal places
    sFormat = "#" & sThousandsSep & "###" & sDecimalSep & "######"
    
    CustomFormat = Format(InputValue, sFormat)
    If (Right$(CustomFormat, 1) = sDecimalSep) Then CustomFormat = Left$(CustomFormat, Len(CustomFormat) - 1)
    End If
    
    ' Replace the thousands separator with a space
    ' or any other character
    CustomFormat = Replace(CustomFormat, sThousandsSep, " ")
End Function

Application.International@RonRosenfeld가 제안한대로 사용하도록 변경된 기능을 편집합니다 .

1 TinMan Aug 16 2020 at 23:38

더 큰 숫자를 포함하려면 숫자 형식을 확장해야합니다.

### ### ## 0 ","