Поиск уникальных значений с помощью VBA в Microsoft Excel
В этой статье мы создадим настраиваемую функцию для поиска уникальных значений из определенного диапазона.
Исходные данные для этого примера состоят из повторяющихся записей названия страны в диапазоне A8: A21.
Логическое объяснение
Мы создали специальную функцию «UniqueItem» для извлечения уникальных значений из диапазона. Эта функция принимает на вход два параметра.
Первый параметр — это диапазон, который состоит из повторяющихся данных, а второй параметр определяет порядковый номер уникального значения в уникальной коллекции.
Эта функция возвращает уникальное значение из диапазона на основе номера индекса. Второй параметр — необязательный параметр, если второй параметр не указан, функция возвращает номер уникального значения в заданном диапазоне.
Если значение, определенное для второго параметра, больше, чем количество уникальных значений в диапазоне, то функция возвращает последнее уникальное значение.
Объяснение кода
При ошибке возобновить следующее для каждого CellValue в InputRange CUnique.Add CellValue.Value, CStr (CellValue.Value)
[_GoBack] # Next On Error GoTo 0 Приведенный выше код используется для создания объекта коллекции, который будет содержать уникальное значение из определенного диапазона. Операторы «On Error» используются для обработки ошибок, поскольку, когда код пытается поместить повторяющиеся значения в коллекцию, коллекция генерирует ошибку.
Пожалуйста, введите код ниже
Option Explicit Function UniqueItem(InputRange As Range, Optional ItemNo As Integer = 0) As Variant Dim CellValue As Range Dim CUnique As New Collection Dim UCount As Integer On Error Resume Next 'Adding unique items to collection from defined range For Each CellValue In InputRange CUnique.Add CellValue.Value, CStr(CellValue.Value) Next On Error GoTo 0 'Getting count of unique item in the collection UCount = CUnique.Count If ItemNo = 0 Then 'Returning count of unique item UniqueItem = UCount ElseIf ItemNo <= UCount Then 'Returning unique value based on item number UniqueItem = CUnique(ItemNo) Else 'Returning last unique value UniqueItem = CUnique(UCount) End If End Function
Если вам понравился этот блог, поделитесь им с друзьями на Facebook и Facebook.
Мы будем рады услышать от вас, дайте нам знать, как мы можем улучшить нашу работу и сделать ее лучше для вас. Напишите нам на [email protected]