Удаление повторяющихся текстовых значений (Microsoft Excel)
Каждый в тот или иной момент сталкивается с необходимостью — удалить повторяющиеся записи из списка текстовых записей. Предположим, у вас есть текстовые значения в столбце 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 [Удаление повторяющихся текстовых значений]
.