Подсчет уникальных значений

Иногда вам нужно знать количество уникальных значений в диапазоне ячеек. Например, предположим, что инструктор вел следующие классы:

104-120104-101104-119104-120

В этом случае есть три уникальных значения. Не существует интуитивно понятной функции рабочего листа, которая возвращала бы количество уникальных значений, что заставляет думать, что определяемая пользователем функция была бы логическим подходом. Однако вы можете использовать формулу массива, чтобы очень легко получить желаемую информацию. Выполните следующие действия:

  1. Определите имя, которое представляет диапазон, содержащий ваш список. (В этом примере предполагается, что вы определяете имя MyRange.)
  2. В ячейке, где вы хотите, чтобы отображалось количество уникальных значений, введите следующую формулу, но не нажимайте Enter еще:
  3. = SUM (1/COUNTIF (MyRange, MyRange))

  4. Вместо нажатия Enter , нажмите Ctrl + Shift + Enter . Это сообщает Excel, что вы вводите формулу массива. Формула, отображаемая в строке формул, должна теперь выглядеть следующим образом (обратите внимание на добавление окружающих фигурных скобок, указывающих на формулы массива):
  5. {= SUM (1/COUNTIF (MyRange, MyRange))}

    Вот и все! Теперь ячейка содержит количество уникальных значений имени в указанном диапазоне. Этот подход не чувствителен к регистру, поэтому, если у вас есть два значения, которые отличаются только заглавными буквами (ThisName и THISNAME), они оба считаются как одно уникальное значение. Кроме того, в диапазоне не может быть пустых ячеек. (Пустая ячейка возвращает ошибку # DIV/0 из формулы.)

    Если ваши особые потребности требуют, чтобы ваш список содержал пробелы (но вы не хотите, чтобы они учитывались), и вы хотите, чтобы оценка должна быть чувствительной к регистру, тогда вы должны обратиться к макросу. Следующий макрос CountUnique сделает свое дело:

    Функция CountUnique (ByVal MyRange As Range) As Integer Dim Cell As Range Dim J As Integer Dim iNumCells As Integer Dim iUVals As Integer Dim sUCells () В виде строки iNumCells = MyRange.Count ReDim sUCells (iNumCells) В виде строки iUVals = 0 для каждой ячейки в MyRange, если Cell.Text> «», то для J = 1 в iUVals, если sUCells (J) = Cell.Text, то выход для завершения, Next J Если J> iUVals Then iUVals = iUVals + 1 sUCells (iUVals) = Cell.Text End If End If Next Cell CountUnique = iUValsEnd Function

    Просто поместите в ячейку уравнение, подобное приведенному ниже. :

    = CountUnique (MyRange)

    Возвращаемое значение представляет собой количество уникальных значений, не считая пробелов, в диапазоне.

Источник: frestage.ru

Бытовой вопрос