Удалить дубликаты после фильтрации

0

enter image description here

После использования этой формулы =IF(ISERROR(MATCH(A2,B:B,0)),A2,"") в столбце C он красиво отфильтровывает номера из черного списка.

Но мне нужен совет для дальнейшего шага: как удалить дубликаты?

user245491
источник
У меня есть пара предложений по улучшению этого вопроса, то есть, чтобы помочь другим помочь вам. 1) Включите версию Office, которую вы используете. 2) Включите данные в виде текста (никто не хочет вводить их все) 3) Дайте нам знать, что вы уже пробовали после исследования вопроса
Chris
@nixda спасибо за макрос. Можно ли включить фильтрацию черного списка в том же макросе?
user245491
@ user245491 Я выложил рабочую версию для вашего случая
nixda

Ответы:

1

Попробуйте использовать расширенный фильтр, как описано в Microsoft: http://support.microsoft.com/kb/262277

Чтобы создать скомпилированный список уникальных записей, выполните следующие действия:

  1. Выберите заголовки столбцов над строками или записями, которые вы хотите Сортировать.

  2. В меню «Данные» выберите пункт «Фильтр» и нажмите «Расширенный фильтр». Если вам будет предложено следующее, нажмите ОК. Заголовки не обнаружены. Предположим, верхняя строка выбора является строкой заголовка?

  3. В разделе «Действие» нажмите «Копировать в другое место».

  4. Нажмите, чтобы установить флажок Только уникальные записи.

  5. В поле Диапазон списка введите или выберите диапазон записей (например, A3: H10).

  6. В поле Диапазон критериев введите или выберите тот же диапазон записей. (то есть A3: H10)

  7. В поле «Копировать в» введите адрес или выберите первую ячейку где вы хотите разместить информацию. Убедитесь, что есть достаточно места, чтобы не перезаписывать ранее существующие данные.

    Имейте в виду, что вы можете сделать это только на активном листе.

  8. Нажмите ОК.

Заметки

Если первая запись исходных данных дублируется, она появляется дважды в новом списке. Просто скрой первую строку.

Если вы выполните команду расширенного фильтра на месте, лист все равно будет содержать все записи. Дублирующиеся записи скрыты. Чтобы обойти это поведение, выберите «Строки» в меню «Формат», а затем нажмите «Показать».

Chris
источник
отметил ваши комментарии. сделал расширенную фильтрацию красиво. Благодарю.
user245491
0

Оригинальный код (чтобы удалить дубликаты из столбца: https://superuser.com/a/49618/50173 )

'Remove duplicates from SORTED list
Sub getDistinct()
    Do While ActiveCell.Value <> ""
        If ActiveCell.Value = ActiveCell.Offset(1, 0).Value Then
            ActiveCell.Select
            Selection.Delete Shift:=xlUp
        Else
            ActiveCell.Offset(1, 0).Activate
        End If
    Loop
End Sub

модификация

В соответствии If ActiveCell.Value = ActiveCell.Offset(1, 0).Value макрос проверяет, имеет ли следующая ячейка ниже текущей ячейку то же значение. Если да, он удаляет текущую и переходит к следующей ячейке.

Вы можете добавить второе условие в оператор IF, чтобы оно также удаляло ячейки из вашего черного списка. Вот псевдокод.

if ActiveCell = NextCell OR ActiveCell = FoundinBlacklist then delete Activecell

Финальный код

Sub getDistinct()
    Do While ActiveCell.Value <> ""
        On Error Resume Next
        Set foundit = Range("B2:B7").Find(ActiveCell, lookat:=xlWhole)
        On Error GoTo 0
        If ActiveCell = ActiveCell.Offset(1, 0) Or Not foundit Is Nothing Then
            ActiveCell.Select
            Selection.Delete Shift:=xlUp
        Else
            ActiveCell.Offset(1, 0).Activate
        End If   
    Loop
End Sub

Заметки

  1. Чтобы использовать макросы VBA, перейдите в Developer » Visual basic »Вставить код куда-нибудь
  2. Имейте в виду, что этот код работает только для отсортированных списков. Так что сортируйте столбец данных раньше.
  3. Вы должны поместить курсор в начало списка и запустить макрос через Alt + F8
  4. Вы должны изменить Range("B2:B7") соответственно диапазону вашего собственного черного списка
  5. Вы можете легко перейти от черного списка к концепции белого списка, удалив Not от Not foundit Is Nothing
nixda
источник
0

Вы можете изменить формулу на:

=IF(ISNA(MATCH(A2,B:B,0)) * ISNA(MATCH(A2,C$1:C1,0)),A2,"")

Он не будет отображать дублированные записи. Затем вы можете использовать Автофильтр, исключая (Blanks)и скопируйте и вставьте значения на новый лист.

Aprillion
источник
0

Сделайте следующее:

  1. Напишите эту формулу в B2 & Амп; заполните его.

    = СЧЕТЕСЛИ (А $ 2: А2, А2)

  2. Counif функция сгенерирует список 1's & Амп; 2'sТеперь вам нужно удалить строки, для которых число больше 1,

  3. Нажми на Filter кнопка в Data Tab применить Autofilter,

  4. От column B выберите строки, которые не равны 1,

  5. Затем вы можете удалить эти строки, выделив их и выбрав Delete Rows,

  6. Наконец удалите Filter & Амп; у вас останутся уникальные номера сот

Rajesh S
источник