Skip to content Skip to sidebar Skip to footer

Cara Menghapus Data Ganda Secara Tidak Langsung pada Suatu Kolom Tunggal di Excel

Contoh kode macro di bawah ini mempertunjukkan cara menghapus data ganda yang dilakukan secara tidak langsung pada suatu kolom tunggal yaitu menampilkan kotak dialog terlebih dahulu untuk mengkonfirmasi tindakan penghapusan mengingat setelah data ganda tersebut dihapus maka sulit untuk dikembalikan lagi menjadi keadaan seperti semula karena tidak akan ada opsi Undo.

Adapun kode macro ini merupakan hasil pengubahan dari kode macro dalam postingan Cara Menghapus Data Ganda Secara Langsung pada Suatu Kolom Tunggal di Excel.

Daftar yang Anda miliki mungkin tidak akan selalu berisi masukan data ganda dalam kolom A.

Sebagai contoh, data ganda tersebut berada pada kolom yang berbeda misalnya kolom D.

Untuk mendapatkan acuan kolom yang tetap saling kait-mengait dalam susunan kode macro, silakan Anda ikuti langkah demi langkah berikut:

1. Siapkan sebuah contoh worksheet dengan suatu daftar di kolom D yang di dalamnya memuat data ganda atau duplikat untuk mempraktikkan tutorial ini.

2. Buka VBE dengan menekan Alt+F11.

3. Buat module melalui menu Insert > Module.

4. Tetapkan judul macro Anda misalnya HapusDataGandaKolomD dengan mengetik:

Sub HapusDataGandaKolomD()

5. Ajukan pertanyaan kepada pengguna untuk menegaskan maksud mereka menghapus data ganda pada kolom D:

Dim cek As Integer
cek = _
MsgBox("Apakah Anda ingin menghapus data ganda" & vbCrLf & _
"pada kolom D?" & vbCrLf & vbCrLf & _
"Setelah data ganda tersebut dihapus," & vbCrLf & _
"macro tidak dapat dibatalkan.", _
vbQuestion + vbYesNo, _
"Peringatan!")

6. Apabila jawabannya No, maka macro dihentikan:

If cek = vbNo Then
MsgBox "Tenang, tidak akan ada yang dihapus.", _
vbInformation, _
"Anda telah memilih No."
Exit Sub
Else

7. Jika jawabannya Yes, maka lanjutkan proses penghapusan:

MsgBox "Silakan klik OK untuk menghapus data ganda.", _
vbInformation, _
"Terima kasih telah mengecek!"
End If
With Application
.ScreenUpdating = False
Dim K As Long
K = _
Cells.Find(What:="*", After:=Range("A1"), SearchOrder:=xlByColumns, _
SearchDirection:=xlPrevious).Column + 1

8. Pada titik ini tetapkan kolom D, adapun jika kolomnya adalah K, maka kode dibaca menjadi With Range("K1:K" & Cells(Rows.Count, 11).End(xlUp).Row):

With Range("D1:D" & Cells(Rows.Count, 4).End(xlUp).Row)
.AdvancedFilter Action:=xlFilterInPlace, Unique:=True

9. Pada titik ini, coba perhatikan angka 4 dalam properti Cells, yang mana adalah kolom D. Apabila kolom yang dimaksud adalah kolom K bukannya kolom D, maka angka 4 akan menjadi 11 sehingga .Offset(0, K - 11).Value = 1:

.SpecialCells(xlCellTypeVisible).Offset(0, K - 4).Value = 1
On Error Resume Next
ActiveSheet.ShowAllData
Columns(K).SpecialCells(xlCellTypeBlanks).EntireRow.Delete
Err.Clear
End With
Columns(K).Clear
.ScreenUpdating = True
End With

10. Susunan lengkap kode macro menjadi:

Sub HapusDataGandaKolomD()
Dim cek As Integer
cek = _
MsgBox("Apakah Anda ingin menghapus data ganda" & vbCrLf & _
"pada kolom D?" & vbCrLf & vbCrLf & _
"Setelah data ganda tersebut dihapus," & vbCrLf & _
"macro tidak dapat dibatalkan.", _
vbQuestion + vbYesNo, _
"Peringatan!")
If cek = vbNo Then
MsgBox "Tenang, tidak akan ada yang dihapus.", _
vbInformation, _
"Anda telah memilih No."
Exit Sub
Else
MsgBox "Silakan klik OK untuk menghapus data ganda.", _
vbInformation, _
"Terima kasih telah mengecek!"
End If
With Application
.ScreenUpdating = False
Dim K As Long
K = _
Cells.Find(What:="*", After:=Range("A1"), SearchOrder:=xlByColumns, _
SearchDirection:=xlPrevious).Column + 1
With Range("D1:D" & Cells(Rows.Count, 4).End(xlUp).Row)
.AdvancedFilter Action:=xlFilterInPlace, Unique:=True
.SpecialCells(xlCellTypeVisible).Offset(0, K - 4).Value = 1
On Error Resume Next
ActiveSheet.ShowAllData
Columns(K).SpecialCells(xlCellTypeBlanks).EntireRow.Delete
Err.Clear
End With
Columns(K).Clear
.ScreenUpdating = True
End With
End Sub

11. Kembali ke worksheet dengan menekan Alt+Q

12. Buka kotak dialog Macro dengan cara menekan Alt+F8 lalu pilih HapusDataGandaKolomD dan klik Run.

Itulah penjelasan tentang bagaimana cara menghapus data ganda secara tidak langsung pada suatu kolom tunggal di Excel dengan Macro VBA yaitu menampilkan kotak dialog terlebih dahulu untuk mengkonfirmasi tindakan penghapusan.

Selamat mencoba dan semoga bermanfaat.