Mengapa Proses Sort Perlu Diotomatisasi?
Saat jumlah data masih sedikit, mengurutkan data secara manual melalui menu Sort di Excel bukanlah pekerjaan yang sulit. Namun, situasinya akan berbeda jika Anda harus mengurutkan laporan setiap hari atau setiap kali data baru ditambahkan.
Misalnya, Anda ingin selalu menampilkan transaksi terbaru di bagian atas, mengurutkan pelanggan berdasarkan nama, atau menyusun nilai penjualan dari yang terbesar hingga terkecil. Jika dilakukan secara manual, pekerjaan ini akan memakan waktu dan berisiko terjadi kesalahan.
Dengan VBA Excel, proses pengurutan dapat dilakukan secara otomatis hanya dengan menjalankan sebuah makro.
Mengenal Metode Sort
VBA menyediakan objek Sort yang memungkinkan Anda mengurutkan data berdasarkan satu atau beberapa kolom.
Sebelum melakukan proses pengurutan, Anda perlu menentukan:
-
area data yang akan diurutkan;
-
kolom yang menjadi dasar pengurutan;
-
urutan Ascending atau Descending;
-
apakah data memiliki header atau tidak.
Mengurutkan Data Secara Ascending
Contoh berikut mengurutkan data berdasarkan kolom A dari A ke Z atau dari angka terkecil ke terbesar.
Range("A1:D20").Sort _
Key1:=Range("A1"), _
Order1:=xlAscending, _
Header:=xlYes
Penjelasan:
-
Key1menentukan kolom yang dijadikan acuan. -
Order1:=xlAscendingberarti urutan naik. -
Header:=xlYesmenunjukkan bahwa baris pertama merupakan header.
Mengurutkan Data Secara Descending
Untuk mengurutkan dari Z ke A atau dari angka terbesar ke terkecil, gunakan xlDescending.
Range("A1:D20").Sort _
Key1:=Range("D1"), _
Order1:=xlDescending, _
Header:=xlYes
Cara ini sering digunakan untuk menampilkan penjualan tertinggi atau nilai terbesar.
Mengurutkan Berdasarkan Dua Kolom
VBA juga memungkinkan Anda menggunakan lebih dari satu kriteria pengurutan.
Range("A1:D20").Sort _
Key1:=Range("C1"), _
Order1:=xlAscending, _
Key2:=Range("D1"), _
Order2:=xlDescending, _
Header:=xlYes
Pada contoh tersebut:
-
data diurutkan berdasarkan Kota terlebih dahulu;
-
jika terdapat kota yang sama, data akan diurutkan lagi berdasarkan Total Penjualan.
Mengurutkan Data Secara Dinamis
Dalam praktiknya, jumlah data biasanya terus berubah. Oleh karena itu, sebaiknya area pengurutan tidak ditulis secara tetap.
Dim LastRow As Long
LastRow = Cells(Rows.Count, "A").End(xlUp).Row
Range("A1:D" & LastRow).Sort _
Key1:=Range("A1"), _
Order1:=xlAscending, _
Header:=xlYes
Dengan cara ini, seluruh data akan tetap diurutkan meskipun jumlah baris bertambah.
Studi Kasus
Misalkan Anda memiliki data berikut.
| ID | Nama | Kota | Total |
|---|---|---|---|
| P003 | Citra | Malang | 850000 |
| P001 | Andi | Surabaya | 1200000 |
| P002 | Budi | Bandung | 950000 |
Untuk mengurutkan berdasarkan Nama, gunakan kode berikut.
Range("A1:D4").Sort _
Key1:=Range("B1"), _
Order1:=xlAscending, _
Header:=xlYes
Setelah makro dijalankan, data akan tersusun secara alfabetis berdasarkan nama pelanggan.
Mengurutkan Berdasarkan Tanggal
Sort juga dapat digunakan pada data bertipe tanggal.
Range("A1:E100").Sort _
Key1:=Range("A1"), _
Order1:=xlDescending, _
Header:=xlYes
Hasilnya, tanggal terbaru akan berada di bagian atas tabel.
Kesalahan yang Sering Dilakukan
Tidak Menyertakan Seluruh Area Data
Jika hanya satu kolom yang dipilih saat proses sort, data pada kolom lain tidak akan ikut berpindah sehingga isi tabel menjadi tidak sesuai.
Pastikan area yang diurutkan mencakup seluruh tabel.
Salah Menentukan Header
Jika data memiliki header tetapi menggunakan Header:=xlNo, maka header dapat ikut berpindah bersama data.
Gunakan nilai yang sesuai dengan struktur worksheet.
Menggunakan Range Tetap
Kode seperti berikut:
Range("A1:D20")
akan menjadi kurang fleksibel ketika jumlah data berubah.
Gunakan teknik Last Row agar area pengurutan menyesuaikan isi worksheet.
Tips Praktis
💡 Selalu sertakan seluruh area tabel saat melakukan sort.
💡 Gunakan LastRow agar proses pengurutan bersifat dinamis.
💡 Pastikan header tidak ikut diurutkan.
💡 Gunakan lebih dari satu Key jika data memiliki beberapa tingkat pengurutan.
💡 Lakukan sort sebelum membuat laporan atau grafik agar hasilnya lebih mudah dibaca.
Ringkasan
| Properti | Fungsi |
|---|---|
Sort |
Mengurutkan data |
Key1 |
Kolom utama untuk pengurutan |
Key2 |
Kolom kedua untuk pengurutan |
xlAscending |
Urutan naik |
xlDescending |
Urutan turun |
Header |
Menentukan apakah tabel memiliki header |
Kesimpulan
Menggunakan fitur Sort melalui VBA Excel membuat proses pengurutan data menjadi lebih cepat, konsisten, dan otomatis. Anda dapat mengurutkan data berdasarkan teks, angka, maupun tanggal, bahkan menggunakan beberapa kolom sekaligus sebagai dasar pengurutan. Dengan menggabungkan teknik Last Row dan Sort, makro akan tetap bekerja dengan baik meskipun jumlah data terus bertambah.
