Я пытаюсь создать функцию в VBA, которая при задании диапазона значений вернет Count Distinct этих значений. Например:Функция для подсчета различных значений в диапазоне столбцов
| Column A | |----------| | 1 | | 2 | | 3 | | 3 | | 3 | | 3 | | 4 | | 4 | | 5 | | 5 | | 6 |
Число рядов = 11 различающиеся значения = 6
Вот структура кода VBA Я пытаюсь использовать, чтобы построить функцию я могу позвонить в Excel:
Function CountDistinct(dataRange As Range)
Dim x As Double
x = 0
For i = 1 To dataRange.Rows.Count
x = x + (1/(CountIf(dataRange, dataRange(i))))
Next i
End Function
Я совершенно не знаком с программированием VBA, поэтому извиняюсь за все очевидные, вопиющие ошибки, сделанные в коде выше, если его даже можно назвать так.
Я знаю, что есть другие способы найти правильный ответ, но мне интересно узнать, как создавать пользовательские функции Excel.
Кроме того, псевдо-логика моего подхода заключается в следующем:
- Дайте функцию CountDistinct диапазон ячеек dataRange
- Loop через диапазон
- Для каждой ячейки диапазон, выполните COUNTIF по этому значению в диапазоне (поэтому в приведенном выше примере строки 3-6 будут возвращать , так как онемение er 3 появляется 4 раза в диапазоне).
- Для каждой ячейки в диапазоне, добавьте 1/(результат шага 3) в результате переменной х
| Values | CountIF(Value) | 1/CountIF(Value) | |--------|----------------|-----------------------------| | 1 | 1 | 1 | | 2 | 1 | 1 | | 3 | 4 | 0.25 | | 3 | 4 | 0.25 | | 3 | 4 | 0.25 | | 3 | 4 | 0.25 | | 4 | 2 | 0.5 | | 4 | 2 | 0.5 | | 5 | 2 | 0.5 | | 5 | 2 | 0.5 | | 6 | 1 | 1 | | | | SUM of 1/CountIF(Value) = 6 |
Это будет возвращать граф различных значений в столбце A == 6 .
Вы можете использовать функцию, чтобы найти количество уникальных значений: http://office.microsoft.com/en-us/excel-help/count-occurrences-of-values-or-unique-values-in- a-data-range-HP003056118.aspx # BMcount_the_number_of_unique_values_by_ – Chrismas007