🧠 Membedah Logika Algoritma
Bagaimana cara komputer menerjemahkan angka 1.500.250 menjadi “Satu juta lima ratus ribu dua ratus lima puluh”? Rahasianya ada pada operasi Pemotongan Matematika (Mathematical Truncation).
Pola Pembagian Basis 1000
Alih-alih membaca angka satu per satu dari kiri ke kanan, algoritma ini memecah angka besar menjadi “blok-blok” berisi 3 digit (ratusan) berdasarkan pangkat dari 1000:
- Triliun: Blok angka dibagi
1000^4(1000 pangkat 4) - Miliar: Blok angka dibagi
1000^3(1000 pangkat 3) - Juta: Blok angka dibagi
1000^2(1000 pangkat 2) - Ribu: Blok angka dibagi
1000^1(1000 pangkat 1)
Dengan membuang nilai desimalnya menggunakan fungsi Int(), kita bisa mengisolasi bagian jutaan, ribuan, dan satuan untuk kemudian dikirim ke fungsi penerjemah teks Ratus() dan Angka().
💡 Fitur Spesial: Bagaimana Cara Mesin Membaca “Sen”?
Dalam aplikasi akuntansi dan slip gaji, perhitungan sering kali menghasilkan angka desimal (misalnya: Rp 1.500.250,75). Modifikasi penting pada fungsi ini adalah kemampuannya membaca dua angka di belakang koma sebagai “Sen”.
Algoritma ini tidak memanipulasi teks/string, melainkan menggunakan logika matematika murni:
Int(x)mengambil bilangan bulatnya saja (1.500.250).x - Int(x)akan menyisakan murni nilai desimalnya saja (0,75).- Dikalikan
100untuk mengubah 0,75 menjadi bilangan bulat 75. - Angka 75 ini kemudian dikirim kembali ke fungsi pembaca angka, dan ditambahkan kata “sen” di akhir kalimat kalimat (menjadi “tujuh puluh lima sen”).
💻 Source Code: Fungsi Terbilang & TerbilangRp
Berikut adalah kode asli yang telah disesuaikan dengan standar sintaks VBA modern. Anda dapat menyalin kode ini dan memasukkannya ke dalam Module di Visual Basic Editor (Alt + F11).
' ====================================================================
' Fungsi Terbilang Klasik (Konversi Angka ke Huruf Bahasa Indonesia)
' Original Author: Aurino Djamaris (aurinodjamaris@gmail.com)
' Origin: dBase Algorithm (1986) | VBA Port (2005)
' ====================================================================
Public Function TerbilangRp(x As Currency) As String
Dim triliun As Currency, milyar As Currency, juta As Currency
Dim ribu As Currency, satu As Currency, sen As Currency
Dim baca As String
If x > 1E+15 Then
TerbilangRp = ""
Exit Function
End If
If x = 0 Then
baca = angka(0, 1)
Else
' LOGIKA INTI: Memecah angka berdasarkan pangkat 1000
triliun = Int(x / 1000 ^ 4)
milyar = Int((x - triliun * 1000 ^ 4) * 0.001 ^ 3)
juta = Int((x - triliun * 1000 ^ 4 - milyar * 1000 ^ 3) / 1000 ^ 2)
ribu = Int((x - triliun * 1000 ^ 4 - milyar * 1000 ^ 3 - juta * 1000 ^ 2) / 1000)
satu = Int(x - triliun * 1000 ^ 4 - milyar * 1000 ^ 3 - juta * 1000 ^ 2 - ribu * 1000)
sen = Int((x - Int(x)) * 100)
' MERANGKAI KATA
If triliun > 0 Then baca = Ratus(triliun, 5) & "triliun "
If milyar > 0 Then baca = baca & Ratus(milyar, 4) & "milyar "
If juta > 0 Then baca = baca & Ratus(juta, 3) & "juta "
If ribu > 0 Then baca = baca & Ratus(ribu, 2) & "ribu "
If satu > 0 Then baca = baca & Ratus(satu, 1) & ""
baca = baca & "rupiah "
If sen > 0 Then baca = baca & Ratus(sen, 0) & "sen "
End If
' Format Huruf Besar di Awal Kalimat (Sentence case)
TerbilangRp = UCase(Left(baca, 1)) & LCase(Mid(baca, 2))
End Function
' --- Fungsi Pendukung: Menerjemahkan blok ratusan ---
Function Ratus(x As Currency, Posisi As Integer) As String
Dim a100 As Integer, a10 As Integer, a1 As Integer
Dim baca As String
a100 = Int(x * 0.01)
a10 = Int((x - a100 * 100) * 0.1)
a1 = Int(x - a100 * 100 - a10 * 10)
If a100 = 1 Then
baca = "Seratus "
Else
If a100 > 0 Then baca = angka(a100, Posisi) & "ratus "
End If
If a10 = 1 Then
baca = baca & angka(a10 * 10 + a1, Posisi)
Else
If a10 > 0 Then baca = baca & angka(a10, Posisi) & "puluh "
If a1 > 0 Then baca = baca & angka(a1, Posisi)
End If
Ratus = baca
End Function
' --- Fungsi Pendukung: Kamus Angka ---
Function angka(x As Integer, Posisi As Integer) As String
Select Case x
Case 0: angka = "Nol"
Case 1:
If Posisi = 2 Then ' Penanganan khusus untuk "Seribu"
angka = "Se"
Else
angka = "Satu "
End If
Case 2: angka = "Dua "
Case 3: angka = "Tiga "
Case 4: angka = "Empat "
Case 5: angka = "Lima "
Case 6: angka = "Enam "
Case 7: angka = "Tujuh "
Case 8: angka = "Delapan "
Case 9: angka = "Sembilan "
Case 10: angka = "Sepuluh "
Case 11: angka = "Sebelas "
Case 12: angka = "Duabelas "
Case 13: angka = "Tigabelas "
Case 14: angka = "Empatbelas "
Case 15: angka = "Limabelas "
Case 16: angka = "Enambelas "
Case 17: angka = "Tujuhbelas "
Case 18: angka = "Delapanbelas "
Case 19: angka = "Sembilanbelas "
End Select
End Function
🎯 Tantangan Pengembangan (Mini-Challenge)
Setelah Anda berhasil menyematkan fungsi di atas ke dalam Excel dan mengetikkan rumus =TerbilangRp(A1), Anda akan menyadari bahwa kalimat yang dihasilkan menggunakan format Sentence case (Hanya huruf pertama yang kapital).
Bagaimana cara Anda memodifikasi kode VBA di atas agar teks yang dihasilkan menggunakan HURUF KAPITAL SEMUA (UPPERCASE) atau Huruf Kapital Di Setiap Kata (Proper Case)?
*Petunjuk: Coba telusuri fungsi bawaan VBA seperti
UCase() atau StrConv() pada bagian akhir kode TerbilangRp.
Langkah 1: Membuat Template Visual (Worksheet)
Pertama, kita desain visual kwitansi di Worksheet (misal: di Sheet1). Anda bisa menyisipkan gambar background kwitansi kosong, lalu menempatkan sel-sel Excel tepat di atas garis isian gambar tersebut, atau cukup menggunakan Borders Excel biasa.

