Удаление повторяющихся текстовых значений

Каждый сталкивается в тот или иной момент с необходимостью – удалить повторяющиеся записи из списка текстовых записей. Предположим, у вас есть текстовые значения в столбце 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 = NothingEnd 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 как целое Application.ScreenUpdating = False Set rngSrc = ActiveSheet.Range (ActiveWindow.Selection.Address) NumRows = rng .Count ThisRow = rngSrc.Row ThatRow = ThisRow + NumRows — 1 ThisCol = rngSrc. Столбец ‘Начать стирание дубликатов 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 ‘Удаление пустых ячеек For J = ThatRow To ThisRow Шаг -1 Если Cells (J, ThisCol) = «» Then Cells (J, ThisCol ) .Delete xlShiftUp End If Next J Application.ScreenUpdating = TrueEnd Sub

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

Источник: frestage.ru

Бытовой вопрос