Bikin Rumus Excel Sendiri dengan User Defined Function (UDF)

Excel telah menyediakan ratusan fungsi bawaan, seperti SUM, AVERAGE, IF, VLOOKUP, dan masih banyak lagi. Meskipun begitu, tidak semua kebutuhan dapat diselesaikan menggunakan fungsi-fungsi tersebut.

Sebagai contoh, Anda mungkin ingin:

  • menghitung komisi dengan aturan perusahaan;

  • mengubah angka menjadi teks sesuai format tertentu;

  • menghitung bonus berdasarkan kriteria khusus;

  • membuat rumus yang tidak tersedia di Excel.

Daripada menulis rumus yang panjang dan berulang, Anda dapat membuat fungsi sendiri menggunakan VBA. Fungsi ini dikenal sebagai User Defined Function (UDF).


Apa Itu User Defined Function (UDF)?

User Defined Function (UDF) adalah fungsi yang dibuat sendiri menggunakan VBA dan dapat digunakan langsung pada worksheet layaknya fungsi bawaan Excel.

Misalnya, setelah membuat sebuah UDF bernama LuasPersegi, Anda dapat menggunakannya seperti berikut.

=LuasPersegi(A1)

Bagi Excel, fungsi tersebut akan bekerja seperti SUM() atau AVERAGE().


Function vs Sub

Sebelum membuat UDF, pahami perbedaan antara Sub dan Function.

SubFunction
Menjalankan serangkaian perintah Mengembalikan sebuah nilai
Dijalankan melalui makro Dapat digunakan sebagai rumus di worksheet
Tidak menghasilkan nilai balik Menghasilkan nilai balik (return value)

Jika tujuan Anda adalah membuat rumus yang bisa digunakan di sel Excel, gunakan Function.


Sintaks Dasar Function

Sintaks umum sebuah fungsi adalah:

Function NamaFunction(Parameter)

    'Kode

    NamaFunction = Nilai

End Function

Nilai yang diberikan kepada nama fungsi akan menjadi hasil yang dikembalikan.


Contoh 1 — Menghitung Luas Persegi

Function LuasPersegi(Sisi As Double) As Double

    LuasPersegi = Sisi * Sisi

End Function

Setelah disimpan, fungsi dapat digunakan di worksheet.

=LuasPersegi(10)

Hasil:

100

Contoh 2 — Menghitung Diskon

Function HitungDiskon(Harga As Double, Persen As Double) As Double

    HitungDiskon = Harga - (Harga * Persen / 100)

End Function

Di worksheet:

=HitungDiskon(250000,10)

Menggunakan If di Dalam Function

Sebuah UDF dapat berisi logika yang lebih kompleks.

Function StatusNilai(Nilai As Integer) As String

    If Nilai >= 75 Then

        StatusNilai = "Lulus"

    Else

        StatusNilai = "Tidak Lulus"

    End If

End Function

Di worksheet:

=StatusNilai(A2)

Menggunakan Lebih dari Satu Parameter

Sebuah fungsi dapat menerima beberapa parameter sekaligus.

Function VolumeBalok(Panjang As Double, Lebar As Double, Tinggi As Double) As Double

    VolumeBalok = Panjang * Lebar * Tinggi

End Function

Penggunaan:

=VolumeBalok(10,5,8)

Menggunakan Parameter Opsional

VBA mendukung parameter opsional melalui kata kunci Optional.

Function Salam(Nama As String, Optional Sapaan As String = "Halo") As String

    Salam = Sapaan & " " & Nama

End Function

Contoh:

=Salam("Andi")

Hasil:

Halo Andi

Studi Kasus

Misalkan perusahaan memberikan bonus berdasarkan total penjualan.

  • Penjualan ≥ 10.000.000 → Bonus 15%

  • Penjualan ≥ 5.000.000 → Bonus 10%

  • Selain itu → Bonus 5%

Anda dapat membuat UDF berikut.

