Çözüldü Rakamı yazıya çevirme

yuzun23

Altın Üye
Katılım
11 Mayıs 2006
Mesajlar
661
Excel Vers. ve Dili
Ofis 2016 64 Bit Türkçe
Altın Üyelik Bitiş Tarihi
17-01-2026
ekteki tabloda yazılan rakamları yazıya çevirme (fonksiyonlu) şimdiden ellerinize ve emeklerinize sağlık
 

Ekli dosyalar

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,954
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Merhaba,

Forumumuzda bu talebinizle ilgili ayrı bir bölüm var. İncelemenizde fayda var..

 

yuzun23

Altın Üye
Katılım
11 Mayıs 2006
Mesajlar
661
Excel Vers. ve Dili
Ofis 2016 64 Bit Türkçe
Altın Üyelik Bitiş Tarihi
17-01-2026
ÜSTADIM VALLA BECEREMEDİM
 

muhasebeciyiz

Altın Üye
Katılım
10 Şubat 2006
Mesajlar
777
Excel Vers. ve Dili
Office 2016
64 Bit
Altın Üyelik Bitiş Tarihi
21-12-2027
Korhan Hocamız yol göstermiş olup uygulamaya dökememişsiniz. Hocamızın hoşgörüsüne sığınarak buyrun ;
 

Ekli dosyalar

muhasebeciyiz

Altın Üye
Katılım
10 Şubat 2006
Mesajlar
777
Excel Vers. ve Dili
Office 2016
64 Bit
Altın Üyelik Bitiş Tarihi
21-12-2027
Excel sayfasında iken Alt+F11 tuşları ile İnsert/Module ile aşağıdaki kod kopyalanıp yapıştırılır

Function ParaCevir(Para, Optional PBirim = "Lira", Optional KBirim = "Kuruş")
Dim ParaStr As String
Dim Lira As String, Kurus As String

If Not IsNumeric(Para) Then
ParaCevir = "GİRİLEN DEĞER SAYI DEĞİL!"
Exit Function
End If

ParaStr = Format(Abs(Para), "0.00")

Lira = Left(ParaStr, Len(ParaStr) - 3)
Kurus = Right(ParaStr, 2)

ParaCevir = IIf(Para < 0, "Eksi ", "") & Cevir(Lira) & " " & PBirim & " " & _
IIf(Val(Kurus) <> 0, Cevir(Kurus) & " " & KBirim & " ", "")
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 = "Sıfır"

Cevir = UCase(Mid(Sonuc, 1, 1)) + Mid(Sonuc, 2, Len(Sonuc) - 1)
End Function

Excel sayfasında Paraçevir işlevinin ekleneceği hücreye;
=ParaCevir(Hücre Adresi) yazılarak, çalıştırılır.
 

yuzun23

Altın Üye
Katılım
11 Mayıs 2006
Mesajlar
661
Excel Vers. ve Dili
Ofis 2016 64 Bit Türkçe
Altın Üyelik Bitiş Tarihi
17-01-2026
HAKKINIZI HELAL EDİNİZ
 

asdsxx

Altın Üye
Katılım
22 Mayıs 2012
Mesajlar
502
Excel Vers. ve Dili
Excel 2016 Türkçe
Altın Üyelik Bitiş Tarihi
20-02-2027
Excel sayfasında iken Alt+F11 tuşları ile İnsert/Module ile aşağıdaki kod kopyalanıp yapıştırılır

Function ParaCevir(Para, Optional PBirim = "Lira", Optional KBirim = "Kuruş")
Dim ParaStr As String
Dim Lira As String, Kurus As String

If Not IsNumeric(Para) Then
ParaCevir = "GİRİLEN DEĞER SAYI DEĞİL!"
Exit Function
End If

ParaStr = Format(Abs(Para), "0.00")

Lira = Left(ParaStr, Len(ParaStr) - 3)
Kurus = Right(ParaStr, 2)

ParaCevir = IIf(Para < 0, "Eksi ", "") & Cevir(Lira) & " " & PBirim & " " & _
IIf(Val(Kurus) <> 0, Cevir(Kurus) & " " & KBirim & " ", "")
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 = "Sıfır"

Cevir = UCase(Mid(Sonuc, 1, 1)) + Mid(Sonuc, 2, Len(Sonuc) - 1)
End Function

Excel sayfasında Paraçevir işlevinin ekleneceği hücreye;
=ParaCevir(Hücre Adresi) yazılarak, çalıştırılır.
Sayın Hocam bir sorum olacak. Bu fonksiyonlarda yazıların arasında boşluk olmuyor. Bu Muhasebe kuralı mı yoksa fonksiyon yazarken önemsenmeyen bir durum mu?
Yani sayıları yazıya dökerken:

123546.05​

Yüzyirmiüçbinbeşyüzkırkaltı Lira Beş Kuruş

123546.05​

Yüz yirmi üç bin beş yüz kırk altı Lira Beş Kuruş


Hangisi Muhasebe olarak doğru yazım
 

volki_112

Altın Üye
Katılım
29 Eylül 2023
Mesajlar
550
Excel Vers. ve Dili
2019 Türkçe
Altın Üyelik Bitiş Tarihi
13-12-2029
Sayın Hocam bir sorum olacak. Bu fonksiyonlarda yazıların arasında boşluk olmuyor. Bu Muhasebe kuralı mı yoksa fonksiyon yazarken önemsenmeyen bir durum mu?
Yani sayıları yazıya dökerken:

123546.05​

Yüzyirmiüçbinbeşyüzkırkaltı Lira Beş Kuruş

123546.05​

Yüz yirmi üç bin beş yüz kırk altı Lira Beş Kuruş


Hangisi Muhasebe olarak doğru yazım
TDK ya göre parayı yazı olarak ifade ettiğimzide arada boşluk olmaz bitişik yazılır. (Sonradan değiştirilme ve oynama olmasın diye)

Para ile ilgili işlemlerle senet, çek vb. ticari belgelerde geçen sayılar bitişik yazılır: 650,35 (altıyüzelliTL,otuzbeşkr.)
 
Üst