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

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

4 ответа4

1

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

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

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

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

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

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

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

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

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

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

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

Заметки

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

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

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 Not Not foundit Is Nothing
0

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

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

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

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 и у вас останутся уникальные номера ячеек.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .