Ondalıklı Sayıyı Yazıya Çeviren Program AMA YTL İçin Değil

Katılım
27 Mayıs 2006
Mesajlar
10
Arkadaşlar, hepinizden Allah razı olsun çok güzel çözümler sunmuşsunuz. Bir tane de bana lazım. Sitede bir çok sayıyı yazıya çeviren program (kod) var ama bana YTL için değil, Notlar için "ondalıklı sayıları yazıya çeviren" program lazım.
Birkaç örnek vereyim. 4 için Dört yazacak (bu basit), 4,45 için Dört Kırk Beş yazacak (bu da basit), Zor olan ise 4,00 için Dört Sıfır Sıfır yazması ve 4,02 için Dört İki DEĞİL, Dört Sıfır İki yazacak.
Önemli olan bir diğer nokta kodun 4 ile 4,00 sayılarını ayırt edip birine Dört diğerine Dört Sıfır Sıfır yazabilmesidir.

Bulduğum programlar (kodlar) ytl ve ykr için olduğundan 4,02 yi Dört İki yazıyor, bana Dört Sıfır İki yazan lazım. HEMDE BİRAZ ACİLL. Şimdiden Teşekkürlerimi Sunarım.
:dua:
 

Levent Menteşoğlu

Administrator
Yönetici
Admin
Katılım
13 Ekim 2004
Mesajlar
16,058
Excel Vers. ve Dili
Excel 2010-32 bit-Türkçe
Excel 365 -32 bit-Türkçe
Aşağıdaki fonksiyonu denermisiniz.

[vb:1:b8ad19a519]Function yaziyla(sayi)
On Error Resume Next
Dim deg(3), s(3), deger(2)
a = Array("", "bir", "iki", "üç", "dört", "beş", "altı", "yedi", "sekiz", "dokuz")
b = Array("", "on", "yirmi", "otuz", "kırk", "elli", "altmış", "yetmiş", "seksen", "doksan")
c = Array("", "", "bin", "milyon", "milyar", "trilyon")
deger(1) = Int(sayi)
deger(2) = Round(sayi - deger(1), 2) * 100
If sayi = 0 Then son = "sıfır"
For g = 1 To 2
yazi = deger(g)
For d = 1 To Len(yazi) Step 3
e = e + 1
deg(1) = Mid(yazi, Len(yazi) - d - 1, 1)
deg(2) = Mid(yazi, Len(yazi) - d, 1)
deg(3) = Mid(yazi, Len(yazi) - d + 1, 1)
If deg(1) <> 0 Then s(1) = Replace(a(deg(1)) & "yüz", "biryüz", "yüz")
s(2) = b(deg(2))
s(3) = a(deg(3)) & c(e)
If deg(1) + deg(2) + deg(3) = 0 Then s(3) = ""
son = s(1) & s(2) & s(3) & son
If Left(son, 6) = "birbin" Then son = Replace(son, "birbin", "bin")
For f = 1 To 3
deg(f) = ""
s(f) = ""
Next: Next
If g = 1 And deger(1) <> 0 Then ytl = son & " "
If deger(1) = 0 Then ytl = "sıfır"
If deger(2) < 10 Then yaz = "sıfır"
If g = 2 And deger(2) <> 0 Then ykr = " " & yaz & son
son = ""
e = 0
Next
yaziyla = ytl & ykr
End Function
[/vb:1:b8ad19a519]
 
Katılım
27 Mayıs 2006
Mesajlar
10
Arkadaşım senin kodları ekledim.
bir kaç hata meydana geldi.
Örneğin 2,22 sayısını "iki 22yirmiki" şeklinde yazıyor ve 0,47 sayısınıda Sıfır Kırk Yedi yazacağına sadece "kırkyedi" yazıyor.
 

Levent Menteşoğlu

Administrator
Yönetici
Admin
Katılım
13 Ekim 2004
Mesajlar
16,058
Excel Vers. ve Dili
Excel 2010-32 bit-Türkçe
Excel 365 -32 bit-Türkçe
Yukarıdaki kodu yeniledim tekrar deneyin.
 
Katılım
27 Mayıs 2006
Mesajlar
10
Sayın leventm, çok teşekkür ediyorum. sadece 3,00 gibi sayıları "üç sıfır sıfır" yazmıyor "üç" olarak yazıyor ama bende öyle kullanacam artık. geri kalan herşey problemsiz çalışıyor. emeğin için teşekkürler. Allah Razı Olsun.
 
Katılım
20 Mart 2008
Mesajlar
1
Excel Vers. ve Dili
2003 - Türkçe
Konu a&#231;&#305;lal&#305; uzun zaman olmu&#351; ama, &#351;unu sormak istiyorum ayn&#305; kodlar&#305; excel 2003 de denedim fakat, YKR ve YTL eklerini yazmad&#305;. Neyi eksik yap&#305;yorum?
 
Üst