VBA Function UNIQ
Функция для подсчёта уникальных значений в отфильтрованной таблице





Максимально сокращаем время на ручную работу. Даже в мелочах.

MS Office для Windows

Все мои курсы

Шаблоны


Смотреть курс
Теги: Вопрос-ответ по Excel.

Функция для подсчёта уникальных значений в отфильтрованной таблице

Максимально сокращаем время на ручную работу. Даже в мелочах. Все использованные команды изучаются на курсе Excel-XL: Макросы VBA Excel с нуля (24 ак.ч.)

Создаём свою функцию, аналога которой в Excel нет.

Эта функция будет считать количество уникальных элементов (значений) в списке, в том числе отфильтрованном. Это могут быть даты, текст, числа - всё, что угодно.
Чтобы забрать эту функцию в свой файл, сделайте следующее:

Инструкция в картинках - см. пост #лис_ном_336 у меня в Instagram - OLESYA.EXCEL

По уровню сложности такой макрос Вы сможете написать после моего курса «Макросы на VBA с нуля».

Option Base 1 'массив начинается с 1

Function СчётУникальных(Диапазон)
Dim Arr() 'As Date
For Each Rng In Диапазон 'проверяем каждую ячейку диапазона
     If Rng.EntireRow.Hidden = False Then 'если строка этой ячейки НЕ скрыта
             counter = counter + 1 'считаем порядковый номер текущего значения
             If counter > 1 Then 'если значение уже не первое (то есть в массиве что-то есть)
                  'то проверяем, есть ли уже в массиве такое значение
                  For i = LBound(Arr) To UBound(Arr) 'от первого до последнего элемента массива
                   If Rng = Arr(i) Then 'если нашли такое же значение
                       counter = counter - 1 'возвращаем счётчик на своё значение
                        GoTo 1 'пропускаем значение, идём к следующему
                  End If
                  Next i
              End If
              'сюда приходим только если не нашлось совпадений с предыдущими значениями массива, _
             то есть мы нашли новое уникальное значение в ячейке
              ReDim Preserve Arr(counter) 'переопределяем размер массива с сохранением имеющихся в нём данных
         Arr(counter) = Rng.Value 'записываем значение в массив
     End If
1:
Next
СчётУникальных = UBound(Arr) 'массив состоит в итоге из уникальных значений
End Function


    

Полезные материалы

Переделка значения суммы в формулу
Формулы в итогах
Разбираем различные задачи из реальной практики в Microsoft Excel и находим успешные решения. К примеру вложен файл с образцом, его можно скачать по кнопке.

ВПР может (!) найти второе одинаковое название
Поиск ВПР 2-го значения
Как составить функцию ВПР, чтобы она нашла несколько значений в таблице?

Macro-функция поиска заголовка по данным из таблицы
Function VBA Поиск заголовка
Разбираем различные задачи из реальной практики в Microsoft Excel и находим успешные решения. К примеру вложен файл с образцом, его можно скачать по кнопке.

Табель учёта рабочего времени в EXCEL
Заполнение рабочих часов, праздников и выходных дней с помощью формул
Как формулами настроить заполнение табеля учета рабочего времени? Шаблон такого табеля можно скачать в этом уроке.

Мои ученики работают здесь

Я сотрудничаю с крупными известными компаниями. Вот некоторые из них:

ВТБ МегаФон Глобус Абсолют

Связаться с автором

Оставьте ваше имя и адрес электронной почты, в ближайшее время я свяжусь
с вами для консультации и отвечу на вопросы!



Оставляя заявку, вы соглашаетесь на обработку ваших персональных данных.