Excel количество раз, когда было выбрано уникальное значение

306
Abdd

У меня длинный файл с тремя столбцами, первый столбец содержит названия учреждений, второй столбец содержит имена клиентов в каждом учреждении, а третий столбец содержит поле «Да / Нет», указывающее, имеет ли конкретный клиент в конкретном учреждении был выбран

Inst. Cust. Selected INST_1 CUST_1 Yes INST_1 CUST_2 Yes INST_1 CUST_3  INST_1 CUST_4  INST_2 CUST_5 Yes INST_2 CUST_6  INST_2 CUST_7  INST_3 CUST_8 Yes INST_3 CUST_9  INST_3 CUST_10  INST_3 CUST_11  INST_3 CUST_12 Yes INST_3 CUST_13  INST_3 CUST_14  INST_4 CUST_15  INST_4 CUST_16 Yes INST_4 CUST_17 Yes INST_4 CUST_18 Yes 

Я заинтересован в подсчете количества учреждений, в которых был выбран один, два или более двух клиентов.

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

количество учреждений с одним выбранным клиентом: 1

количество учреждений с двумя выбранными клиентами: 2

количество учреждений с тремя и более выбранными клиентами: 1

1
Сортируются ли данные так, как показано, чтобы решения могли полагаться на непрерывность записей организации? Если это так, и вы не хотите использовать сводную таблицу, вы можете использовать вспомогательный столбец, чтобы заполнить 1-ую или последнюю строку для каждого учреждения количеством Да для этого учреждения. Затем СЧИТАЙТЕ значения счетчиков для различных результатов, которые вы хотите. fixer1234 7 лет назад 0

2 ответа на вопрос

0
rGggg

Я бы использовал функцию кодирования Марко в плагине VBA. Я не буду давать точный код, потому что он меняется очень часто. Но вот немного базового псевдокодирования.

  1. «Получить» данные из ячейки, чтобы посмотреть в первую очередь. Как только вы поймете, как ваш Excel получает данные, подумайте, как это зациклить.
  2. Установите формулу для анализа, затем «PUT» в ячейку данных
  3. Перейдите к следующей ячейке или увеличьте ее до следующей ячейки. примечание: вместо GET и PUT вы можете использовать READ и WRITE. Я считаю, что разница между ними заключается в том, что один читает двоичное значение, а другой - строковые значения. Большинство программистов используют строковые значения для хранения значений и обрабатывают их как float или int.
0
Abdd

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

Для реализации формулы я добавил дополнительный столбец, трансформирующий Inst. столбец в столбец, содержащий только числовые идентификаторы. Это необходимо, чтобы иметь возможность использовать FREQUENCYфункцию.

Inst. Inst_ID Cust. Selected INST_1 1 CUST_1 Yes INST_1 1 CUST_2 Yes INST_1 1 CUST_3  INST_1 1 CUST_4  INST_2 2 CUST_5 Yes INST_2 2 CUST_6  INST_2 2 CUST_7  INST_3 3 CUST_8 Yes INST_3 3 CUST_9  INST_3 3 CUST_10  INST_3 3 CUST_11  INST_3 3 CUST_12 Yes INST_3 3 CUST_13  INST_3 3 CUST_14  INST_4 4 CUST_15  INST_4 4 CUST_16 Yes INST_4 4 CUST_17 Yes INST_4 4 CUST_18 Yes 

Количество учреждений, которые были выбраны только один раз, теперь можно рассчитать как SUM(1*(FREQUENCY(IF(Selected="Yes",Inst_ID),Inst_ID)=1)). Случаи, когда учреждения были выбраны дважды или более, могут быть рассчитаны аналогичным образом.

Массив bin в FREQUENCYфункции cal также указывает на список уникальных Inst_ID.

Похожие вопросы