rakamı yazıya çevirme

Levent Menteşoğlu

Administrator
Yönetici
Admin
Katılım
13 Ekim 2004
Mesajlar
16,057
Excel Vers. ve Dili
Excel 2010-32 bit-Türkçe
Excel 365 -32 bit-Türkçe
Ekteki örneği inceleyiniz. Linkteki bir fonksiyon için yazılı kodlar bir module sayfasına kopyalandı. Artık fonksiyon listenizde "paracevir" isimli yeni bir fonksiyon göreceksiniz. Bu fonksiyon rakamı yazıya çevirecektir.
 
Katılım
26 Ağustos 2004
Mesajlar
46
1256,89 #AD?
böyle bir hata veriyor ne yapmam gerek ayrıca ben bunu başka bir dosyaya kaydetmek istiyorum yardımcı olursanız sevinirim

teşekkürler
 

Levent Menteşoğlu

Administrator
Yönetici
Admin
Katılım
13 Ekim 2004
Mesajlar
16,057
Excel Vers. ve Dili
Excel 2010-32 bit-Türkçe
Excel 365 -32 bit-Türkçe
Ekte verilen dosyanın visual basic düzenleyicisine girin. Orada gördüğünüz kodları kendi dosyanıza kopyalayın. Daha sonra sayının metin karşılığını hangi hücreye yazdıracaksanız o hücreye fonksiyon ekleme bölümünden "ParaCevir" isimli fonksiyonu seçin. Aşağıdaki gibi bir fonksiyon olacaktır. Bu örnekte A1 hücresindeki sayı metne çevrilmektedir. Eğer yine olmazsa dosyanızı ekleyin onun üzerinden gidelim.

=ParaCevir(A1)
 

Levent Menteşoğlu

Administrator
Yönetici
Admin
Katılım
13 Ekim 2004
Mesajlar
16,057
Excel Vers. ve Dili
Excel 2010-32 bit-Türkçe
Excel 365 -32 bit-Türkçe
Gerekli ilaveleri yaptım.
 

muygun

Özel Üye
Katılım
6 Temmuz 2004
Mesajlar
9,182
Excel Vers. ve Dili
Excel-2003 Türkçe
kodları yazan arkadaş bunu "kullanıcı tanımlı fonksiyon" a dönüştürüp dosyayı buraya ekler ve nasıl kullanılacağını yazarsa sanırım birçok kişinin sorununu çözmüş olur.
 
Katılım
14 Eylül 2004
Mesajlar
100
Excel Vers. ve Dili
Excel 2002 - Türkçe
muygun galiba örnek dosyayı incelemedin.

Çok iyi bir şekilde çalışıyor. Kullanıcı tanımlı fonksiyon halinde zaten..


Kod:
Public Function ParaCevir(Para)
    Dim ParaStr As String
    Dim Lira As String, Kurus As String
    
    If Not IsNumeric(Para) Then GoTo SayiDegil
    
    ParaStr = Format(Abs(Para), "0.00")
    
    Lira = Left(ParaStr, Len(ParaStr) - 3)
    Kurus = Right(ParaStr, 2)
    
    ParaCevir = IIf(Para < 0, "Eksi ", "") & Cevir(Lira) & " Lira " & Cevir(Kurus) & " Kuruş"
    
    Exit Function
    
SayiDegil:
    ParaCevir = "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 = "Sıfır"
    
    Cevir = UCase(Mid(Sonuc, 1, 1)) + Mid(Sonuc, 2, Len(Sonuc) - 1)
End Function
 

muygun

Özel Üye
Katılım
6 Temmuz 2004
Mesajlar
9,182
Excel Vers. ve Dili
Excel-2003 Türkçe
Slm lar.

inceledim
0,356 da Sıfır Lira 356 Kuruş ,
123,0 da 123 Lira Sıfır Kuruş yazdığını da biliyorum
VB bilgim yok denecek kadar az
ama kodların virgülden önce veya sonra değer sıfır ise yazmaması gerektiğini düşünüyorum. (bu benim düşüncem belki yanlış olabilir.)
birde XLSTART klasörünün içinde kullanılacak şekilde (.XLA uzantılı) eklenti buraya ilave edilirse çok kimsenin kullanacağına eminim (ben dahil)

saygılar...
 
X

xxrt

Misafir
Virgülden Ã?nceki değer Sıfır Yazmazsa
,356 gibi durum ortaya çıkmazmı?Yine Aynı Þekilde
123, He.(,)Virgülü Kaldıralım.
123 Oluyor.Bu Seferde 123 YTL Okunma hissi doğuyor.Bana Böyle geldi.

Bu Arada Bilgi Olarak
30.09.2004/25599 Tarihli Resmi Gazetede Binlik Ayraç (.),Kuruş için (,) Konulması Kanunlaşmıştır.

Siz "Sıfır"Yazısının Çıkmasını istemiyorsunuz sanırım.Ozamanda Yaz ile İstenilen kuruş yazısı el ile yazılabilir.Ama Düşüncemde hatalıda olabilrim.Değişik Görüşlerde gelecektir.

