Membuat Fungsi Terbilang

terbilangMenjawab pertanyaan di artikel saya yang ini, saya langsung mencari arsip programming saya, karena dulu seingat saya pernah membuat fungsi tersebut untuk penulisan kuitansi. Setelah 2 jam cari-cari saya tidak juga menemukan fungsi yang telah saya tulis 5 tahun yang lalu, akhirnya saya mengambil jalan pintas saja, yaitu googling…

Sebetulnya pembuatan fungsi terbilang ini tidaklah susah jika kita mau menggunakan logika kita sedikit. Tapi sayang malam ini, logika saya juga baru ngga mau di ajak kompromi jadi saya akan membuat tutorial-nya saja step-by-step dan scriptnya saya mengambilnya di-sini lalu saya hanya merapikannya sedikit saja. Berikut langkah yang harus anda ambil:

  1. Buka Microsoft Excel.
  2. Tekan Alt + F11 untuk membuka VBA Editor, atau klik menu Tools -> Macro -> Visual Basic Editor.
    menu Visual Basic Editor
  3. Di Visual Basic Editor, klik menu Insert -> Module.
    Insert module menu
  4. Lalu copy-paste script ini ke bidang kerjanya:
    Public Function TERBILANG(x As Double) As String
    Dim tampung As Double
    Dim teks As String
    Dim bagian As String
    Dim i As Integer
    Dim tanda As Boolean
    
    Dim letak(5)
    letak(1) = "RIBU "
    letak(2) = "JUTA "
    letak(3) = "MILYAR "
    letak(4) = "TRILYUN "
    
    If (x < 0) Then
        TERBILANG = ""
    Exit Function
    End If
    
    If (x = 0) Then
        TERBILANG = "NOL"
    Exit Function
    End If
    
    If (x < 2000) Then
        tanda = True
    End If
    teks = ""
    
    If (x >= 1E+15) Then
        TERBILANG = "NILAI TERLALU BESAR"
    Exit Function
    End If
    
    For i = 4 To 1 Step -1
        tampung = Int(x / (10 ^ (3 * i)))
        If (tampung > 0) Then
            bagian = ratusan(tampung, tanda)
            teks = teks & bagian & letak(i)
        End If
        x = x - tampung * (10 ^ (3 * i))
    Next
    
    teks = teks & ratusan(x, False)
    TERBILANG = teks & " Rupiah"
    End Function
    
    Function ratusan(ByVal y As Double, ByVal flag As Boolean) As String
    Dim tmp As Double
    Dim bilang As String
    Dim bag As String
    Dim j As Integer
    
    Dim angka(9)
    angka(1) = "SE"
    angka(2) = "DUA "
    angka(3) = "TIGA "
    angka(4) = "EMPAT "
    angka(5) = "LIMA "
    angka(6) = "ENAM "
    angka(7) = "TUJUH "
    angka(8) = "DELAPAN "
    angka(9) = "SEMBILAN "
    
    Dim posisi(2)
    posisi(1) = "PULUH "
    posisi(2) = "RATUS "
    
    bilang = ""
    For j = 2 To 1 Step -1
        tmp = Int(y / (10 ^ j))
        If (tmp > 0) Then
            bag = angka(tmp)
            If (j = 1 And tmp = 1) Then
                y = y - tmp * 10 ^ j
                If (y >= 1) Then
                    posisi(j) = "BELAS "
                Else
                    angka(y) = "SE"
                End If
                bilang = bilang & angka(y) & posisi(j)
                ratusan = bilang
                Exit Function
            Else
                bilang = bilang & bag & posisi(j)
        End If
    End If
    y = y - tmp * 10 ^ j
    Next
    
    If (flag = False) Then
        angka(1) = "SATU "
    End If
    bilang = bilang & angka(y)
    ratusan = bilang
    End Function

    shot vbe

  5. Setelah di paste, coba cek script ini dengan klik menu Debug -> Compile VBA Project, jika tidak keluar kotak peringatan apapun biasanya script anda sudah beres.
  6. Tutup jendela Visual Basic Editor anda.

Nah sekarang tinggal coba aja:

  1. Ketik di cell sembarang sederet angka (misal di cell A1), lalu untuk memanggil fungsi terbilang ini (misal di cell A2), tinggal ketik =TERBILANG(A1).
    contoh

Cukup mudah bukan? Anda dapat mengunduh contoh artikel ini di sini.