Langkah 1: Siapkan “Database Input” (Sheet 1)
Buka Sheet 1, ubah namanya menjadi “Data_Input”. Buat tabel vertikal di kolom A dan B untuk menampung data:
- B1:
001/INV/2024(Untuk No) - B2:
Arman Maulana(Telah terima dari) - B3:
Sewa rumah selama satu tahun di Jl. Sukajadi(Keterangan) - B4:
24000000(Nominal Angka) - B5:
=PROPER(TerbilangRp(B4))(Rumus ajaib kita!)
*Fungsi PROPER() memastikan setiap awal kata dari hasil terbilang menggunakan Huruf Kapital (Proper Case).
Langkah 2: Memasukkan Gambar Kuitansi (Sheet 2)
Buka Sheet 2, ubah namanya menjadi “Cetak”. Pergi ke menu Insert > Pictures lalu masukkan gambar/scan kuitansi biru kosong Anda. Sesuaikan ukurannya agar pas dengan area cetak (Print Area).
Langkah 3: Teknik Overlay TextBox Transparan
Excel tidak bisa langsung mengetik di atas gambar. Rahasianya adalah menggunakan objek Text Box yang dibuat transparan dan dikaitkan ke sel (cell) di Sheet Data_Input.
- Pergi ke
Insert > Shapes > Text Box. - Gambar sebuah Text Box tepat di atas garis titik-titik “No.” pada gambar kuitansi.
- Cara Menghubungkan: Klik pinggiran Text Box (pastikan kursor kedap-kedip di dalamnya hilang). Pergi ke Formula Bar di bagian atas layar, ketik
=lalu klik ke Sheet Data_Input sel B1, dan tekan Enter. - Ubah format Text Box (Format Shape) menjadi No Fill dan No Line agar transparan dan menyatu dengan background kuitansi.
- Ulangi langkah ini untuk Telah terima dari (link ke
B2), Keterangan (link keB3), dan pastikan isian Uang sejumlah dihubungkan keB5.
✍️ Sentuhan Estetika (Pro Tip)
Agar terlihat lebih natural layaknya kuitansi asli yang ditulis tangan, blok semua Text Box tersebut dan ubah Font-nya menjadi Pristina, Lucida Handwriting, atau Segoe Script dengan ukuran 14-16. Saat Anda mengganti angka nominal di Sheet 1, tulisan latin “Dua Puluh Empat Juta Rupiah” akan otomatis tercetak sempurna di atas kuitansi biru Anda!
Referensi Eksplorasi Mandiri (GitHub & YouTube)
Bagi mahasiswa yang ingin memperdalam teknik Clean Code, struktur Array tingkat lanjut, hingga mengintegrasikan Excel VBA dengan layanan Web modern (API), berikut adalah beberapa “gudang” kode open-source (berlisensi MIT) dan kanal YouTube legendaris yang sangat direkomendasikan untuk dieksplorasi:
▶️ Excel Macro Mastery (Paul Kelly)
Kanal YouTube terbaik untuk mempelajari standar prosedur penulisan VBA modern. Sangat berfokus pada efisiensi memori (menggunakan Array dan Dictionary) serta penanganan error yang mencegah aplikasi crash.
🐙 GitHub: VBA-JSON & VBA-Web
Gudang snippet (berlisensi MIT) buatan Tim Hall dan dikelola komunitas. Mutlak diperlukan jika Anda ingin membuat Excel VBA mampu mengambil data dari internet atau terhubung dengan API AI modern. Sering dibahas di kanal YouTube Python and VBA.
▶️ Wise Owl Tutorials
Salah satu kanal tutorial tertua dan paling terstruktur layaknya perkuliahan. Sangat baik untuk memperkuat fondasi logika iterasi (Looping), interaksi dengan database SQL, hingga otomatisasi lintas aplikasi (seperti Outlook).
🤖 Aturan Emas Berkolaborasi dengan AI
Satu hal penting yang harus selalu Anda ingat: “Kalau kita meminta bantuan AI untuk menyusun suatu kode, maka kitalah yang mutlak harus menjadi Arsitek dan Validatornya.”
AI (seperti ChatGPT, Copilot, atau Trae) sangat hebat mengetik sintaks. Namun, tanpa pemahaman algoritma, kode dari AI hanya akan menjadi “Kotak Hitam” yang menyesatkan. Mari kita lihat contoh nyata saat menyusun fitur “Sen” pada fungsi Terbilang:
❌ Pendekatan Operator (Sesat)
“Buatkan kode VBA untuk mengambil angka di belakang koma dan jadikan kata ‘sen’.”
Hasil AI: AI biasanya akan memberikan kode manipulasi teks (String Manipulation) seperti Right(CStr(angka), 2).
Mengapa Tersesat? Jika di Excel angkanya 1.500,5 (yang artinya 50 sen), kode AI tersebut akan gagal atau membacanya sebagai “5 sen”. Saat error terjadi pada laporan keuangan, mahasiswa kebingungan karena tidak paham algoritma di baliknya.
✅ Pendekatan Arsitek (Benar)
“Tuliskan kode VBA untuk mencari nilai ‘sen’. Tolong hindari manipulasi teks, tapi gunakan operasi pemotongan matematika:
(x - Int(x)) * 100 agar presisi.”
Hasil AI: AI akan menulis kode sen = Int((x - Int(x)) * 100) dengan sempurna dalam hitungan detik.
Mengapa Benar? Karena Anda (Manusia) yang menentukan workflow dan logikanya, AI hanya bertugas mengetikkan sintaksnya. Anda memegang kendali penuh atas sistem.
Tentang Penulis: Aurino Djamaris
Pesan tentang pentingnya menguasai algoritma di atas bukanlah sekadar teori. Penulis sendiri telah melewati puluhan transisi teknologi: mulai dari era kalkulator programmable (Basic), Apple PC (Fortran dengan editor teks legendaris WordStar), COBOL, Algol, masa keemasan dBase & Clipper, Lotus 1-2-3 & Symphony, Turbo Pascal/Basic, beralih ke VBA & HTML, hingga hari ini tetap relevan menggunakan Python dan React. Terbukti, bahasa pemrograman akan terus berganti, namun logika dan workflow adalah aset abadi seorang analis sejati.