Cara menghapus duplikat baris berdasarkan pada beberapa kolom

11

Saya memiliki lembar excel yang berisi baris duplikat

Saya ingin menghapus satu baris jika kolom ACDEFnya sama (Abaikan B saat menghitung duplikat tetapi hapus ketika menghapus satu baris)

Saat ini mengabaikan B sementara perbandingan serta penghapusan.

pengguna33949
sumber
Bisakah Anda menambahkan tangkapan layar dengan sebelum dan yang diinginkan setelah? Saya berjuang untuk menggambarkan apa yang Anda butuhkan (maaf)
Dave
Jadi, setiap nilai duplikat dalam kolom A, C, D, E, F akan menghasilkan penghapusan seluruh baris, mempertahankan instance pertama dari duplikat? Bagaimana jika A1 cocok dengan A2, tetapi C2 cocok dengan C3, apakah baris 2 dihapus?
Raystafarian

Jawaban:

18

Di Excel 2013

  1. Pilih semua Data
  2. Pilih Tab Data -> Hapus duplikat
  3. Periksa 'Kolom saya memiliki tajuk' jika data Anda memiliki tajuk kolom.
  4. Hapus centang semua kolom yang TIDAK ingin Anda gunakan sebagai perbandingan
  5. tekan OK

Selesai

pengguna33949
sumber
Tidak, ini mencari baris yang mirip dengan baris lainnya. Saya juga memikirkan hal ini, tetapi ini adalah solusi untuk pertanyaan yang berbeda :)
Garrulinae
@Garrulinae Apa yang Anda katakan, dapatkah Anda menjelaskan bagaimana ini tidak berhasil? Tampaknya jawaban yang benar untuk pertanyaan OP.
TheCrazyProgrammer
@TheCrazyProgrammer - Melihat ini lebih dari 2 tahun kemudian, saya dapat melihat bahwa pertanyaan OP " Saya ingin menghapus satu baris jika kolom ACDEF-nya sama " dapat diartikan dengan dua cara berbeda. Saya mengartikannya bahwa jika kolom-kolom ini sama satu sama lain dalam baris ini . Jawaban ini mengasumsikan bahwa itu berarti jika nilai-nilai dalam kolom di baris ini sama dengan baris lain . Kalau dipikir-pikir, asumsi ini tampaknya benar, terutama karena telah ditandai sebagai jawaban yang benar.
Garrulinae
@Garrulinae Gotcha. Sekarang saya melihat dan mengerti jawaban Anda. Di samping catatan, saya terkejut bahwa fungsionalitas yang diperlukan oleh OP (dan saya) ada sebagai tombol langsung di Excel, tetapi googling memberi Anda banyak artikel yang melakukan hal-hal rumit yang sejenak membuat saya meragukan jawaban ini.
TheCrazyProgrammer
@TheCrazyProgrammer, saya punya catatan tambahan juga - Saya baru sadar bahwa OP-lah yang memposting jawaban ini! Itu jelas jawaban yang benar, tapi sayang pertanyaannya tidak lebih jelas.
Garrulinae
1

Jika saya mengerti Anda dengan benar, diberi baris 1 dan 2, Anda ingin menghapus baris 2 jika dan hanya jika A1 = A2, C1 = C2, D1 = D2, E1 = E2 dan F1 = F2.

Inilah yang saya pikirkan. Itu mungkin bisa lebih pendek tetapi itu berhasil:

Sub DeleteDuplicate()
Dim current As String
ActiveSheet.Range("A1").Activate
Do While ActiveCell.Value <> ""
    current = ActiveCell.Address
    ActiveCell.Offset(1, 0).Activate
    Do While ActiveCell.Value <> ""
        If ((ActiveSheet.Range(current).Value = ActiveCell.Value) And (ActiveSheet.Range(current).Offset(0, 2).Value = ActiveCell.Offset(0, 2).Value) And (ActiveSheet.Range(current).Offset(0, 3).Value = ActiveCell.Offset(0, 3).Value) And (ActiveSheet.Range(current).Offset(0, 4).Value = ActiveCell.Offset(0, 4).Value) And (ActiveSheet.Range(current).Offset(0, 5).Value = ActiveCell.Offset(0, 5).Value)) Then
            ActiveSheet.Rows(ActiveCell.Row).Delete
        Else
        ActiveCell.Offset(1, 0).Activate
        End If
    Loop
    ActiveSheet.Range(current).Offset(1, 0).Activate
Loop
End Sub

Apa yang dilakukan adalah loop melalui semua baris yang tersisa menggunakan ActiveCell sebagai pointer ke Row yang sedang dievaluasi, dan menyimpan Cell Row "asli" dalam variabel saat ini . Setelah loop berakhir, Sel di bawah arus diaktifkan dan loop evaluasi bagian dalam dimulai lagi.

Jika saya mengacaukan suatu tempat jangan ragu untuk memberi tahu saya :)

kenkh
sumber
1

Tambahkan formula ini ke setiap baris, misalnya; di kolom G:

=IF(AND(A2=C2,A2=D2,A2=E2,A2=F2),"DELETE ME","")

Ini akan memberikan hasil seperti:

A   B   C   D   D   F   G
-   -   -   -   -   -   -
x   o   x   x   x   x   DELETE ME
x   x   x   x   x   o   
x   x   x   x   x   x   DELETE ME
x   o   o   x   x   x   

Lalu buat filter pada Kolom G untuk baris yang bertuliskan 'HAPUS SAYA', dan hapus.

Garrulinae
sumber
0

@ Garrulinae

Saya menggunakan ide Anda sebagai inspirasi. Saya memiliki banyak baris dan yang saya inginkan adalah menghapus baris yang berisi nilai duplikat dari suatu kolom. Jika saya menggunakan Hapus duplikat di kolom itu maka hanya akan menghapus data dari kolom itu dan bukan seluruh baris. Saya ingin menghapus setiap baris 2 dan 3 dari seluruh tabel itu. Jadi, apa yang saya lakukan saya membuat kolom baru dan meninggalkan nilai baris pertama kosong, hapus saya di baris kedua dan ketiga. Dan kemudian saya menyalin nilai dari tiga baris pertama kolom itu saja (bukan seluruh baris) dan ditempelkan di seluruh kolom tabel. Sekarang, saya memiliki "hapus saya" di setiap baris 2 dan 3 dari seluruh kolom. Maka saya hanya perlu mengurutkan nilai-nilai kolom itu dan menghapus semua baris yang mengandung delete me. Anda dapat menggunakan solusi yang sama jika Anda ingin menghapus setiap 2, 3 dan 4 atau 2, 3, 4 dan 5 atau lebih ...

Semoga ini bisa membantu seseorang ....

Sunil
sumber
2
Saya tidak sepenuhnya mengerti apa yang Anda katakan. Alih-alih menggambarkan apa yang Anda lakukan, dapatkah Anda menunjukkan kepada kami formula apa yang Anda gunakan, dan menyajikan beberapa contoh data, dan menunjukkan bagaimana jawaban Anda bekerja pada data itu?
Scott