mail mail
Нужен макрос для Excel?
Сделайте заказ прямо сейчас!
Ищете готовое решение?
Выбирайте и покупайте!
У вас есть интернет-магазин?
Настроим парсер под любой сайт!

Выборка уникальных значений из диапазона ячеек

Функция UniqueValues возвращает коллекцию, содержащую уникальные непустые значения из диапазона ячеек (или массива)

Function UniqueValues(ByVal arr) As Collection
    ' функция получает в качестве параметра массив любой размерности
    ' возвращает коллекцию уникальных НЕПУСТЫХ значений
    Set UniqueValues = New Collection: On Error Resume Next
    For Each v In arr
        v = Trim(v): If Len(v) Then UniqueValues.Add CStr(v), CStr(v)
    Next v
End Function
 
 
Sub ПримерИспользования_UniqueValues()
    For Each v In UniqueValues([a3:b6500].Value)
        Debug.Print v
    Next
End Sub

Если же требуется найти уникальные значения в массиве из нескольких столбцов, или получить результат (уникальные значения) в виде массива (для последующей записи на лист, или в элемент управления типа ComboBox или ListBox), то используйте функцию UniqueValuesFromArray:
http://excelvba.ru/code/UniqueValuesFromArray

(добавлено)
Если диапазон состоит из нескольких несмежных диапазонов - то используйте такую функцию:

Function UniqueValuesFormRange(ByVal ra As Range) As Collection
    ' функция получает в качестве параметра диапазон ячеек
    ' возвращает коллекцию уникальных НЕПУСТЫХ значений
    Set UniqueValuesFormRange = New Collection: On Error Resume Next
    Dim ar As Range
    For Each ar In ra.Areas
        For Each v In ar.Value
            v = Trim(v): If Len(v) Then UniqueValuesFormRange.Add CStr(v), CStr(v)
        Next v
    Next ar
End Function

Пример её использования:

Sub ПримерИспользования_UniqueValuesFormRange()
    For Each v In UniqueValuesFormRange(Selection)
        Debug.Print v
    Next
End Sub

Комментарии

Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Сохранить установки".

Как это использовать? Я скопировал код в созданный модуль VBA, потом, через пользовательские функции запускаю функцию, выделяю диапазон массива, жму ввод и получаю облом в виде #ЗНАЧ!

Спасибо! Очень помогло!

Дольше искал в хелпе, куда возвращает список )
Вы съэкономили мне сутки жизни.
Благодарю.

Отправить комментарий

Содержание этого поля является приватным и не предназначено к показу.
CAPTCHA
Подтвердите, пожалуйста, что вы - человек:
                             ____  __  __            
_ _ ___ __ __ / ___| \ \/ / _ __ ___
| | | | / __| \ \ /\ / / | | \ / | '_ ` _ \
| |_| | | (__ \ V V / | |___ / \ | | | | | |
\__,_| \___| \_/\_/ \____| /_/\_\ |_| |_| |_|
Введите код, изображенный в стиле ASCII-арт.

Не получается применить макрос? Не удаётся изменить код под свои нужды?

Оформите заказ у нас на сайте, не забыв прикрепить примеры файлов, и описать, что и как должно работать.