Я пытался создать в VBA пользовательскую функцию, которая выполняет подсчет уникальных значений в диапазоне; поэтому я использую метод Excel-функции в качестве основы.
Функция Excel будет выглядеть примерно так:
{= SUM(1/COUNTIF(range,range))}
Итак, моя попытка воспроизвести это в VBA выглядит следующим образом:
Public Function f_COUNTDISTINCT(rng_range As Range)
With Application.WorksheetFunction
f_COUNTDISTINCT = .Sum(1 / .CountIf(rng_range, rng_range))
End With
End Function
У меня нет успеха! Я подозреваю, что это потому, что я должен сказать VBA сделать эквивалент формулы массива, но я не уверен, как. Я пробовал использовать квадратные скобки в разных конфигурациях, но безрезультатно.
Как мне это сделать?
NB: я понимаю, что есть более элегантные способы сделать это, используя другой метод, например, здесь https://excelchamps.com/blog/count-unique-values-excel/#6, однако я хотел бы изучить технику, с помощью которой я мог бы сделать метод, который я использую Работа. Заранее спасибо.