Cara Menghapus Baris Data Ganda Lebih dari Satu Kolom Excel dengan Macro VBA
Kolom ganda atau kolom multi memiliki daftar data ganda pada saat setiap kepingan data dalam setiap kolom dari suatu baris data telah dinyatakan memiliki kecocokan dengan baris data lainnya secara keseluruhan.
Oleh karena itu, terkadang data ganda dalam daftar tidak cukup hanya dihapus barisnya menurut satu kolom saja.
Dalam beberapa kasus, Anda perlu membandingkan deretan gabungan dari setiap baris data dan kemudian membandingkannya pada deretan gabungan dari keseluruhan baris data lainnya.
Coba perhatikan gambar di atas yang merupakan daftar asli, dan gambar di bawah ini adalah daftar setelah data gandanya dihapus.
Daftar di atas hanyalah contoh dengan jumlah kecil, sebagai cara yang paling cepat untuk menangani daftar yang panjang barisnya mencapai ribuan baris, maka Anda perlu menyusun kode macro di bawah ini.
Silakan Anda mengikuti langkah-langkah berikut:
1. Siapkan worksheet yang berisi data ganda atau Anda bisa menyalin data contoh seperti pada gambar.
2. Buka VBE dengan menekan Alt+F11.
3. Buat module melalui menu Insert > Module.
4. Tetapkan judul macro misalnya HapusDGLebihDr1Kolom:
Sub HapusDGLebihDr1Kolom()
5. Tepat di bawah garis kode di atas, matikan ScreenUpdating terlebih dahulu supaya macro melakukan proses dengan lancar dan cepat:
Application.ScreenUpdating = False
6. Tetapkan variabel Range untuk kolom bantu:
Dim X As Range
7. Tetapkan barisan sel dinamis dari variabel Range:
Set X = Range("E1:E" & Cells(Rows.Count, 1).End(xlUp).Row)
8. Buka dengan susunan With untuk variabel X untuk efisiensi:
With X
9. Masukkan rumus Excel SUMPRODUCT pada semua sel dalam kolom bantu (kolom E) yang akan menghasilkan nilai TRUE jika ditemukan data ganda dan FALSE jika data dinyatakan unik:
"=SUMPRODUCT((R1C1:RC1=RC1)*(R1C2:RC2=RC2)*(R1C3:RC3=RC3)*(R1C4:RC4=RC4))>1"
10. Jadikan rumus menjadi nilai statis. Hal ini dikarenakan nilai tersebut akan disaring dan kemungkinan akan dihapus jika menghasilkan nilai TRUE:
.Value = .Value
11. Gunakan alat AutoFilter pada kolom bantu untuk nilai TRUE:
.AutoFilter Field:=1, Criteria1:="TRUE"
12. Lakukan bypass pada Error barangkali nilai TRUE tidak ditemukan pada kolom bantu:
On Error Resume Next
13. Garis kode berikut memperluas variabel X untuk menampilkan baris pertama lalu menghapus semua baris tersaring yang tampil:
.Offset(1).Resize(.Rows.Count - 1).SpecialCells(xlCellTypeVisible).EntireRow.Delete
14. Hapus objek Error barangkali terjadi run time error. Jika nilai TRUE yang akan dihapus tidak ditemukan pada kolom bantu:
Err.Clear
15. Tutup susuan With untuk objek variabel X:
End With
16. Hentikan penggunaan AutoFilter:
ActiveSheet.AutoFilterMode = False
17. Hapus semua nilai bantu (hanya ada nilai FALSE di titik ini). Angka 5 dalam Columns artinya adalah kolom E yang merupakan kolom kelima dari kiri worksheet Excel:
Columns(5).Clear
18. Hapus objek variabel barisan sel untuk memulihkan kembali memori sistem:
Set X = Nothing
19. Hidupkan kembali ScreenUpdating:
End Sub
20. Kode lengkapnya sebagai berikut:
Application.ScreenUpdating = False
Dim X As Range
Set X = Range("E1:E" & Cells(Rows.Count, 1).End(xlUp).Row)
With X
.FormulaR1C1 = _
"=SUMPRODUCT((R1C1:RC1=RC1)*(R1C2:RC2=RC2)*(R1C3:RC3=RC3)*(R1C4:RC4=RC4))>1"
.Value = .Value
.AutoFilter Field:=1, Criteria1:="TRUE"
On Error Resume Next
.Offset(1).Resize(.Rows.Count - 1).SpecialCells(xlCellTypeVisible).EntireRow.Delete
Err.Clear
End With
ActiveSheet.AutoFilterMode = False
Columns(5).Clear
Set X = Nothing
Application.ScreenUpdating = True
End Sub
21. Buka kembali worksheet dengan menekan Alt+Q
22. Buka kotak dialog Macro dengan cara menekan Alt+F8 lalu pilih HapusDGLebihDr1Kolom dan klik Run.
Itulah penjelasan tentang bagaimana cara menghapus baris data ganda lebih dari satu kolom Excel dengan kode Macro VBA.
Selamat mencoba dan semoga bermanfaat.


