Özellikle muhasebe ile ilgilenen arkadaşlarımızın çok sık sordukları soruların başında sayıları yazıyla okumak gelir.
Örneğin;
123 --> YüzYirmiÜç
Bu sebeple, uzun zaman önce yazdığım SAYIOKU makrosunu bir kez de buradan paylaşmak istedim.
Aşağıdaki makroyu tablonuza ekleyin ve kullanmaya başlayın.
Kullanımı oldukça basittir;
Herhangi bir hücreye =SAYIOKU(123) veya =SAYIOKU(A15) gibi.
Kolay gelsin.
Programın sınırları
1. Okunabilecek en büyük sayı 999 Trilyon 999 Milyar 999 Milyon 999 Bin 999
2. Negatif Sayıları okuyabilir
3. Ondalık hanesini okur (Siz değiştirmediğiniz sürece virgülden sonra 2 hane) Ondalık hane sayısını değiştirmek için makrodaki Const OndalikHaneSayisi=2 satırını değiştirmeniz yeterli olacaktır.
Kod: Tümünü seç
Function SAYIOKU( ByVal Sayi As Double ) As String
Const OndalikHaneSayisi=2
Yazi = ""
If Sayi < 0 Then
Yazi = "Eksi " + SAYIOKU( -1 * Sayi )
ElseIf Sayi <> Int( Sayi ) Then
Yazi = SAYIOKU( Int( Sayi ) ) + " Nokta "
OndalikKisim = Sayi - Int( Sayi )
OndalikKisim = Int(OndalikKisim * 10^OndalikHaneSayisi ) / 10^OndalikHaneSayisi
Do
OndalikKisim = OndalikKisim * 10^OndalikHaneSayisi
HaneDegeri = Int(OndalikKisim)
OndalikKisim = OndalikKisim - HaneDegeri
If HaneDegeri > 0 Then
HaneYazisi = SAYIOKU(HaneDegeri)
Yazi = Yazi + HaneYazisi
Else Exit Do
EndIf
Loop
ElseIf Sayi < 10 Then
Select Case Sayi
Case 0: Yazi = ""
Case 1: Yazi = "Bir"
Case 2: Yazi = "İki"
Case 3: Yazi = "Üç"
Case 4: Yazi = "Dört"
Case 5: Yazi = "Beş"
Case 6: Yazi = "Altı"
Case 7: Yazi = "Yedi"
Case 8: Yazi = "Sekiz"
Case 9: Yazi = "Dokuz"
End Select
ElseIf Sayi < 100 Then
Onluk = Int( Sayi / 10 )
Birlik = Sayi Mod 10
Select Case Onluk * 10
Case 10: Yazi = "On"
Case 20: Yazi = "Yirmi"
Case 30: Yazi = "Otuz"
Case 40: Yazi = "Kırk"
Case 50: Yazi = "Elli"
Case 60: Yazi = "Altmış"
Case 70: Yazi = "Yetmiş"
Case 80: Yazi = "Seksen"
Case 90: Yazi = "Doksan"
End Select
If Birlik > 0 Then
Yazi = Yazi + SAYIOKU( Birlik )
EndIf
ElseIf Sayi < 1E+3 Then
Yuzluk = Int( Sayi / 1E+2 )
HaneDegeri = Sayi Mod 1E+2
If Yuzluk=1 Then
Yazi = "Yüz"
Else
Yazi = SAYIOKU( Yuzluk ) + "Yüz"
EndIf
Yazi = Yazi + SAYIOKU( HaneDegeri )
ElseIf Sayi < 1E+6 Then
Binlik = Int( Sayi / 1E+3 )
HaneDegeri = Sayi Mod 1E+3
If Binlik=1 Then
Yazi="Bin"
Else
Yazi = SAYIOKU( Binlik ) + "Bin"
EndIf
If HaneDegeri > 0 Then
Yazi = Yazi + SAYIOKU( HaneDegeri )
EndIf
ElseIf Sayi < 1E+9 Then
Milyonluk = Int( Sayi / 1E+6 )
HaneDegeri = Int( Sayi-( Int( Sayi / 1E+6 ) * 1E+6 ) )
Yazi = SAYIOKU( Milyonluk ) + "Milyon"
If HaneDegeri > 0 Then
Yazi = Yazi + SAYIOKU( HaneDegeri )
EndIf
ElseIf Sayi < 1E+12 Then
Milyarlik = Int( Sayi / 1E+9 )
HaneDegeri = Int( Sayi-( Int( Sayi / 1E+9 ) * 1E+9 ) )
Yazi = SAYIOKU( Milyarlik ) + "Milyar"
If HaneDegeri > 0 Then
Yazi = Yazi + SAYIOKU( HaneDegeri )
EndIf
ElseIf Sayi < 1E+15 Then
Trilyonluk = Int( Sayi / 1E+12 )
HaneDegeri = Int( Sayi-( Int( Sayi / 1E+12 ) * 1E+12 ) )
Yazi = SAYIOKU( Trilyonluk ) + "Trilyon"
If HaneDegeri > 0 Then
Yazi = Yazi + SAYIOKU( HaneDegeri )
EndIf
EndIf
SAYIOKU() = Yazi
End Function