Bộ tách cuối cùng 1000 sử dụng VBA
Tôi đã cố gắng tải giải pháp VBA cho dấu phân tách 1000 vì trong trường hợp của tôi, không thể sử dụng công thức và phải được thực hiện với mã tùy chỉnh. Giải pháp hiện tại được lấy từ Định dạng số câu trả lời với Dấu phân cách hàng nghìn và Số thập phân nếu cần thiết
Đây là mã:
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
Nó đang hoạt động với những con số như 1000, nhưng nó không hoạt động với 1000000. Ngoài ra 1000000000 sẽ không hoạt động. Tôi hiện đang nghiên cứu giải pháp, nhưng nếu ai đó có điều gì đó để chia sẻ, nó sẽ được đánh giá cao.
Trong trường hợp sử dụng giải pháp gốc:
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

Trả lời
Tôi nghĩ vba cần dấu phân tách hàng nghìn được xác định trong cài đặt khu vực của bạn. Vì nó là dấu phẩy trong trường hợp của bạn, bạn có thể làm điều gì đó như thế này
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
Một cách tiếp cận khác là đọc dấu phân cách từ sổ đăng ký. Điều này sẽ hoạt động trong các cài đặt khu vực khác nhau.
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
Chỉnh sửa Chức năng đã thay đổi để sử dụng Application.International
theo đề xuất của @RonRosenfeld.
Bạn cần mở rộng định dạng số của mình để bao gồm các số lớn hơn.
### ### ## 0 ","
