После использования этой формулы =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
foundit Is Nothing
Сделайте следующее:
Напишите эту формулу в B2
& Амп; заполните его.
= СЧЕТЕСЛИ (А $ 2: А2, А2)
Counif
функция сгенерирует список 1's
& Амп; 2's
Теперь вам нужно удалить строки, для которых число больше 1
,
Нажми на Filter
кнопка в Data Tab
применить Autofilter
,
От column B
выберите строки, которые не равны 1
,
Затем вы можете удалить эти строки, выделив их и выбрав Delete Rows
,
Наконец удалите Filter
& Амп; у вас останутся уникальные номера сот