Function Bonus(Penjualan As Double) As Double

    Select Case Penjualan

        Case Is >= 10000000

            Bonus = Penjualan * 0.15

        Case Is >= 5000000

            Bonus = Penjualan * 0.1

        Case Else

            Bonus = Penjualan * 0.05

    End Select

End Function

Di worksheet cukup gunakan:

=Bonus(A2)

Di Mana UDF Harus Disimpan?

Sebaiknya UDF dibuat di Module standar.

Langkah-langkahnya:

  1. Tekan Alt + F11 untuk membuka Visual Basic Editor.

  2. Pilih workbook yang akan digunakan.

  3. Klik Insert → Module.

  4. Tulis kode Function pada modul tersebut.

  5. Simpan workbook dalam format .xlsm atau .xlsb agar kode VBA tetap tersimpan.


Keterbatasan UDF

Walaupun sangat berguna, UDF memiliki beberapa batasan.

  • Tidak dapat mengubah isi worksheet ketika dipanggil dari sel.

  • Tidak dapat menghapus atau menambahkan worksheet.

  • Tidak dapat menampilkan MsgBox sebagai bagian dari perhitungan di worksheet.

  • Sebaiknya hanya digunakan untuk menghitung dan mengembalikan nilai.

Jika fungsi perlu mengubah workbook, gunakan prosedur Sub, bukan Function.


Kesalahan yang Sering Terjadi

Lupa Mengembalikan Nilai

Salah:

Function Luas(Sisi As Double)

    Sisi * Sisi

End Function

Benar:

Function Luas(Sisi As Double) As Double

    Luas = Sisi * Sisi

End Function

Menyimpan Function di Worksheet Module

UDF sebaiknya dibuat pada Module standar agar dapat digunakan sebagai rumus pada worksheet.


Menggunakan MsgBox di Dalam UDF

Banyak pemula mencoba menampilkan pesan seperti berikut.

MsgBox "Berhasil"

Ketika fungsi dipanggil dari worksheet, pendekatan ini tidak disarankan karena dapat mengganggu proses perhitungan.


Tips Praktis

💡 Gunakan nama fungsi yang jelas dan mudah dipahami.

💡 Tentukan tipe data pada parameter dan nilai balik (As Double, As String, dan sebagainya).

💡 Gunakan Function hanya untuk menghasilkan nilai, bukan untuk mengubah workbook.

💡 Simpan seluruh UDF dalam satu atau beberapa module khusus agar lebih mudah dikelola.

💡 Berikan komentar pada fungsi yang cukup panjang agar lebih mudah dipelihara.


Ringkasan

KonsepFungsi
Function Membuat fungsi sendiri
Parameter Data yang diterima fungsi
Return Value Nilai yang dikembalikan fungsi
Optional Parameter yang tidak wajib diisi
Module Tempat menyimpan UDF

Kesimpulan

User Defined Function (UDF) memungkinkan Anda membuat fungsi sendiri sesuai kebutuhan yang tidak dapat dipenuhi oleh fungsi bawaan Excel. Dengan UDF, rumus pada worksheet menjadi lebih ringkas, mudah dibaca, dan dapat digunakan berulang kali tanpa menyalin logika yang sama. Memahami cara membuat UDF merupakan langkah penting untuk mengembangkan aplikasi VBA Excel yang lebih fleksibel, profesional, dan mudah dipelihara.

Hubungi Kami

Kantor Berkreasi
Alamat :
Pens Sky Venture - Sukolilo Surabaya
Karangrejo Tmur 17 Surabaya

Email : kantor.berkreasi@gmail.com
WA : wa.me/6287761589881  
(Support  Mbak Ana)

Tim Pengembang

Dr. Rojabi Azharghany, M.Si, S.Sos
Dr. H. Agus Sulthoni Imami, S.Psi. M.Pd.I.
Ali Ishaq, M.Pd.
Didik Rahwiniyanto, S.Si., M.Pd.
Mujiburrohman, M.Pd.
Mohammad Zikky, S.ST, M.T
Amien sawedi, S.Pd.
Didik P Wicaksono, M.Pd.