- Katılım
- 16 Kasım 2011
- Mesajlar
- 173
- Excel Vers. ve Dili
- 2010 türkçe
- Altın Üyelik Bitiş Tarihi
- 17-09-2024
Selamlar elimde şöyle bir kod var yazılan sayıyı metne çeviriyor. Ancak virgüllü sayıları dikkate almıyor.
Aradığım 18,55 'i onsekiz,ellibeş olarak yazacak bir makro / fonksiyona ihtiyacım var. Saygı ve selamlarımla
not: Module kaydettikten sonra a2 hücresine =yazı(A1) yazdığınızda a1de yazan rakamı yazı ile yazar.
Public Function Yaz?(AA)
Dim AAStr As String
Dim BB As String
If Not IsNumeric(AA) Then GoTo SayiDegil
AAStr = Format(Abs(AA), "0.00")
BB = Left(AAStr, Len(AAStr) - 3)
Yaz? = IIf(AA < 0, "Eksi ", "") & Cevir(BB)
Exit Function
SayiDegil:
Yaz? = "G?R?LEN DE?ER SAYI DE??L!"
End Function
Private Function Cevir(SayiStr As String) As String
Dim Rakam(15)
Dim c(3), Sonuc, e
Birler = Array("", "bir", "iki", "??", "d?rt", "be?", "alt?", "yedi", "sekiz", "dokuz")
Onlar = Array("", "on", "yirmi", "otuz", "k?rk", "elli", "altm??", "yetmi?", "seksen", "doksan")
Binler = Array("trilyon", "milyar", "milyon", "bin", "")
SayiStr = String(15 - Len(SayiStr), "0") + SayiStr
For i = 1 To 15
Rakam(i) = Val(Mid$(SayiStr, i, 1))
Next i
Sonuc = ""
For i = 0 To 4
c(1) = Rakam(i * 3 + 1)
c(2) = Rakam(i * 3 + 2)
c(3) = Rakam(i * 3 + 3)
If c(1) = 0 Then
e = ""
ElseIf c(1) = 1 Then
e = "y?z"
Else
e = Birler(c(1)) + "y?z"
End If
e = e + Onlar(c(2)) + Birler(c(3))
If e <> "" Then e = e + Binler(i)
If (i = 3) And (e = "birbin") Then e = "bin"
Sonuc = Sonuc + e
Next i
If Sonuc = "" Then Sonuc = "00"
Cevir = UCase(Mid(Sonuc, 1, 1)) + Mid(Sonuc, 2, Len(Sonuc) - 1)
End Function
Aradığım 18,55 'i onsekiz,ellibeş olarak yazacak bir makro / fonksiyona ihtiyacım var. Saygı ve selamlarımla
not: Module kaydettikten sonra a2 hücresine =yazı(A1) yazdığınızda a1de yazan rakamı yazı ile yazar.
Public Function Yaz?(AA)
Dim AAStr As String
Dim BB As String
If Not IsNumeric(AA) Then GoTo SayiDegil
AAStr = Format(Abs(AA), "0.00")
BB = Left(AAStr, Len(AAStr) - 3)
Yaz? = IIf(AA < 0, "Eksi ", "") & Cevir(BB)
Exit Function
SayiDegil:
Yaz? = "G?R?LEN DE?ER SAYI DE??L!"
End Function
Private Function Cevir(SayiStr As String) As String
Dim Rakam(15)
Dim c(3), Sonuc, e
Birler = Array("", "bir", "iki", "??", "d?rt", "be?", "alt?", "yedi", "sekiz", "dokuz")
Onlar = Array("", "on", "yirmi", "otuz", "k?rk", "elli", "altm??", "yetmi?", "seksen", "doksan")
Binler = Array("trilyon", "milyar", "milyon", "bin", "")
SayiStr = String(15 - Len(SayiStr), "0") + SayiStr
For i = 1 To 15
Rakam(i) = Val(Mid$(SayiStr, i, 1))
Next i
Sonuc = ""
For i = 0 To 4
c(1) = Rakam(i * 3 + 1)
c(2) = Rakam(i * 3 + 2)
c(3) = Rakam(i * 3 + 3)
If c(1) = 0 Then
e = ""
ElseIf c(1) = 1 Then
e = "y?z"
Else
e = Birler(c(1)) + "y?z"
End If
e = e + Onlar(c(2)) + Birler(c(3))
If e <> "" Then e = e + Binler(i)
If (i = 3) And (e = "birbin") Then e = "bin"
Sonuc = Sonuc + e
Next i
If Sonuc = "" Then Sonuc = "00"
Cevir = UCase(Mid(Sonuc, 1, 1)) + Mid(Sonuc, 2, Len(Sonuc) - 1)
End Function