SORU ve CEVAPLAR (Yazılabilir) > Excel & Muhasebe

Excel'de Rakamı Yazıya Çevirmek 2 ( .-TL., .-KR. ) (KTF)

(1/2) > >>

Hüseyin Çoban:
Kodları boş bir modüle yapıştırarak uygulayınız.


--- Kod: ---Function tlkryaz(Sayi#)
'formül:  =tlkryaz(hücre adresi)
    Dim virgul2 As String
    Dim cevap As String
    Dim yazi As String
    Dim Say As String
    Dim uclu As String
    Dim virgul As Integer
    Dim o As Integer
    Dim b As Integer
    Dim x As Integer
    Dim i As Integer
    Dim y As Integer
    Dim TL As String
    Dim KR As String
   
    If Sayi# = 0 Then tlkryaz = "Sıfır": Exit Function
   
    ReDim birler$(10), onlar$(10), basamak$(5)
   
    birler$(0) = "":        birler$(1) = "Bir"
    birler$(2) = "İki":     birler$(3) = "Üç"
    birler$(4) = "Dört":    birler$(5) = "Beş"
    birler$(6) = "Altı":    birler$(7) = "Yedi"
    birler$(8) = "Sekiz":   birler$(9) = "Dokuz"
   
    onlar$(0) = "":         onlar$(1) = "On"
    onlar$(2) = "Yirmi":    onlar$(3) = "Otuz"
    onlar$(4) = "Kırk":     onlar$(5) = "Elli"
    onlar$(6) = "Altmış":   onlar$(7) = "Yetmiş"
    onlar$(8) = "Seksen":   onlar$(9) = "Doksan"
   
    basamak$(1) = "":       basamak$(2) = "Bin "
    basamak$(3) = "Milyon ": basamak$(4) = "Milyar "
    basamak$(5) = "Trilyon "
   
    virgul2 = ""
    cevap = ""
   
    'AŞAĞIDAKİ 2 SATIRDAKİ ÇİFT TIRNAK İÇERİĞİNİ DEĞİŞTİREREK
    'VEYA ÇİFT TIRNAĞIN ARASINI SİLEREK    "" VEYA "," GİBİ
    'İSTEĞİNİZ SONUCUN ÇIKMASINI SAĞLAYABİLİRSİNİZ.
    TL = ".-TL., "
    KR = ".-KR."

    Say = Str$(Sayi#)
    virgul = InStr(1, Say, ".")
    If virgul Then
       
        'Aşağadaki satır 26,4  Yirmialtı TL, KIRK KR olarak okutur.
        '              (Yirmialtı TL, DÖRT KR olarak değil)
        'İptal etmek isterseniz başına bir  ' tek tırnak işareti koyunuz
        If Len(Mid(Say, virgul + 1)) = 1 Then Say = Say + "0"
       
        Say = Right$(Say, Len(Say) - virgul)
        GoSub cevir
       
        If cevap = "" Then KR = ""
        virgul2 = cevap + KR
        cevap = ""
       
        Say = Str$(Sayi#)
        Say = Left$(Say, virgul - 1)
    End If
    GoSub cevir
    If cevap = "" Then TL = ""
    tlkryaz = cevap + TL + virgul2
Exit Function

cevir:
     x = Len(Say)
     Say = String$(3 - (x - Int(x / 3) * 3), 48) + Say
     x = Len(Say) / 3
     For i = 1 To x
            uclu = Mid$(Say, Len(Say) - i * 3 + 1, 3)
            y = Val(Mid$(uclu, 1, 1))
            o = Val(Mid$(uclu, 2, 1))
            b = Val(Mid$(uclu, 3, 1))

            yazi = ""
            If y <> 0 Then
                If y > 1 Then yazi = birler$(y)
                yazi = yazi + "Yüz "
            End If
           
            yazi = yazi + onlar$(o) + birler$(b)

            If yazi <> "" Then
                If LCase(yazi) = "bir" And i = 2 Then yazi = ""
                cevap = yazi + basamak$(i) + cevap
            End If
     Next i
     If Sayi# < 0 Then cevap = "-Eksi-" + cevap
     Return
End Function


--- Kod sonu ---

Formül:


--- Kod: ---=tlkryaz(hücre adresi)
--- Kod sonu ---




Alıntı...

assenucler:
Sayın Hüseyin Çoban,


İyi akşamlar.
Emek ve paylaşımınız için teşekkürler.

Yazının başına "Yalnız" sözcüğü konulabilir mi? Örneğin, "Yalnızİkiyüzlira" gibi...

Sevgi ve saygılar.

Bülent Öztürk:
Merhaba Selim Bey,

Kodları şu şekilde uyarlayabiliriz:


--- Kod: ---Function tlkryaz(Sayi#)
'formül:  =tlkryaz(hücre adresi)
    Dim virgul2 As String
    Dim cevap As String
    Dim yazi As String
    Dim Say As String
    Dim uclu As String
    Dim virgul As Integer
    Dim o As Integer
    Dim b As Integer
    Dim x As Integer
    Dim i As Integer
    Dim y As Integer
    Dim TL As String
    Dim KR As String
   
    If Sayi# = 0 Then tlkryaz = "Sıfır": Exit Function
   
    ReDim birler$(10), onlar$(10), basamak$(5)
   
    birler$(0) = "":        birler$(1) = "Bir"
    birler$(2) = "İki":     birler$(3) = "Üç"
    birler$(4) = "Dört":    birler$(5) = "Beş"
    birler$(6) = "Altı":    birler$(7) = "Yedi"
    birler$(8) = "Sekiz":   birler$(9) = "Dokuz"
   
    onlar$(0) = "":         onlar$(1) = "On"
    onlar$(2) = "Yirmi":    onlar$(3) = "Otuz"
    onlar$(4) = "Kırk":     onlar$(5) = "Elli"
    onlar$(6) = "Altmış":   onlar$(7) = "Yetmiş"
    onlar$(8) = "Seksen":   onlar$(9) = "Doksan"
   
    basamak$(1) = "":       basamak$(2) = "Bin "
    basamak$(3) = "Milyon ": basamak$(4) = "Milyar "
    basamak$(5) = "Trilyon "
   
    virgul2 = ""
    cevap = ""
   
    'AŞAĞIDAKİ 2 SATIRDAKİ ÇİFT TIRNAK İÇERİĞİNİ DEĞİŞTİREREK
    'VEYA ÇİFT TIRNAĞIN ARASINI SİLEREK    "" VEYA "," GİBİ
    'İSTEĞİNİZ SONUCUN ÇIKMASINI SAĞLAYABİLİRSİNİZ.
    TL = ".-TL., "
    KR = ".-KR."

    Say = Str$(Sayi#)
    virgul = InStr(1, Say, ".")
    If virgul Then
       
        'Aşağadaki satır 26,4  Yirmialtı TL, KIRK KR olarak okutur.
        '              (Yirmialtı TL, DÖRT KR olarak değil)
        'İptal etmek isterseniz başına bir  ' tek tırnak işareti koyunuz
        If Len(Mid(Say, virgul + 1)) = 1 Then Say = Say + "0"
       
        Say = Right$(Say, Len(Say) - virgul)
        GoSub cevir
       
        If cevap = "" Then KR = ""
        virgul2 = cevap + KR
        cevap = ""
       
        Say = Str$(Sayi#)
        Say = Left$(Say, virgul - 1)
    End If
    GoSub cevir
    If cevap = "" Then TL = ""
    tlkryaz = cevap + TL + virgul2
    tlkryaz = "Yalnız " & tlkryaz
Exit Function

cevir:
     x = Len(Say)
     Say = String$(3 - (x - Int(x / 3) * 3), 48) + Say
     x = Len(Say) / 3
     For i = 1 To x
            uclu = Mid$(Say, Len(Say) - i * 3 + 1, 3)
            y = Val(Mid$(uclu, 1, 1))
            o = Val(Mid$(uclu, 2, 1))
            b = Val(Mid$(uclu, 3, 1))

            yazi = ""
            If y <> 0 Then
                If y > 1 Then yazi = birler$(y)
                yazi = yazi + "Yüz "
            End If
           
            yazi = yazi + onlar$(o) + birler$(b)

            If yazi <> "" Then
                If LCase(yazi) = "bir" And i = 2 Then yazi = ""
                cevap = yazi + basamak$(i) + cevap
            End If
     Next i
     If Sayi# < 0 Then cevap = "-Eksi-" + cevap
     Return
     
End Function


--- Kod sonu ---

assenucler:
Sayın Bülent Öztürk,


Değerli üstadım, iyi akşamlar. Dinlence gününüzde zaman ayırarak verdiğiniz yanıt için içten teşekkürlerimi sunarım.

Sevgi ve saygılar.

Hüseyin Çoban:
. . .

Merhaba,  Bülent Bey çözümü sunmuş. Alternatif olarakta aşağıdaki şekilde de olabilir.

İlk mesajdaki kodlar için

--- Kod: ---="Yalnız "&tlkryaz(A1)
--- Kod sonu ---

. . .

Navigasyon

[0] Mesajlar

[#] Sonraki Sayfa

Tam sürüme git