Sabtu, 11 September 2010

Fungsi Terbilang pada OpenOffice.org

Fungsi terbilang yang akan kita masukkan berikut mampu menerjemahkan bilangan sampai dengan ratusan trilyun dan belum mampu menerjemahkan nilai di belakang desimal (setelah koma). Saya menggunakan OpenOffice.org versi 2 beta, langkah-langkah yang saya lakukan untuk memasukkan fungsi terbilang pada OpenOffice.org Calc adalah:
  1. Jalankan OpenOffice.org Calc, buka menu Tools ? Macros ? Organize Macros ? OpenOffice.org Basic..., sehingga muncul dialog box OpenOffice.org Basic.
    Langkah 1
  2. Pada dialog box OpenOffice.org Basic, pilih makro dari My Macros ? Standard, kemudian klik tombol New
    Langkah 2
  3. Masukkan kode di bagian bawah halaman ini, dan copy paste-kan pada halaman editor yang muncul. 
    Langkah 3
  4. Uji pada sheet dengan memasukkan fungsi terbilangnya. Lihat contoh penggunaannya.
    Langkah 4
Kode
CODE:
  1. Function Kekata(Bilangan as double) As String
  2.     Dim angka as variant
  3.    
  4.     angka = Array("","satu","dua","tiga","empat","lima","enam",_
  5.     "tujuh","delapan","sembilan","sepuluh","sebelas")
  6.     Bilangan = abs(Fix(Bilangan))
  7.     If Bilangan<12 Then
  8.         Kekata = " " & angka(Bilangan)
  9.     Elseif Bilangan<20 Then
  10.         Kekata = Kekata(Bilangan - 10) & " belas"
  11.     Elseif Bilangan<100 Then
  12.         Kekata = Kekata(Fix(Bilangan/10)) & " puluh" & Kekata(Bilangan mod 10)
  13.     Elseif Bilangan<200 Then
  14.         Kekata = " seratus" & Kekata(Bilangan mod 100)
  15.     Elseif Bilangan<1000 Then
  16.         Kekata = Kekata(Fix(Bilangan/100)) & " ratus" & Kekata(Bilangan mod 100)
  17.     Elseif Bilangan<2000 Then
  18.         Kekata = " seribu" & Kekata(Bilangan mod 1000)
  19.     Elseif Bilangan<1000000 Then
  20.         Kekata = Kekata(Fix(Bilangan/1000)) & " ribu" & Kekata(Bilangan mod 1000)
  21.     Elseif Bilangan<1000000000 Then
  22.         Kekata = Kekata(Fix(Bilangan/1000000)) & " juta" &_
  23.         Kekata(Bilangan- (Fix(Bilangan/1000000)*1000000))
  24.     Elseif Bilangan<1000000000000 Then
  25.         Kekata = Kekata(Fix(Bilangan/1000000000)) & " milyar" &_
  26.         Kekata(Bilangan- (Fix(Bilangan/1000000000)*1000000000))
  27.     Elseif Bilangan<1000000000000000 Then
  28.         Kekata = Kekata(Fix(Bilangan/1000000000000)) & " trilyun" &_
  29.         Kekata(Bilangan- (Fix(Bilangan/1000000000000)*1000000000000))
  30.     Else
  31.         Kekata = "Error! Input Tidak Dapat Diproses."
  32.     EndIf
  33.    
  34. End Function
  35.  
  36. Function Terbilang(Bilangan as Double, Optional Style as Integer) as String
  37.     Dim temp as String
  38.    
  39.     If Bilangan<0 Then
  40.         temp = "minus " & trim(kekata(Bilangan))
  41.     Else
  42.       temp = trim(kekata(Bilangan))
  43.     EndIf
  44.  
  45.     If Style=1 Then
  46.       Terbilang = ucase(temp)
  47.     ElseIf Style=2 Then                     
  48.         Terbilang = lcase(temp)
  49.     ElseIf Style=3 Then                     
  50.         kata = split(temp)
  51.         l = LBound(kata)       
  52.         u = UBound(kata)
  53.         For i=l to u
  54.             kata(i) =  ucase(mid(kata(i),1,1)) & mid(kata(i),2)
  55.         Next i
  56.         Terbilang = join(kata())
  57.     Else                 
  58.         Terbilang = ucase(mid(temp,1,1)) & mid(temp,2)
  59.     EndIf
  60.  
  61. End Function
