Каждый в тот или иной момент сталкивается с необходимостью — удалить повторяющиеся записи из списка текстовых записей. Предположим, у вас есть текстовые значения в столбце A рабочего листа, и они выполняются примерно для 500 строк. Если вы хотите удалить любые дубликаты в списке, возможно, вы ищете самый простой способ сделать это.

Вручную можно использовать фильтрацию данных для определения уникальных значений.

Убедитесь, что столбец имеет метку вверху, затем выберите ячейку в столбце. Выберите данные | Фильтр | Расширенный фильтр или в Excel 2007 откройте вкладку «Данные» на ленте и нажмите «Дополнительно» в группе «Сортировка и фильтр». Используйте элементы управления в появившемся диалоговом окне, чтобы указать, что вы хотите скопировать уникальные значения в другое указанное вами место.

Вы также можете использовать формулу для определения дубликатов в списке вручную. Отсортируйте значения в столбце, а затем введите следующую формулу в ячейку B2:

=IF(A2=A1,"Duplicate","")

Скопируйте формулу вниз во все ячейки в столбце B, которые имеют соответствующее значение в столбце A. Выделите все значения в столбце B и нажмите Ctrl + C. Используйте диалоговое окно «Специальная вставка», чтобы вставить только значения в те же выбранные ячейки. Теперь вы преобразовали формулы в их результаты. Отсортируйте два столбца в соответствии с содержимым столбца B, и все ваши повторяющиеся строки будут в одной области. Удалите эти строки, и у вас будет готовый список уникальных значений.

Любой из этих ручных подходов быстр и прост, но если вам постоянно приходится удалять повторяющиеся значения из столбца, макрос может быть более вашим стилем. Следующий макрос полагается на расширенную фильтрацию данных, как и ранее использовавшийся ручной метод:

Sub CreateUniqueList()

Dim rData As Range     Dim rTemp As Range

Set rData = Range(Range("a1"), Range("A65536").End(xlUp))

rData.EntireColumn.Insert     Set rTemp = rData.Offset(0, -1)

rData.AdvancedFilter _         Action:=xlFilterCopy, _         CopyToRange:=rTemp, _         Unique:=True

rTemp.EntireColumn.Copy _         rData.EntireColumn     Application.CutCopyMode = False     rTemp.EntireColumn.Delete     Set rData = Nothing     Set rTemp = Nothing End Sub

Макрос создает временный столбец, использует расширенную фильтрацию для копирования уникальных значений в этот столбец, а затем удаляет исходный столбец данных.

Результатом являются просто уникальные значения в столбце A. Если вы не хотите, чтобы ваш макрос использовал функцию фильтрации данных Excel, то следующий макрос поможет:

Sub DelDups()

Dim rngSrc As Range     Dim NumRows As Integer     Dim ThisRow As Integer     Dim ThatRow As Integer     Dim ThisCol As Integer     Dim J As Integer, K As Integer

Application.ScreenUpdating = False     Set rngSrc = ActiveSheet.Range(ActiveWindow.Selection.Address)



NumRows = rngSrc.Rows.Count     ThisRow = rngSrc.Row     ThatRow = ThisRow + NumRows - 1     ThisCol = rngSrc.Column

'Start wiping out duplicates     For J = ThisRow To (ThatRow - 1)

If Cells(J, ThisCol) > "" Then             For K = (J + 1) To ThatRow                 If Cells(J, ThisCol) = Cells(K, ThisCol) Then                     Cells(K, ThisCol) = ""

End If             Next K         End If     Next J

'Remove cells that are empty     For J = ThatRow To ThisRow Step -1         If Cells(J, ThisCol) = "" Then             Cells(J, ThisCol).Delete xlShiftUp         End If     Next J     Application.ScreenUpdating = True End Sub

Макрос работает с выделением, которое вы сделали перед его вызовом. Таким образом, если вам нужно удалить повторяющиеся ячейки из диапазона A2: A974, просто выберите этот диапазон и затем запустите макрос. По завершении макроса повторяющиеся ячейки удаляются, как и все пустые ячейки.

_Примечание: _

Если вы хотите узнать, как использовать макросы, описанные на этой странице (или на любой другой странице на сайтах ExcelTips), я подготовил специальную страницу, содержащую полезную информацию.

link: / excelribbon-ExcelTipsMacros [Щелкните здесь, чтобы открыть эту специальную страницу в новой вкладке браузера].

ExcelTips — ваш источник экономичного обучения Microsoft Excel.

Этот совет (2430) относится к Microsoft Excel 97, 2000, 2002 и 2003. Вы можете найти версию этого совета для ленточного интерфейса Excel (Excel 2007 и новее) здесь:

link: / excelribbon-Deleting_Duplicate_Text_Values ​​[Удаление повторяющихся текстовых значений].