VBA kullanan Ultimate 1000 ayırıcı
Formül kullanmak mümkün olmadığı ve özel kod ile yapılması gerektiği için 1000 seperatör için VBA çözümü almaya çalışıyorum. Mevcut çözüm, Bin Ayırıcılı ve Gerekirse Ondalıklı Cevap Sayı Formatından alınmıştır.
İşte kod:
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 gibi sayılar için çalışıyor, ancak 1000000 için çalışmıyor. Ayrıca 1000000000 çalışmayacak. Şu anda çözüm üzerinde çalışıyorum, ancak birinin paylaşacak bir şeyi varsa, memnun olurum.
Orijinal çözüm kullanılması durumunda:
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
Yanıtlar
Bence vba'nın bölgesel ayarlarınızda tanımlanan binlerce ayırıcıya ihtiyacı var. Senin durumunda virgül olduğu için böyle bir şey yapabilirsin
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
Diğer bir yaklaşım, ayırıcıyı kayıt defterinden okumaktır. Bu, farklı bölgesel ortamlarda çalışmalıdır.
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 tarafından önerildiği gibi kullanılacak değiştirilen işlevi Düzenle .
Sayı biçiminizi daha büyük sayıları içerecek şekilde genişletmeniz gerekir.
### ### ## 0 ","