1

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

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

2 ответа2

0

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

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

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

Для реализации формулы я добавил дополнительный столбец, трансформирующий 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.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .