Як видалити дублікати рядків на основі деяких стовпців


11

У мене є лист Excel, який містить дублікати рядків

Я хочу видалити рядок, якщо його стовпці A C D E F є однаковими (Ігнорувати B під час обчислення дублікатів, але видалити його під час видалення рядка)

На даний момент він ігнорує B при порівнянні, а також видаленні.


Чи можете ви додати знімок екрана з попереднім і бажаним після? Я намагаюся уявити, що вам потрібно (вибачте)
Dave

Таким чином, будь-які повторювані значення в стовпцях A, C, D, E, F призведуть до видалення цілого ряду, зберігаючи перший екземпляр дублікату? Що робити, якщо А1 відповідає А2, але C2 відповідає C3, чи видаляється рядок 2?
Raystafarian

Відповіді:


18

У Excel 2013

  1. Виберіть усі дані
  2. Виберіть вкладку Дані - & gt; Видалити дублікати
  3. Якщо ваші дані містять заголовки стовпців, позначте пункт "Мої колонки мають заголовки".
  4. Зніміть прапорці всіх стовпців, які ви не хотіли б використовувати в порівнянні
  5. Натисніть OK

Виконано


Ні, це шукає рядки, подібні до інших рядків. Я також думав про це, але це рішення іншого питання :)
Garrulinae

@Garrulinae Що ви говорите, чи можете ви пояснити, як це не працює? Здається, це правильна відповідь на питання ОП.
TheCrazyProgrammer

@TheCrazyProgrammer - Дивлячись на це більше 2 років по тому, я бачу, що питання ОП " Я хочу видалити рядок, якщо його стовпці A C D E F однакові "можна інтерпретувати двома різними способами. Я зрозумів, що якщо ці стовпці є у цьому рядку . Ця відповідь припускає, що це означає, якщо значення в стовпцях в цей рядок збігається з іншим рядком . Оглядаючись назад, це припущення, мабуть, було правильним, тим більше, що воно було позначено як правильну відповідь.
Garrulinae

@Garrulinae Gotcha. Тепер я побачив і зрозумів вашу відповідь. З іншого боку, я здивований, що функціональність, необхідна для OP (і мені), існує як проста кнопка в Excel, але googling дає вам купу статей, які роблять складні речі, які на хвилину змусили мене засумніватися в цій відповіді.
TheCrazyProgrammer

@TheCrazyProgrammer, у мене також є бічна нотатка - я тільки що зрозумів, що це була операційна програма, яка розмістила цю відповідь! Це, безумовно, правильна відповідь, але соромно, що питання не було більш ясним.
Garrulinae

1

Якщо я вас правильно зрозумів, задавши рядки 1 і 2, ви хочете видалити рядок 2 тоді і тільки тоді, коли A1 = A2, C1 = C2, D1 = D2, E1 = E2 і F1 = F2.

Це те, що я придумав. Можливо, це може бути коротше, але це спрацьовує:

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

Що це роблять, це цикл через всі інші рядки, використовуючи ActiveCell як покажчик на оцінюваний рядок, і зберігає "оригінальну" клітинку рядка в струм змінної. Як тільки петля закінчується, клітина нижче струм активується і повторно починається внутрішній цикл оцінки.

Якщо я десь зіпсував, не соромтеся сказати мені:)


1

Додайте цю формулу до кожного рядка, наприклад; у колонці G:

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

Це дасть такий результат, як:

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   

Потім створіть фільтр на стовпці G для рядків, які говорять "DELETE ME", і видаляйте їх.


0

@ Garrulinae

Я використав вашу ідею як натхнення. У мене було багато рядків, і я хотів, щоб було видалено рядки, що містять повторювані значення стовпця. Якщо я використовую видалення дублікатів над цим стовпцем, він видалить лише дані з цього стовпця, а не весь рядок. Я хотів видалити кожен другий і третій рядок з усієї таблиці. Отже, що я зробив, я зробив нову колонку і залишив значення першого ряду порожнім, видалив мене у другому і третьому ряду. І тоді я скопіював значення перших трьох рядків тієї самої колонки (не всього рядка) і вставив на весь стовпець таблиці. Тепер я мав "видалити мене" у кожному 2-му і 3-му рядках всього стовпця. Тоді я просто повинен відсортувати значення цього стовпця і видалити всі рядки, що містять видалити мене. Ви можете використовувати те ж саме рішення, якщо ви хочете видалити кожен 2-й, 3-й і 4-й або 2-й, 3-й, 4-й і 5-й або так далі ...

Сподіваюся, що це допоможе комусь ....


2
Я не повністю розумію, що ви говорите. Замість опису що ви зробили, можете шоу нам, яку формулу (и) ви використовували, і представити деякі приклади даних, і показати, як ваша відповідь працює на ці дані?
Scott
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.