Sayıları Yazıya Çevirmek

Libreoffice Türkiye Vikisi sitesinden
Atla: kullan, ara


Writer Calc Impress Base Draw Math

LibreOffice Calc programında özellikle muhasebe ve finans alanında ihtiyaç duyulan, "sayıları yazı ile okuma" işlemini, LibreOffice Basic ile yapabiliriz.

Bunun için yapmanız gerekenler sırasıyla;

  • Araçlar --> Makrolar --> Makroları Yönet --> LibreOffice Basic yolunu izleyerek Makroların listesini açın.
  • Ekrana gelen diyalog kutusundan sırasıyla Makrolarım --> Standard --> Module1 seçin.
  • Düzenle butonuna basarak LibreOffice Basic editörünü çalıştırın.
  • Aşağıdaki kodu editörünüze girin.


Function SAYIOKU( ByVal Sayi As Double ) As String
   
   Const OndalikHaneSayisi=1
   
   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
  • Kaydet butonuna basarak editörü kapatın.
  • LibreOffice Calc programında herhangi bir hücreye aşağıdaki formülü girin
=SAYIOKU(-123,4)
  • Sonuç olarak Eksi YüzYirmiÜç Nokta Dört yazdığını göreceksiniz.


Programın ihtiyaca göre düzenlenmesi

Sayı okuma işlemini yapan kodları incelediğinizde sizde kendi ihtiyaçlarınıza göre gerekli değişiklikleri yapabilirsiniz.

Okunmasını istediğiniz ondalık hane sayısını kod'un 2. satırındaki Const değerini değiştirerek yapabilirsiniz.

Örneğin;

   Const OndalikHaneSayisi=2

Burada 2 rakamı programa, virgülden sonraki kısmın ilk iki basamağını dikkate alması gerektiğini belirtir.
Bu sayede siz sayı olarak 123,4 verdiğinizde sonuç YüzYirmiÜç Nokta Kırk olacaktır.
Aynı şekilde siz sayı olarak 123,423 verdiğinizde de sonuç YüzYirmiÜç Nokta Kırkİki olacaktır.


Programın sınırları

  • Okunabilecek en büyük sayı 999 Trilyon 999 Milyar 999 Milyon 999 Bin 999
  • Negatif Sayıları okuyabilir
  • Ondalık hanesini okur (Siz değiştirmediğiniz sürece virgülden sonra 1 hane)

Lira ve Kuruş Olarak Yazmak

Sayıları yazıyla göstermeye çoğunlukla fatura gibi parasal işlemlerde ihtiyaç duyulacağı için aşağıdaki makroyu kullanabilirsiniz. Bu makro yukarıdaki SAYIOKU makrosunu çağırır.

Function YAZIYLA(ByVal Sayi as Double) as String
Dim OndalikKisim as Integer
Dim Lira, Kurus as String

    Lira = SAYIOKU( Int( Sayi ) ) + " Lira"
   
    Kurus = ""

    If Sayi <> Int( Sayi ) Then
        OndalikKisim = Int(Sayi*100 - Int(Sayi)*100)
        Kurus = " " + SAYIOKU(OndalikKisim) + " Kuruş"
    EndIf
    
    YAZIYLA = Lira + Kurus
End Function

YAZIYLA fonksiyonunu SAYIOKU fonksiyonunu ile aynı yere kopyalayın ve aşağıdaki formülü bir hücreye girin:

=YAZIYLA(123,45)

Sonuç, YüzYirmiÜç Lira KırkBeş Kuruş olur.

Makro, iki haneden uzun ondalıkları ilk 2 haneye yuvarlar.

Eskiwiki.png This page is imported from Eskiwiki (previously Wiki.OpenOffice.org.tr) The whole page content and all revisions are licensed under:
24px24px This work is licensed under the Attribution NonCommercial 3.0 Unported License