Just in case, jika macro ini tidak bisa di jalankan di Excel anda (karena secara default Excel menset keamanan terhadap macro ke level tinggi), cek Security macro setting di Excel anda. Untuk melihat konfigurasi Security macro, klik Tools -> Macro -> Security dan pilih opsi Low lalu klik tombol OK. Saran saya pastikan anda sudah mempunya anti virus terinstal di komputer anda untuk menjaga agar virus macro tidak dapat menyerang komputer anda.
set macro security level

186 comments

  1. pak tolong penjelasan dunk tentang penambahan dalam xl.

    uang saya 500.000 di kolom A1
    kolom A2 ada pemasukan 50.000
    begitu kolom ke 3 ada pemasukan 100.000

    nah yang jadi pertanyaan kalo penambahan itu berbeda-beda hingga A100, rumusnya gmn?kalo nilai akhirnya di masukan ke kolom F10

    masa ditambah satu-satu kayak gini (=A1+A2+A3+A4+A5…A100)

    mohon pencerahan

  2. Mohon Bantuannya..

    klo terbilang tanggal ada ga yach?

    misalnya 12 Desember 2011 or 12/12/2011

    saya pengen hasilnya menjadi :

    ” Dua Belas Desember Dua Ribu Sebelas ”

    Mohon petunjuk dan bantuannya

    Thanks

    Reynaldo

  3. Ada beberapa pertanyaan yang tak terjawab, misalnya:
    1. Bagaimana setiap mau mulai excel tidak usah bikin macro lagi.
    Jawab serius: Simpan pake excel template aza

    2. Terus bagaimana menghilangkan kata ‘rupiah’
    Jawaban tidak serius: Buang tulisan ‘rupiah’ di macro, terus kalau nampilkan lagi, tulis lagi.

    3. Terus kalau mau nampilkan terbilangnya huruf Besar di setiap katanya…. (tidak pernah di jawab)

  4. Saya kasih solusi sedikit untuk masalah poin 2 dan 3.
    Solusi:
    Fungsi terbilang di modifikasi dikit menjadi
    Public Function TERBILANG(x As Double, Optional bRupiah As Boolean = False, Optional bTitleCase As Boolean = False) As String

    Keterangan: dua buah variabel tipe boolean (bRupaih dan bTitleCase) bersifat Optional jadi kalau tidak diisi nilainya False semua. Misalkan saya menulis fungsi di Sheet =TERBILANG(A2) berarti bRupiah = False dan bTitleCase = False yang dikonsepnya berarti tidak pake kata ‘rupiah’ dan hurufnya gede semua.

  5. Langkah berikutnya…
    Diakhir fungsi TERBILANG tersebut yang ada tulisan kaya gini.

    teks = teks & ratusan(x, False)
    TERBILANG = teks & ” Rupiah”
    End Function

    Modifikasi sedikit menjadi:

    teks = teks & ratusan(x, False)
    If bRupiah = True And bTitleCase = False Then
    TERBILANG = UCase(teks & ” Rupiah”)
    ElseIf bRupiah = True And bTitleCase = True Then
    TERBILANG = TitleCase(teks & ” Rupiah”)
    ElseIf bRupiah = False And bTitleCase = False Then
    TERBILANG = UCase(teks)
    ElseIf bRupiah = False And bTitleCase = True Then
    TERBILANG = TitleCase(teks)
    End If

    Maksudnya:
    Perintah IF… ELSEIF… diatas ngecek apakah bRupiah dan bTitleCase di set True atau sebaliknya (False)

  6. Kemudian langkah terakhir
    buat Fungsi TitleCase (Untuk mengubah huruf awalnya gede semua), seperti berikut ini.

    Function TitleCase(sInput As String) As String
    Dim lngString As Long, chrTmp As String, sTmp As String, sLast As String
    sTmp = CStr(LCase(sInput))
    sLast = ” ”

    For lngString = 1 To Len(sTmp)
    chrTmp = Mid$(sTmp, lngString, 1)
    If sLast “z” And sLast = “a” And chrTmp = “à” Or sLast <= "þ") Then
    Mid$(sTmp, lngString, 1) = UCase$(chrTmp)
    End If
    End If
    sLast = chrTmp
    Next lngString
    TitleCase = sTmp
    End Function

  7. Terus menggunakan fungsinya bagaimana? Sama seperti cara sebelumnya, jika A2 berisi 1234, maka, jika ditulis:
    =TERBILANG(A2;FALSE;FALSE)
    atau cukup ditulis:
    =TERBILANG(A2)
    menghasilkan: SERIBU DUA RATUS TIGA PULUH EMPAT

    Jika ditulis:
    =TERBILANG(A2;TRUE;FALSE)
    atau cukup ditulis:
    =TERBILANG(A2;TRUE)
    menghasilkan: SERIBU DUA RATUS TIGA PULUH EMPAT RUPIAH

    Jika ditulis:
    =TERBILANG(A2;FALSE;TRUE)
    atau cukup ditulis:
    =TERBILANG(A2;;TRUE)
    menghasilkan: Seribu Dua Ratus Tiga Puluh Empat

    terus jika ditulis:
    =TERBILANG(A2;TRUE;TRUE)
    menghasilkan: Seribu Dua Ratus Tiga Puluh Empat Rupiah

    Catatan: Jika penulisan rumus menghasilkan error, coba ganti titik koma(;) dengan koma (,) misalkan diubah menjadi
    =TERBILANG(A2,TRUE,TRUE)

    THANK’S

  8. Oh ya, Fungsi TitleCase bisa digunakan untuk mengubah huruf awal gede dan huruf berikutnya kecil.

    Misal Cell A5 menggandung teks:

    poLItekNIK NegERi poNTIANaK

    Jika kita gunakan fungsi diatas maka ditulis

    =TITLECASE(A5)

    akan menghasilkan:

    Politeknik Negeri Pontianak

    Fungsi ini mirip Fungsi PROPER (Fungsi Built-in Excel), cara menggunakannya mirip:

    =PROPER(A5)

    THANK’S

  9. @Hendro: terima kasih atas jawaban-jawaban nya Pak, koreksi saja mungkin untuk fungsi TITLECASE yang Bapak tulis bisa menggunakan saja PROPER -> =PROPER(TERBILANG(XX))….

  10. Yup, Fungsi TITLECASE emang mirip Fungsi built-in Excel PROPER. Saya hanya mencoba memberi sampel untuk yang lagi seneng ngotak-ngatik macro-nya excel.

  11. thx gan, sangat manjur, tapi hanya ngebacanya hanya sampai bilangan 100 triliun ya, cara menaikkan bacaannya gimana yah gan ????

  12. @Johan: masalahnya saya ngga pernah buat kuitansi sampai di atas 100 triliun pak, jadi untuk lebih dari itu harus ubah script nya lagi pak.

  13. thanx y mas eddy….lancar marapat macross terbilangnya…..pernah saya dapet yg 52.251.600 dibacanya Lima puluh dua juta dua ratus lima puluh seribu enam ratus rupiah…..
    klo macros dr mas eddy maknyossss…..semoga sukses n tmbh pintar

  14. mas , mau nanya ni , kalau mau buat Sebelas Juta gmna ya ?
    soal ny klo pake program yg ini ntar hasilnya : SeBelas Juta
    membuat B di kata “Belas” jadi huruf kecil gmna yaa mas ?
    thanks before yaa
    ^^

  15. keren infonya pak, thanks a lot
    tadinya saya cuma mau tau kalu terbilang seperti Rp. 5.851.759,- ini dibacanya apa ( hehehe…. ) tapi setelah cari2 malah ketemu info yg keren nie. akhirnya saya bukan cuma tau terbilangnya, malahan bisa copy rumusnya…
    makasih banyak yo pak

  16. o ya pak, ada yg ketinggalan, bagaimana jika inging menuliskan terbilang itu dalam 2 baris/lebih?
    bisa ga kalo penulisan rupiahnya jg menggunakan huruf capital seperti angka terbilangnya?

    terimakasi

  17. @ Marco : kalau saya menggunakan rumus ini, tulisannya SEBELAS JUTA RUPIAH, tidak ada masalah..

    @ pak edi : saya sudah ketemu cara untuk membuat tulisan rupian menjadi huruf capital, trimakasih

  18. Kalau 123,123 (seratus dua puluh tiga koma satu dua tiga bgmn caranya gan?? Trims infonya sebelumnya

  19. kalau 123,123 menjadi tertulis “seratus dua puluh tiga koma satu dua tiga” bagaimana caranya mas

  20. bagaimana cara menghilangkan”Ambiguous name detected:terbilang?, nuwun

  21. ada yang punya rumus bikin giro bca di excel?
    please gaptek soalnya :<

  22. Mas gmna caranya agar hurufnya menjadi huruf kecil semua dan ad tanda kurung pada hurufnya

    Contohnya kya gini mas :
    700000 untuk terbilangnya menjadi (tujuh ratus ribu rupiah)

    Mohon bantuanx mas

  23. aku udah masukin codingan nya di vba, udah di compile juga dan berhasil. tapi saat restart laptop, error lagi. ada bacaan “SHOT VBE” setelah end fuction. dan selalu muncul setelah restart. muhun bantuanya. trims

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.