Penggunaan dan Contoh
=terbilang(bilangan; style)
bilangan adalah bilangan atau cell yang berisi bilangan yang akan diterjemahkan.
style adalah nilai integer yang sifatnya optional untuk mengatur output cara penulisan huruf besar atau kecilnya, dan jika tidak disertakan akan tertampil huruf besar pada awal kalimat saja.
Nilai style
1 = Ditulilis huruf besar semua;
2 = Ditulis huruf kecil semua;
3 = Huruf besar hanya pada awal kata saja;
Lainnya = Huruf besar pada awal kalimat saja.
Misalkan cell B1 diisi bilangan dengan nilai 25000 dan kita akan menuliskan hasilnya pada cell B2
=terbilang(B1)menghasilkan: Dua puluh lima ribu
=terbilang(B1;1)menghasilkan: DUA PULUH LIMA RIBU
=terbilang(B1;2)menghasilkan: dua puluh lima ribu
=terbilang(B1;3)menghasilkan: Dua Puluh Lima Ribu
=terbilang(B1;4)menghasilkan: Dua puluh lima ribu

Rabu, 08 September 2010

Function Terbilang Berbahasa Indonesia pada Excel dengan VbScript.

' Collection of Function
' Macro created March 29, 2005 by DESAINER (Will F. Saranaung)
' Macro edited April 11, 2008
'

