После использования этой формулы =IF(ISERROR(MATCH(A2,B:B,0)),A2,"")
в столбце C он хорошо отфильтровывает числа из черного списка.
Но мне нужен совет для дальнейшего шага: как удалить дубликаты?
После использования этой формулы =IF(ISERROR(MATCH(A2,B:B,0)),A2,"")
в столбце C он хорошо отфильтровывает числа из черного списка.
Но мне нужен совет для дальнейшего шага: как удалить дубликаты?
Попробуйте использовать расширенный фильтр, как описано в Microsoft: http://support.microsoft.com/kb/262277
Выберите заголовки столбцов над строками или записями, которые вы хотите отсортировать.
В меню «Данные» выберите пункт «Фильтр» и нажмите «Расширенный фильтр». Если вам будет предложено следующее, нажмите ОК. Заголовки не обнаружены. Предположим, верхняя строка выбора является строкой заголовка?
В разделе «Действие» нажмите «Копировать в другое место».
Нажмите, чтобы установить флажок Только уникальные записи.
В поле Диапазон списка введите или выберите диапазон записей (например, A3:H10).
В поле Диапазон критериев введите или выберите тот же диапазон записей (т. Е. A3:H10).
В поле «Копировать в» введите адрес или выберите первую ячейку, в которую вы хотите поместить информацию. Убедитесь, что места достаточно, чтобы не перезаписывать ранее существующие данные.
Имейте в виду, что вы можете сделать это только на активном листе.
Нажмите ОК.
Заметки
Если первая запись исходных данных дублируется, она появляется дважды в новом списке. Просто скрой первую строку.
Если вы выполните команду расширенного фильтра на месте, лист все равно будет содержать все записи. Дублирующиеся записи скрыты. Чтобы обойти это поведение, выберите «Строки» в меню «Формат», а затем нажмите «Показать».
Оригинальный код (для удаления дубликатов из столбца: 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
Developer » Visual basic
» и вставьте куда-нибудь кодRange("B2:B7")
соответственно диапазону вашего черного спискаNot
not Not Not
foundit Is Nothing
Вы можете изменить формулу на:
=IF(ISNA(MATCH(A2,B:B,0)) * ISNA(MATCH(A2,C$1:C1,0)),A2,"")
Он не будет отображать дублированные записи. Затем вы можете использовать Автофильтр, исключая (Blanks)
, и скопировать и вставить значения на новый лист.
Сделайте следующее:
Запишите эту формулу в B2
и заполните ее.
= СЧЕТЕСЛИ (А $ 2: А2, А2)
Функция Counif
сгенерирует список 1's
и 2's
, теперь вам нужно удалить строки, для которых количество больше 1
.
Нажмите кнопку « Filter
на Data Tab
чтобы применить Autofilter
.
Из column B
выберите строки, которые не равны 1
.
Затем вы можете удалить эти строки, выделив их и выбрав Delete Rows
.
Наконец, удалите Filter
и у вас останутся уникальные номера ячеек.