Cách xóa hàng trùng lặp dựa trên một số cột


11

Tôi có một bảng excel chứa các hàng trùng lặp

Tôi muốn xóa một hàng nếu các cột ACDEF của nó giống nhau (Bỏ qua B trong khi tính toán trùng lặp nhưng xóa nó trong khi xóa một hàng)

Hiện tại nó bỏ qua B trong khi so sánh cũng như xóa.


Bạn có thể thêm một ảnh chụp màn hình với một trước và mong muốn sau? Tôi đang vật lộn để hình dung những gì bạn cần (xin lỗi)
Dave

Vì vậy, bất kỳ giá trị trùng lặp trong các cột A, C, D, E, F sẽ dẫn đến xóa toàn bộ hàng, giữ phiên bản đầu tiên của bản sao? Điều gì xảy ra nếu A1 khớp với A2, nhưng C2 khớp với C3, hàng 2 có bị xóa không?
Raystafarian

Câu trả lời:


18

Trong Excel 2013

  1. Chọn tất cả dữ liệu
  2. Chọn tab dữ liệu -> Xóa trùng lặp
  3. Kiểm tra cột 'Cột của tôi có tiêu đề' nếu dữ liệu của bạn có tiêu đề cột.
  4. Bỏ chọn tất cả các cột bạn không muốn sử dụng so sánh
  5. nhấn OK

Làm xong


Không, cái này tìm các hàng tương tự với các hàng khác. Tôi cũng đã nghĩ về điều này, nhưng đó là một giải pháp cho một câu hỏi khác :)
Garrulinae

@Garrulinae Bạn đang nói gì, bạn có thể giải thích cách này không hoạt động không? Có vẻ như câu trả lời đúng cho câu hỏi của OP.
TheCrazyProgrammer

@TheCrazyProgrammer - Nhìn vào điều này hơn 2 năm sau, tôi có thể thấy rằng câu hỏi của OP " Tôi muốn xóa một hàng nếu các cột ACDEF của nó giống nhau " có thể được hiểu theo hai cách khác nhau. Tôi lấy nó có nghĩa là nếu các cột này giống nhau trong hàng này . Câu trả lời này giả định rằng nó có nghĩa là nếu các giá trị trong các cột trong hàng này giống với một hàng khác . Nhìn nhận lại, giả định này dường như đã đúng, đặc biệt vì nó đã được đánh dấu là câu trả lời đúng.
Garrulinae

@Garrulinae Gotcha. Bây giờ tôi đã thấy và hiểu câu trả lời của bạn. Bên cạnh đó, tôi ngạc nhiên rằng chức năng mà OP (và tôi) yêu cầu tồn tại dưới dạng một nút đơn giản trong Excel, nhưng việc googling cung cấp cho bạn một loạt các bài viết làm những việc phức tạp khiến tôi nghi ngờ câu trả lời này.
TheCrazyProgrammer

@TheCrazyProgrammer, tôi cũng có một lưu ý phụ - Tôi chỉ mới nhận ra rằng chính OP đã đăng câu trả lời này! Đó rõ ràng là câu trả lời đúng, nhưng thật xấu hổ khi câu hỏi không rõ ràng hơn.
Garrulinae

1

Nếu tôi hiểu đúng về bạn, đã cho hàng 1 và 2, bạn muốn xóa một hàng 2 khi và chỉ khi A1 = A2, C1 = C2, D1 = D2, E1 = E2 và F1 = F2.

Đây là những gì tôi đã đưa ra. Nó có thể ngắn hơn nhưng nó thực hiện các mẹo:

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

Những gì nó làm là lặp qua tất cả các dòng còn lại bằng cách sử dụng ActiveCell làm con trỏ tới Hàng được đánh giá và lưu trữ Ô của "bản gốc" trong biến hiện tại . Khi vòng lặp kết thúc, Ô bên dưới dòng được kích hoạt và vòng đánh giá bên trong bắt đầu lại.

Nếu tôi nhắn tin ở đâu đó đừng ngần ngại nói với tôi :)


1

Thêm công thức này vào mỗi hàng, ví dụ; trong cột G:

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

Điều này sẽ cho một kết quả như:

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   

Sau đó, tạo bộ lọc trên Cột G cho các hàng có nội dung 'XÓA ME' và xóa chúng.


0

@ Garrulinae

Tôi đã sử dụng ý tưởng của bạn như một nguồn cảm hứng. Tôi đã có rất nhiều hàng và điều tôi muốn là xóa các hàng chứa các giá trị trùng lặp của một cột. Nếu tôi sử dụng Loại bỏ trùng lặp trên cột đó thì nó sẽ chỉ xóa dữ liệu khỏi cột đó chứ không xóa toàn bộ hàng. Tôi muốn xóa mỗi hàng thứ 2 và thứ 3 khỏi toàn bộ bảng đó. Vì vậy, những gì tôi đã làm tôi đã tạo một cột mới và để trống giá trị của hàng đầu tiên, hãy xóa tôi ở hàng thứ hai và thứ ba. Và sau đó tôi đã sao chép các giá trị của ba hàng đầu tiên của cột cụ thể đó (không phải toàn bộ hàng) và dán trên toàn bộ cột của bảng. Bây giờ, tôi đã "xóa tôi" ở mỗi hàng thứ 2 và thứ 3 của toàn bộ cột. Sau đó, tôi chỉ cần sắp xếp các giá trị của cột đó và xóa tất cả các hàng có chứa tôi. Bạn có thể sử dụng cùng một giải pháp nếu bạn muốn xóa mỗi thứ 2, 3 và 4 hoặc 2, 3, 4 và 5, v.v.

Hy vọng nó sẽ giúp được ai đó ....


2
Tôi không hoàn toàn hiểu những gì bạn đang nói. Thay vì mô tả những gì bạn đã làm, bạn có thể chỉ cho chúng tôi công thức nào bạn đã sử dụng và trình bày một số dữ liệu mẫu và cho biết câu trả lời của bạn hoạt động như thế nào trên dữ liệu đó?
Scott
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.