Function CINTA(Angka As Double, Text_Satuan As String) As String
  
    Dim SebutanRupiah As String, Ratus As Long, Ribu As Long, Juta As Long, Milyar As Long

    France = Chr(70) & Chr(82) & Chr(65) & Chr(78) & Chr(67) & Chr(69) & Chr(30) & Chr(83) & Chr(65) & Chr(82) & Chr(65) & Chr(78) & Chr(65) & Chr(85) & Chr(78) & Chr(71)
    SebutBilangan = "Satu     Dua      Tiga     Empat    Lima     "    '9 char
    SebutBilangan = SebutBilangan & "Enam     Tujuh    Delapan  Sembilan "

    If Angka < 0 Then
        TandaRincian = "Minus "
    ElseIf Angka = 0 Then
        TandaRincian = "Nol "
    Else
        TandaRincian = ""
    End If
  
    If Abs(Angka) >= 1000000000000# Then
        CINTA = "# TERLALU BESAR BOOO! Maks 12 Digit. Hubungi " & France & " untuk Bantuan."
        Exit Function
    End If
  
    Angka = Abs(Angka)
    Sen = PECAHAN(Angka)
  
    If Sen <> 0 Then
        CINTA = "# Puntennn Mas/Mba... Angka Pecahan Kaga Bole Atu...! Hubungi " & France & " untuk Bantuan."
        Exit Function
    End If
  
    SebutanRupiah = Right("000000000000" & Str$(Angka), 12)
    Ratus = Val(Right(SebutanRupiah, 3))
    Ribu = Val(Mid(SebutanRupiah, 7, 3))
    Juta = Val(Mid(SebutanRupiah, 4, 3))
    Milyar = Val(Left(SebutanRupiah, 3))
  
    If Ratus > 0 Then
        TextRupiah = Right("000" & Str$(Ratus), 3)
        DigitSatuan = Val(Right(TextRupiah, 1))
        DigitPuluhan = Val(Mid(TextRupiah, 2, 1))
        DigitRatusan = Val(Left(TextRupiah, 1))
  
        If DigitSatuan = 0 Then
            TerbilangSatuan = ""
        Else
            TerbilangSatuan = Trim(Mid(SebutBilangan, DigitSatuan * 9 - 8, 9))
        End If
  
        Select Case DigitPuluhan
            Case Is = 0
                TerbilangPuluhan = TerbilangSatuan
            Case Is = 1
                If DigitSatuan = 0 Then
                    TerbilangPuluhan = " Sepuluh "
                ElseIf DigitSatuan = 1 Then
                    TerbilangPuluhan = " Sebelas "
                Else
                    TerbilangPuluhan = Trim(Mid(SebutBilangan, DigitSatuan * 9 - 8, 9)) & " Belas "
                End If
            Case Is > 1
                TerbilangPuluhan = Trim(Mid(SebutBilangan, DigitPuluhan * 9 - 8, 9)) & " Puluh " & TerbilangSatuan
        End Select
                TerbilangPuluhan = Trim(TerbilangPuluhan)
        Select Case DigitRatusan
            Case Is = 0
                TerbilangRatusan = TerbilangPuluhan
            Case Is = 1
                TerbilangRatusan = " Seratus " & TerbilangPuluhan
            Case Is > 1
                TerbilangRatusan = Trim(Mid(SebutBilangan, DigitRatusan * 9 - 8, 9)) & " Ratus " & TerbilangPuluhan
        End Select
        Rincian = Trim(TerbilangRatusan)
    End If
  
    If Ribu = 1 Then
        Rincian = "Seribu " & Rincian
    ElseIf Ribu > 1 Then
      
        TextRupiah = Right("000" & Str$(Ribu), 3)
        DigitSatuan = Val(Right(TextRupiah, 1))
        DigitPuluhan = Val(Mid(TextRupiah, 2, 1))
        DigitRatusan = Val(Left(TextRupiah, 1))
      
        If DigitSatuan = 0 Then
            TerbilangSatuan = ""
        Else
            TerbilangSatuan = Trim(Mid(SebutBilangan, DigitSatuan * 9 - 8, 9))
        End If
      
        Select Case DigitPuluhan
            Case Is = 0
                TerbilangPuluhan = TerbilangSatuan
            Case Is = 1
                If DigitSatuan = 0 Then
                    TerbilangPuluhan = " Sepuluh "
                ElseIf DigitSatuan = 1 Then
                    TerbilangPuluhan = " Sebelas "
                Else
                    TerbilangPuluhan = Trim(Mid(SebutBilangan, DigitSatuan * 9 - 8, 9)) & " Belas "
                End If
            Case Is > 1
                TerbilangPuluhan = Trim(Mid(SebutBilangan, DigitPuluhan * 9 - 8, 9)) & " Puluh " & TerbilangSatuan
        End Select
                TerbilangPuluhan = Trim(TerbilangPuluhan)
        Select Case DigitRatusan
            Case Is = 0
                TerbilangRatusan = TerbilangPuluhan
            Case Is = 1
                TerbilangRatusan = " Seratus " & TerbilangPuluhan
            Case Is > 1
                TerbilangRatusan = Trim(Mid(SebutBilangan, DigitRatusan * 9 - 8, 9)) & " Ratus " & TerbilangPuluhan
        End Select
        Rincian = Trim(TerbilangRatusan) & " Ribu " & Rincian
    End If
  
    If Juta > 0 Then
        TextRupiah = Right("000" & Str$(Juta), 3)
        DigitSatuan = Val(Right(TextRupiah, 1))
        DigitPuluhan = Val(Mid(TextRupiah, 2, 1))
        DigitRatusan = Val(Left(TextRupiah, 1))
      
        If DigitSatuan = 0 Then
            TerbilangSatuan = ""
        Else
            TerbilangSatuan = Trim(Mid(SebutBilangan, DigitSatuan * 9 - 8, 9))
        End If
      
        Select Case DigitPuluhan
            Case Is = 0
                TerbilangPuluhan = TerbilangSatuan
            Case Is = 1
                If DigitSatuan = 0 Then
                    TerbilangPuluhan = " Sepuluh "
                ElseIf DigitSatuan = 1 Then
                    TerbilangPuluhan = " Sebelas "
                Else
                    TerbilangPuluhan = Trim(Mid(SebutBilangan, DigitSatuan * 9 - 8, 9)) & " Belas "
                End If
            Case Is > 1
                TerbilangPuluhan = Trim(Mid(SebutBilangan, DigitPuluhan * 9 - 8, 9)) & " Puluh " & TerbilangSatuan
        End Select
                TerbilangPuluhan = Trim(TerbilangPuluhan)
        Select Case DigitRatusan
            Case Is = 0
                TerbilangRatusan = TerbilangPuluhan
            Case Is = 1
                TerbilangRatusan = " Seratus " & TerbilangPuluhan
            Case Is > 1
                TerbilangRatusan = Trim(Mid(SebutBilangan, DigitRatusan * 9 - 8, 9)) & " Ratus " & TerbilangPuluhan
        End Select
        Rincian = Trim(TerbilangRatusan) & " Juta " & Rincian
    End If
  
    If Milyar > 0 Then
        TextRupiah = Right("000" & Str$(Milyar), 3)
        DigitSatuan = Val(Right(TextRupiah, 1))
        DigitPuluhan = Val(Mid(TextRupiah, 2, 1))
        DigitRatusan = Val(Left(TextRupiah, 1))
      
        If DigitSatuan = 0 Then
            TerbilangSatuan = ""
        Else
            TerbilangSatuan = Trim(Mid(SebutBilangan, DigitSatuan * 9 - 8, 9))
        End If
      
        Select Case DigitPuluhan
            Case Is = 0
                TerbilangPuluhan = TerbilangSatuan
            Case Is = 1
                If DigitSatuan = 0 Then
                    TerbilangPuluhan = " Sepuluh "
                ElseIf DigitSatuan = 1 Then
                    TerbilangPuluhan = " Sebelas "
                Else
                    TerbilangPuluhan = Trim(Mid(SebutBilangan, DigitSatuan * 9 - 8, 9)) & " Belas "
                End If
            Case Is > 1
                TerbilangPuluhan = Trim(Mid(SebutBilangan, DigitPuluhan * 9 - 8, 9)) & " Puluh " & TerbilangSatuan
        End Select
                TerbilangPuluhan = Trim(TerbilangPuluhan)
        Select Case DigitRatusan
            Case Is = 0
                TerbilangRatusan = TerbilangPuluhan
            Case Is = 1
                TerbilangRatusan = " Seratus " & TerbilangPuluhan
            Case Is > 1
                TerbilangRatusan = Trim(Mid(SebutBilangan, DigitRatusan * 9 - 8, 9)) & " Ratus " & TerbilangPuluhan
        End Select
        Rincian = Trim(TerbilangRatusan) & " Milyar " & Rincian
    End If
    CINTA = TandaRincian & Trim(Rincian) & " " & Text_Satuan
