Salah satu kelebihan Excel adalah memiliki ratusan fungsi bawaan yang siap digunakan, mulai dari perhitungan sederhana hingga analisis data yang kompleks. Fungsi-fungsi seperti SUM, AVERAGE, COUNTIF, VLOOKUP, dan MATCH sudah sangat familiar bagi pengguna Excel.
Kabar baiknya, fungsi-fungsi tersebut juga dapat digunakan langsung di dalam VBA melalui objek WorksheetFunction. Dengan begitu, Anda tidak perlu membuat rumus di worksheet hanya untuk memperoleh hasil perhitungan.
Pendekatan ini membuat kode lebih rapi, proses lebih otomatis, dan worksheet tetap bersih dari rumus yang sebenarnya hanya dibutuhkan oleh program.
Apa Itu WorksheetFunction?
WorksheetFunction adalah objek milik Application yang menyediakan akses ke berbagai fungsi bawaan Excel dari dalam VBA.
Sintaks dasarnya adalah:
Application.WorksheetFunction.NamaFungsi(...)
Contohnya:
Application.WorksheetFunction.Sum(Range("A1:A10"))
Kode tersebut menghasilkan nilai yang sama seperti rumus berikut di worksheet.
=SUM(A1:A10)
Menggunakan Fungsi SUM
Fungsi SUM digunakan untuk menjumlahkan nilai.
Dim Total As Double
Total = Application.WorksheetFunction.Sum(Range("B2:B20"))
MsgBox Total
Hasil penjumlahan langsung disimpan ke dalam variabel Total.
Menggunakan Fungsi AVERAGE
Untuk menghitung nilai rata-rata, gunakan Average.
Dim NilaiRata As Double
NilaiRata = Application.WorksheetFunction.Average(Range("C2:C20"))
Teknik ini sangat berguna saat membuat laporan statistik atau rekapitulasi nilai.
Menggunakan Fungsi MAX dan MIN
Anda juga dapat mencari nilai terbesar maupun terkecil.
Dim NilaiTerbesar As Double
Dim NilaiTerkecil As Double
NilaiTerbesar = Application.WorksheetFunction.Max(Range("A2:A100"))
NilaiTerkecil = Application.WorksheetFunction.Min(Range("A2:A100"))
Menggunakan COUNT
Fungsi Count menghitung jumlah sel yang berisi angka.
Dim Jumlah As Long
Jumlah = Application.WorksheetFunction.Count(Range("A:A"))
Jika ingin menghitung semua sel yang tidak kosong, gunakan fungsi CountA.
Menggunakan COUNTIF
CountIF digunakan untuk menghitung jumlah data yang memenuhi suatu kriteria.
Dim TotalLulus As Long
TotalLulus = Application.WorksheetFunction.CountIf( _
Range("D2:D100"), _
"Lulus")
Kode tersebut menghitung berapa banyak sel yang berisi teks Lulus.
Menggunakan VLOOKUP
Fungsi VLookup dapat digunakan untuk mencari data pada sebuah tabel.
Dim NamaBarang As Variant
NamaBarang = Application.WorksheetFunction.VLookup( _
"BRG001", _
Range("A2:C20"), _
2, _
False)
Jika kode barang ditemukan, VBA akan mengembalikan nama barang pada kolom kedua.
Menggunakan MATCH
Fungsi Match digunakan untuk mencari posisi suatu nilai.
Dim Posisi As Variant
Posisi = Application.WorksheetFunction.Match( _
"Laptop", _
Range("A2:A20"), _
0)
Hasilnya berupa nomor urut relatif dalam range yang diperiksa.
Menggunakan ROUND
Untuk membulatkan angka, gunakan Round.
Dim Hasil As Double
Hasil = Application.WorksheetFunction.Round(125.6789, 2)
Nilai yang dihasilkan adalah:
125,68
Studi Kasus
Misalkan Anda ingin menampilkan ringkasan penjualan tanpa membuat satu pun rumus di worksheet.
Dim Total As Double
Dim Rata As Double
Dim Maksimum As Double
With Application.WorksheetFunction
Total = .Sum(Range("D2:D100"))
Rata = .Average(Range("D2:D100"))
Maksimum = .Max(Range("D2:D100"))
End With
MsgBox _
"Total : " & Total & vbCrLf & _
"Rata-rata : " & Rata & vbCrLf & _
"Tertinggi : " & Maksimum
Menggunakan blok With membuat kode lebih singkat karena objek WorksheetFunction tidak perlu ditulis berulang kali.
WorksheetFunction vs Evaluate
| WorksheetFunction | Evaluate |
|---|---|
| Memanggil fungsi Excel melalui objek VBA | Menjalankan rumus Excel dalam bentuk string |
| Sintaks lebih jelas untuk fungsi tertentu | Lebih fleksibel untuk rumus yang dibentuk secara dinamis |
| Cocok untuk pemanggilan fungsi secara langsung | Cocok untuk ekspresi atau rumus yang kompleks |
| Menghasilkan kode yang mudah dibaca | Memerlukan penulisan string rumus |
Keduanya memiliki kelebihan masing-masing. Pilih metode yang paling sesuai dengan kebutuhan Anda.
Kesalahan yang Sering Dilakukan
Menggunakan WorksheetFunction Tanpa Menangani Error
Beberapa fungsi, seperti VLookup atau Match, akan menghasilkan Run-time Error jika data yang dicari tidak ditemukan.
Gunakan penanganan error jika kemungkinan tersebut dapat terjadi.
Salah Menentukan Range
Pastikan range yang digunakan sesuai dengan kebutuhan fungsi.
Sebagai contoh, VLookup harus mencari pada kolom pertama dari tabel referensi.
Memanggil Objek Berulang Kali
Kurang efisien:
Application.WorksheetFunction.Sum(...)
Application.WorksheetFunction.Max(...)
Application.WorksheetFunction.Min(...)
Lebih ringkas:
With Application.WorksheetFunction
' Memanggil beberapa fungsi
End With
Tips Praktis
💡 Gunakan WorksheetFunction ketika Anda ingin memanfaatkan fungsi bawaan Excel tanpa menulis rumus di worksheet.
💡 Gunakan blok With jika memanggil beberapa fungsi sekaligus.
💡 Tangani kemungkinan error saat menggunakan fungsi seperti VLookup dan Match.
💡 Gunakan Evaluate jika rumus harus dibentuk secara dinamis.
💡 Pilih fungsi yang paling sesuai agar kode tetap mudah dibaca.
Ringkasan
| Fungsi | Kegunaan |
|---|---|
Sum |
Menjumlahkan data |
Average |
Menghitung rata-rata |
Max |
Mencari nilai terbesar |
Min |
Mencari nilai terkecil |
Count |
Menghitung sel yang berisi angka |
CountIf |
Menghitung data berdasarkan kriteria |
VLookup |
Mencari data dalam tabel |
Match |
Menentukan posisi data |
Round |
Membulatkan angka |
Kesimpulan
WorksheetFunction memungkinkan Anda memanfaatkan berbagai fungsi bawaan Excel langsung dari dalam VBA. Dengan objek ini, proses perhitungan, pencarian, maupun analisis data dapat dilakukan tanpa harus menambahkan rumus ke worksheet. Selain membuat workbook lebih bersih, penggunaan WorksheetFunction juga menghasilkan kode yang lebih terstruktur dan mudah dipahami, terutama ketika Anda bekerja dengan fungsi-fungsi Excel yang sudah dikenal.
