Dalam materi sebelumya saya sudah buatkan sebuah UDF nilai untuk mengkonversi nilai menjadi sebuah kata. Namun hanya tersedia hanya dalam bahasa indonesia saja.
Bayangkan kamu harus mengubah puluhan hingga ratusan nilai angka menjadi bentuk kata satu per satu secara manual dan harus diubah ke bahasa indonesia dan english.
Tentu hal ini akan sangat merepotkan dan rawan kesalahan. Untungnya, Microsoft Excel menyediakan solusi berupa User Defined Function (UDF), yaitu fungsi buatan pengguna yang bisa ditambahkan ke Excel menggunakan VBA (Visual Basic for Applications).
Melalui UDF kali ini, kita bisa membuat sebuah fungsi kustom yang secara otomatis mengonversi angka seperti 85,35 menjadi “delapan puluh lima koma tiga lima”, sesuai dengan standar pengucapan angka dalam dua bahasa yang berbeda yakni bahasa indonesia dan English.
UDF sangat bermanfaat karena:
Alt + F11 untuk membuka jendela VBA Editor.Insert > Module untuk menambahkan modul baru.Berikut script yang digunakan :
Function TerbilangNilai(Angka As Double, Optional Bahasa As String = "ID") As String
Dim WordsID As Variant, WordsEN As Variant
Dim Words As Variant, TmpStr As String
Dim IntegerPart As Long, DecimalPart As String
Dim i As Integer
' Kamus angka
WordsID = Array("", "satu", "dua", "tiga", "empat", "lima", "enam", "tujuh", "delapan", "sembilan", "sepuluh", "sebelas")
WordsEN = Array("", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine", "ten", "eleven")
If UCase(Bahasa) = "EN" Then
Words = WordsEN
Else
Words = WordsID
End If
IntegerPart = Fix(Angka)
DecimalPart = Right(CStr(Format(Angka, "#,###.00")), 2)
TmpStr = Konversi(IntegerPart, Words, UCase(Bahasa))
If DecimalPart <> "" Then
If UCase(Bahasa) = "EN" Then
TmpStr = TmpStr & " point"
Else
TmpStr = TmpStr & " koma"
End If
For i = 1 To Len(DecimalPart)
If Mid(DecimalPart, i, 1) = "0" Then
If UCase(Bahasa) = "EN" Then
TmpStr = TmpStr & " zero"
Else
TmpStr = TmpStr & " nol"
End If
Else
TmpStr = TmpStr & " " & Words(CLng(Mid(DecimalPart, i, 1)))
End If
Next i
End If
TerbilangNilai = Application.Trim(TmpStr)
End Function
Dan juga copy script berikut ini dibawahnya :
Private Function Konversi(ByVal Angka As Long, Words As Variant, Bahasa As String) As String
Select Case Angka
Case Is < 12
Konversi = Words(Angka)
Case Is < 20
If Bahasa = "EN" Then
Select Case Angka
Case 12: Konversi = "twelve"
Case 13: Konversi = "thirteen"
Case 15: Konversi = "fifteen"
Case Else: Konversi = Words(Angka - 10) & "teen"
End Select
Else
Konversi = Words(Angka - 10) & " belas"
End If
Case Is < 100
If Bahasa = "EN" Then
Dim tens As String
Select Case Angka \ 10
Case 2: tens = "twenty"
Case 3: tens = "thirty"
Case 4: tens = "forty"
Case 5: tens = "fifty"
Case 8: tens = "eighty"
Case Else: tens = Words(Angka \ 10) & "ty"
End Select
If Angka Mod 10 = 0 Then
Konversi = tens
Else
Konversi = tens & "-" & Words(Angka Mod 10)
End If
Else
Konversi = Words(Angka \ 10) & " puluh " & Konversi(Angka Mod 10, Words, Bahasa)
End If
Case 100
If Bahasa = "EN" Then
Konversi = "one hundred"
Else
Konversi = "seratus"
End If
Case Else
Konversi = "" ' Optional: jika nilai > 100
End Select
End Function
Setelah itu tutup Visual Basic Editor.
Fungsi ini sudah bisa langsung digunakan dengan menggunkan fungsi TERBILANGNILAI , Untuk contoh penggunaan dalam bahasa indonesia bisa dilihat pada rumus berikut :
=PROPER(TerbilangNilai(G3,"ID"))
Berikut hasilnya

Sedangkan untuk format dalam english, tinggal gunakan parameter “EN”, Berikut contoh penulisan rumusnya :
=PROPER(TerbilangNilai(G3,"EN"))
Berikut hasilnya