End Function

Function Terbilang berbahasa inggris pada excel dengan vbscript

Function LAMU(Angka As Double, Text_Satuan As String) As String
  
    Dim SebutanRupiah As String, Ratus As Long, Ribu As Long, Juta As Long, Milyar As Long

    France = Chr(70) & Chr(82) & Chr(65) & Chr(78) & Chr(67) & Chr(69) & Chr(30) & Chr(83) & Chr(65) & Chr(82) & Chr(65) & Chr(78) & Chr(65) & Chr(85) & Chr(78) & Chr(71)
    SebutBilangan = "One   Two   Three Four  Five  Six   Seven Eight Nine  " ' 6 char
    SebutBilanganBelas = "Eleven    Twelve    Thirteen  Fourteen  Fifteen   Dixteen   Seventeen Eighteen  Nineteen  " '10 char
    SebutBilanganPuluh = "Ten     Twenty  Thirty  Forty   Fifty   Sixty   Seventy Eighty  Ninety  " '8 char

    If Angka < 0 Then
        TandaRincian = "Minus "
    ElseIf Angka = 0 Then
        TandaRincian = "Nul "
    Else
        TandaRincian = ""
    End If
  
    If Abs(Angka) >= 1000000000000# Then
        LAMU = "# TOO BIG JOOOOO! Call " & France & " for Help."
        Exit Function
    End If
  
    Angka = Abs(Angka)
    Sen = PECAHAN(Angka)
  
    If Sen <> 0 Then
        LAMU = "# FRACTION COI...! Call " & France & " for Help."
        Exit Function
    End If
  
    TextHubungan = " and "
    Hubungan = 0
    SebutanRupiah = Right("000000000000" & Str$(Angka), 12)
    Ratus = Val(Right(SebutanRupiah, 3))
    Ribu = Val(Mid(SebutanRupiah, 7, 3))
    Juta = Val(Mid(SebutanRupiah, 4, 3))
    Milyar = Val(Left(SebutanRupiah, 3))
  
    If Ratus > 0 Then
        TextRupiah = Right("000" & Str$(Ratus), 3)
        DigitSatuan = Val(Right(TextRupiah, 1))
        DigitPuluhan = Val(Mid(TextRupiah, 2, 1))
        DigitRatusan = Val(Left(TextRupiah, 1))
  
        If DigitSatuan = 0 Then
            TerbilangSatuan = ""
        Else
            TerbilangSatuan = Trim(Mid(SebutBilangan, DigitSatuan * 6 - 5, 6))
        End If
  
        Select Case DigitPuluhan
            Case Is = 0
                TerbilangPuluhan = TerbilangSatuan
            Case Is = 1 And DigitSatuan > 0
                TerbilangPuluhan = Trim(Mid(SebutBilanganBelas, DigitSatuan * 10 - 9, 10))
            Case Else
                TerbilangPuluhan = Trim(Mid(SebutBilanganPuluh, DigitPuluhan * 8 - 7, 8)) & " " & TerbilangSatuan
        End Select
  
        If DigitRatusan = 0 Then
            TerbilangRatusan = TerbilangPuluhan
        Else
            Select Case TerbilangPuluhan
                Case Is = ""
                    TextHubungan = ""
                Case Else
                    TerbilangPuluhan = Trim(TextHubungan & TerbilangPuluhan)
                    Hubungan = 1
            End Select
            TerbilangRatusan = Trim(Mid(SebutBilangan, DigitRatusan * 6 - 5, 6)) & " Hundred " & TerbilangPuluhan
        End If
        Rincian = Trim(TerbilangRatusan)
    End If
  
    If Ribu > 0 Then
        TextRupiah = Right("000" & Str$(Ribu), 3)
        DigitSatuan = Val(Right(TextRupiah, 1))
        DigitPuluhan = Val(Mid(TextRupiah, 2, 1))
        DigitRatusan = Val(Left(TextRupiah, 1))
  
        If Hubungan = 1 Then
            TextHubungan = ""
        ElseIf Rincian <> "" Then
            TextHubungan = " and "
            Rincian = Trim(TextHubungan & Rincian)
            Hubungan = 1
        End If
  
        If DigitSatuan = 0 Then
            TerbilangSatuan = ""
        Else
            TerbilangSatuan = Trim(Mid(SebutBilangan, DigitSatuan * 6 - 5, 6))
        End If
  
        Select Case DigitPuluhan
            Case Is = 0
                TerbilangPuluhan = TerbilangSatuan
            Case Is = 1 And DigitSatuan > 0
                TerbilangPuluhan = Trim(Mid(SebutBilanganBelas, DigitSatuan * 10 - 9, 10))
            Case Else
                TerbilangPuluhan = Trim(Mid(SebutBilanganPuluh, DigitPuluhan * 8 - 7, 8)) & " " & TerbilangSatuan
        End Select
  
        If DigitRatusan = 0 Then
            TerbilangRatusan = TerbilangPuluhan
        Else
            Select Case TerbilangPuluhan
                Case Is = ""
                    TextHubungan = ""
                Case Else
                    TerbilangPuluhan = Trim(TextHubungan & TerbilangPuluhan)
                    Hubungan = 1
            End Select
            TerbilangRatusan = Trim(Mid(SebutBilangan, DigitRatusan * 6 - 5, 6)) & " Hundred " & TerbilangPuluhan
        End If
        Rincian = Trim(TerbilangRatusan) & " thousand " & Rincian
    End If
  
    If Juta > 0 Then
        TextRupiah = Right("000" & Str$(Juta), 3)
        DigitSatuan = Val(Right(TextRupiah, 1))
        DigitPuluhan = Val(Mid(TextRupiah, 2, 1))
        DigitRatusan = Val(Left(TextRupiah, 1))
  
        If Hubungan = 1 Then
            TextHubungan = ""
        ElseIf Rincian <> "" Then
            TextHubungan = " and "
            Rincian = Trim(TextHubungan & Rincian)
            Hubungan = 1
        End If
  
        If DigitSatuan = 0 Then
            TerbilangSatuan = ""
        Else
            TerbilangSatuan = Trim(Mid(SebutBilangan, DigitSatuan * 6 - 5, 6))
        End If
  
        Select Case DigitPuluhan
            Case Is = 0
                TerbilangPuluhan = TerbilangSatuan
            Case Is = 1 And DigitSatuan > 0
                TerbilangPuluhan = Trim(Mid(SebutBilanganBelas, DigitSatuan * 10 - 9, 10))
            Case Else
                TerbilangPuluhan = Trim(Mid(SebutBilanganPuluh, DigitPuluhan * 8 - 7, 8)) & " " & TerbilangSatuan
        End Select
  
        If DigitRatusan = 0 Then
            TerbilangRatusan = TerbilangPuluhan
        Else
            Select Case TerbilangPuluhan
                Case Is = ""
                    TextHubungan = ""
                Case Else
                    TerbilangPuluhan = Trim(TextHubungan & TerbilangPuluhan)
                    Hubungan = 1
            End Select
            TerbilangRatusan = Trim(Mid(SebutBilangan, DigitRatusan * 6 - 5, 6)) & " Hundred " & TerbilangPuluhan
        End If
        Rincian = Trim(TerbilangRatusan) & " Million " & Rincian
    End If
  
    If Milyar > 0 Then
        TextRupiah = Right("000" & Str$(Milyar), 3)
        DigitSatuan = Val(Right(TextRupiah, 1))
        DigitPuluhan = Val(Mid(TextRupiah, 2, 1))
        DigitRatusan = Val(Left(TextRupiah, 1))
  
        If Hubungan = 1 Then
            TextHubungan = ""
        ElseIf Rincian <> "" Then
            TextHubungan = " and "
            Rincian = Trim(TextHubungan & Rincian)
            Hubungan = 1
        End If
  
        If DigitSatuan = 0 Then
            TerbilangSatuan = ""
        Else
            TerbilangSatuan = Trim(Mid(SebutBilangan, DigitSatuan * 6 - 5, 6))
        End If
  
        Select Case DigitPuluhan
            Case Is = 0
                TerbilangPuluhan = TerbilangSatuan
            Case Is = 1 And DigitSatuan > 0
                TerbilangPuluhan = Trim(Mid(SebutBilanganBelas, DigitSatuan * 10 - 9, 10))
            Case Else
                TerbilangPuluhan = Trim(Mid(SebutBilanganPuluh, DigitPuluhan * 8 - 7, 8)) & " " & TerbilangSatuan
        End Select
  
        If DigitRatusan = 0 Then
            TerbilangRatusan = TerbilangPuluhan
        Else
            Select Case TerbilangPuluhan
                Case Is = ""
                    TextHubungan = ""
                Case Else
                    TerbilangPuluhan = Trim(TextHubungan & TerbilangPuluhan)
                    Hubungan = 1
            End Select
            TerbilangRatusan = Trim(Mid(SebutBilangan, DigitRatusan * 6 - 5, 6)) & " Hundred " & TerbilangPuluhan
        End If
        Rincian = Trim(TerbilangRatusan) & " Milliard " & Rincian
    End If
  
    LAMU = TandaRincian & Trim(Rincian) & " " & Text_Satuan

End Function