Требуется общее количество неиспользуемых виртуальных машин для конкретного кластера с использованием динамического диапазона c в Excel - PullRequest
0 голосов
/ 21 марта 2020

Sheet1

Sheet2

Sheet3

Hello All ,

Я работаю над данными, где мне нужны подробности об общей виртуальной машине Unqiue, используемой конкретным кластером. Я приложил Лист 1, где Кластер - это A, B, C в столбцах B и VM в столбце A.

Я приложил Лист 2, где у меня в столбце A показан кластер A, B & C & Столбец B «Всего уникальных виртуальных машин». Я использовал приведенную ниже формулу с использованием динамического диапазона c:

=SUMPRODUCT(((Sheet1!B:B=A2))/COUNTIFS(Sheet1!B:B, Sheet1!B:B&"",Sheet1!A:A,Sheet1!A:A&""))

Формула отражает только 0 для всех кластеров A, B & C.

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

Более сложная ситуация, когда имя кластера неизвестно, и у нас есть доступная виртуальная машина. Так как же получить ВМ (сумма / количество), где Кластер неизвестен?

Ответы [ 2 ]

1 голос
/ 22 марта 2020

Если у вас есть O365 с функциями FILTER и UNIQUE, вы можете использовать следующее:

обратите внимание, что я вставил таблицу для данных и назвал таблицу vmTable, но вы можете использовать обычную адресацию, если предпочитаете

D2: =UNIQUE(vmTable[Cluster])
E2: =ROWS(UNIQUE(FILTER(vmTable,vmTable[Cluster]=D2)))
  • Выберите E2 и скопируйте / заполните формулу, насколько это необходимо.

enter image description here

edit

Для более сложной ситуации, когда виртуальным машинам не назначен кластер, вам не нужно делать ничего другого чем расширить формулу в столбце Е. Но если вы хотите избежать отображения 0 в столбце D, измените формулу в D2:

=IF(UNIQUE(vmTable[Cluster])="","",UNIQUE(vmTable[Cluster]))   

. Вы также можете использовать эти формулы или вариацию для предоставить более понятную таблицу результатов:

D2:  =IF(UNIQUE(vmTable[Cluster])="","None Assigned",UNIQUE(vmTable[Cluster]))
E2:  =ROWS(UNIQUE(FILTER(vmTable,vmTable[Cluster]= IF(D2="None Assigned","",D2))))
  • Выберите E2 и заполните

enter image description here

1 голос
/ 22 марта 2020

Ваша формула разбивается на 50К строк. Я не знаю точно, почему.

Гораздо надежнее и быстрее использовать частоту для уникальных подсчетов:

=SUM(--(FREQUENCY(IF(Sheet1!B:B=A2,MATCH(Sheet1!A:A,Sheet1!A:A,0)),
IF(Sheet1!B:B=A2,MATCH(Sheet1!A:A,Sheet1!A:A,0)))>0))

введено как формула массива с использованием Ctrl Shift Введите

Это хорошо задокументировано, и здесь есть официальная ссылка Microsoft

enter image description here

Если у вас Office 365, вы можете использовать уникальную функцию. Это должно работать, но я проверил это только в Google Sheets:

=COUNTA(unique(filter(sheet1!A:A,sheet1!B:B=a2)))

РЕДАКТИРОВАТЬ

Для виртуальных машин, которые не назначены, попробуйте:

=SUM(--(FREQUENCY(IF((Sheet1!B:B="")*(Sheet1!A:A<>""),MATCH(Sheet1!A:A,Sheet1!A:A,0)),
IF((Sheet1!B:B="")*(Sheet1!A:A<>""),MATCH(Sheet1!A:A,Sheet1!A:A,0)))>0))

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...