Отбор неповторяющихся значений из ячеек заданного диапазона с помощью кода VBA Excel. Пример отбора: исходные значения – 1, 2, 1, 3; результат – 2, 3.
Условие задачи
В диапазоне «A1:A30» содержатся значения, среди которых есть повторяющиеся. Необходимо отобрать из ячеек указанного диапазона неповторяющиеся значения и записать их в первые ячейки столбца «B». Неповторяющиеся значения – это те значения, которые содержатся в заданном диапазоне в единственном экземпляре.
Решение задачи
Будем решать задачу в два этапа:
- Проведем отбор уникальных значений из указанного диапазона с помощью объекта Collection.
- Проверим каждое уникальное значение из коллекции с помощью функции рабочего листа CountIf на количество вхождений в заданный диапазон и, если функция CountIf возвратит значение 1, запишем проверяемое значение в очередную ячейку столбца «B».
Код VBA Excel
Отбор неповторяющихся значений из ячеек указанного диапазона и запись их во второй столбец:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
Sub ОтборНеповторяющихсяЗначений() Dim myRange As Range, myCell As Range, myCollection As New Collection, _ myElement As Variant, i As Long 'отбор уникальных значений в коллекцию Set myRange = Range("A1:A30") On Error Resume Next For Each myCell In myRange myCollection.Add CStr(myCell.Value), CStr(myCell.Value) Next myCell On Error GoTo 0 'проверка значений из коллекции на количество повторений в диапазоне 'и запись значений, удовлетворяющих условию, в столбец "B" For Each myElement In myCollection If WorksheetFunction.CountIf(myRange, myElement) = 1 Then i = i + 1 Cells(i, 2) = myElement End If Next myElement End Sub |
Содержание рубрики VBA Excel по тематическим разделам со ссылками на все статьи.