Eklenti Dosyası Ataçta eklenmiş olup Bunun .xls olan Uzantısını .xla yapıp
C:\WINDOWS\Profiles\Muhasebe\Application Data\Microsoft\AddIns Klasörüne kopyalayız.
 

Levent Menteşoğlu

Administrator
Yönetici
Admin
Katılım
13 Ekim 2004
Mesajlar
16,057
Excel Vers. ve Dili
Excel 2010-32 bit-Türkçe
Excel 365 -32 bit-Türkçe
Sn muygun

Uyarınızı dikkate alarak kodda bir değişiklik yaptım. Yaptığım değişiklik aşağıdaki gibidir. Ekide incelerseniz işlevin sıfır lira ve sıfır kuruş yazmadığını göreceksiniz.

Selamlar

[vb:1:377c858028]Public Function ParaCevir(Para)
Dim ParaStr As String
Dim Lira As String, Kurus As String

If Not IsNumeric(Para) Then GoTo SayiDegil

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

Lira = Left(ParaStr, Len(ParaStr) - 3)
Kurus = Right(ParaStr, 2)
If Lira = 0 Then
ParaCevir = Cevir(Kurus) & " Kuruş"
Exit Function
End If
If Kurus = 0 Then
ParaCevir = IIf(Para < 0, "Eksi ", "") & Cevir(Lira) & " Lira"
Exit Function
End If
ParaCevir = IIf(Para < 0, "Eksi ", "") & Cevir(Lira) & " Lira " & Cevir(Kurus) & " Kuruş"
Exit Function
SayiDegil:
ParaCevir = "GİRİLEN DEÐER SAYI DEÐİL!"
End Function[/vb:1:377c858028]
 
Katılım
6 Ocak 2005
Mesajlar
25
Excel Vers. ve Dili
microsoft ofis 2003 Türkçe
slm sevgili arkadaslar benim excel de bir sorunum var
bu YTL DURUMU iyice karıştı misal vererek anlatmak istiyorum
115,58 YTL de kuruş hanesinin son rakamı olan 8 in
1 ile 4 arası ise otomotikman 0 olarak yazılması
5 ile 9 arası ise otomotikman 5 yazılması lazım bunun için bana yardımcı olabilirmisiniz
 

Levent Menteşoğlu

Administrator
Yönetici
Admin
Katılım
13 Ekim 2004
Mesajlar
16,057
Excel Vers. ve Dili
Excel 2010-32 bit-Türkçe
Excel 365 -32 bit-Türkçe
Aşağıdaki işlev işinizi görecektir. Burada A1 hücresindeki değere göre çalışır,siz bunu değiştirirsiniz.

=YUVARLA(A1;1)
 
Katılım
10 Eylül 2004
Mesajlar
42
Excel Vers. ve Dili
EXCEL 2002 TR
Sorunuzu tam olarak anlayamadım ama TL'den YTL'ye dönüştürürken bu yuvarlamayı yapan fonksiyonu Muhasebat Genel Müdürlüğü Genel Tebliğinde yayınlamıştı. Forumda daha önce yayınlanmış olabilir.

=((A2-(SAÐDAN(A2;4)))/1000000)+((EÐER(((SAÐDAN(A2;4))-5000)>=0;1;0))/100)
 
X

xxrt

Misafir
bu YTL DURUMU iyice karıştı misal vererek anlatmak istiyorum
115,58 YTL de kuruş hanesinin son rakamı olan 8 in
1 ile 4 arası ise otomotikman 0 olarak yazılması
5 ile 9 arası ise otomotikman 5 yazılması lazım
Bakın Karışıklıklar muhakkak olacaktır.Ama Genel Bir kanun var.Ve kanuna göre;
(.) ve (,) Ayraçlara Dikkat edin.Kanuna Göre Binlik Ayraç (.),Kuruş Ayracı ise (,) Olacak.
Yani 1.250,26 YTL (YalnızBinikiyüzellil Yeni Tl,Yirmi Altı Kuruş)
Ã?RNEKLER:
125.125.256.000 lira=125.125,26 Olacak..

658.356.056.000 lira=658.356,06 Olacak

125.007.000 lira=125,01 Olacak.

1.300,395 lira=1.300,40 Olacak

3,750 lira=3,75 Olacak

60,150 lira=60,15 Olacak

88,220 lira=88,22 Olacak

1.416,905 lira=1.416,91 Olacak


Hesaplamalarda Bu kurallar geçerlidir..
 

muygun

Özel Üye
Katılım
6 Temmuz 2004
Mesajlar
9,182
Excel Vers. ve Dili
Excel-2003 Türkçe
slm.lar
öncelikle çözüm üretenlere teşekkürler.
sn.leventm. uğraşın için ayrıca tşk.
ama anlaşılan problem o kadar basit değil.
çözümüne 2 şekilde gidilebiliyor.
1.si standart kod üretimi ile ne görünüyorsa bunu yazıya çevirmek (ki bence doğru olan bu)
2.si tebliğler de belirtilen yuvarlama,virgülden sonra 2 rakam alma vs. gibi konumlara göre kod üretmek
işte karmaşa burda zannedersem zamanla kullanımdaki sıkıntılar açığa çıkacak ve yeni çözümler üretilecek.

saygılar...
 
Üst