В столбце B есть повторяющиеся значения. Подскажите, как удалить строки (целиком), в которых значение в ячейке B* повторяет уже существующее. В файле есть пример того, что должно получиться в итоге.
Заранее спасибо!
Здравствуйте!
В столбце B есть повторяющиеся значения. Подскажите, как удалить строки (целиком), в которых значение в ячейке B* повторяет уже существующее. В файле есть пример того, что должно получиться в итоге.
Удаляются дубликаты или в одном столбце, при этом значения в других строках теряются. Или удаляются только строки, где полностью одинаковые значения во всех ячейках. Мне же нужно, чтобы строки были удалены на основании дубликатов только в одном столбце.
Удаляются дубликаты или в одном столбце, при этом значения в других строках теряются. Или удаляются только строки, где полностью одинаковые значения во всех ячейках. Мне же нужно, чтобы строки были удалены на основании дубликатов только в одном столбце.msvmsu
Сообщение отредактировал msvmsu - Пятница, 18.10.2013, 13:23
Sub УдалениеСтрокПоУсловию() Dim ra As Range, delra As Range, ТекстДляПоиска As String Application.ScreenUpdating = False ' отключаем обновление экрана ТекстДляПоиска = InputBox("что ищем? ", "Введите текст для поиска") ' удаляем строки с таким текстом i = 0 ' перебираем все строки в используемом диапазоне листа For Each ra In selection ' если в строке найден искомый текст If Not ra.Find(ТекстДляПоиска, , xlValues, xlPart) Is Nothing Then ' добавляем строку в диапазон для удаления If delra Is Nothing Then Set delra = ra Else Set delra = Union(delra, ra) i = i + 1 End If Next ' если подходящие строки найдены - удаляем их answ = MsgBox("Найдено " & i & " строк. Удалить?", vbYesNo) Select Case answ Case vbNo Exit Sub End Select If Not delra Is Nothing Then delra.EntireRow.Delete Application.ScreenUpdating = True End Sub
[/vba] Где взял - не помню.
Выделяете диапазон и запускаете макрос: [vba]
Код
Sub УдалениеСтрокПоУсловию() Dim ra As Range, delra As Range, ТекстДляПоиска As String Application.ScreenUpdating = False ' отключаем обновление экрана ТекстДляПоиска = InputBox("что ищем? ", "Введите текст для поиска") ' удаляем строки с таким текстом i = 0 ' перебираем все строки в используемом диапазоне листа For Each ra In selection ' если в строке найден искомый текст If Not ra.Find(ТекстДляПоиска, , xlValues, xlPart) Is Nothing Then ' добавляем строку в диапазон для удаления If delra Is Nothing Then Set delra = ra Else Set delra = Union(delra, ra) i = i + 1 End If Next ' если подходящие строки найдены - удаляем их answ = MsgBox("Найдено " & i & " строк. Удалить?", vbYesNo) Select Case answ Case vbNo Exit Sub End Select If Not delra Is Nothing Then delra.EntireRow.Delete Application.ScreenUpdating = True End Sub
Если я првильно понимаю, этот макрос удаляет строки по определенному значению, которое специально вводится. А мне нужно, чтобы удалились дубликаты. При этом одна строка с таким значением осталась (т.е. чтобы значение стало уникальным). Или я неправильно пользуюсь этим макросом?
Если я првильно понимаю, этот макрос удаляет строки по определенному значению, которое специально вводится. А мне нужно, чтобы удалились дубликаты. При этом одна строка с таким значением осталась (т.е. чтобы значение стало уникальным). Или я неправильно пользуюсь этим макросом?msvmsu
msvmsu, Китин вам уже предложил самый простой рабочий вариант. Выделяете все, нажимаете "удалить дубликаты", оставляете только тот столбец, где нужен поиск дублей и жмете ок.
А я "протупил" и поспешил
Если совсем лень разобраться, то вот:[vba]
Код
Sub removeduplicates() ActiveSheet.UsedRange.removeduplicates Columns:=2, Header:=xlNo End Sub
[/vba]
msvmsu, Китин вам уже предложил самый простой рабочий вариант. Выделяете все, нажимаете "удалить дубликаты", оставляете только тот столбец, где нужен поиск дублей и жмете ок.
А я "протупил" и поспешил
Если совсем лень разобраться, то вот:[vba]
Код
Sub removeduplicates() ActiveSheet.UsedRange.removeduplicates Columns:=2, Header:=xlNo End Sub