Каков наиболее оптимальный способ использования ArrayFormula () для подсчета не-пробелов, где заголовок столбца соответствует значению строки? - PullRequest
0 голосов
/ 05 ноября 2018

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

=countifs(D1:AZ,D2:AZ,D1:1,A2)

Однако, похоже, что, поскольку размеры массива различны, он не может использовать его как поиск. enter image description here

В идеале я мог бы получить формулу массива для подсчета количества непустых ячеек, соответствующих каждой дате в A2: A, например: enter image description here

Глядя на документацию по COUNTIFS , я не вижу ничего о том, что он не может справиться с вертикальным и горизонтальным соответствием.

Кроме того, мне нужно избегать использования = query (), поскольку в D1: 1 могут быть экземпляры, в которых отсутствует дата. Я буду обрабатывать это с помощью iferror ().

Буду очень признателен за любую помощь / совет, который вы все сможете дать!

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

Спасибо

Ответы [ 2 ]

0 голосов
/ 05 ноября 2018

Это может быть способ сделать это, на B2:

=COUNTIFS(OFFSET($D$2:$D,,MATCH(A2,$D$1:$AZ$1,0)-1),">0")

Затем вы автоматически заполните, идея:

  • MATCH(A2,$D$1:$AZ$1,0) Будет сопоставлять каждую дату в столбце A с датой в строке 1 и возвращать индекс (от 1 до N).
  • OFFSET($D$2:$D,,N) Примет диапазон D2: D и смещение N столбцов (в данном случае вывод MATCH).
  • Наконец, COUNTIFS будет искать значения >0 в столбце, заголовок которого соответствует дате слева.

Надеюсь, это поможет

0 голосов
/ 05 ноября 2018

Попробуй это. Это матричная формула умножения, которая суммирует непустые ячейки для каждого столбца. Это должно работать для вас.

= ARRAYFORMULA (MMULT (транспонирование (если (D1: 1 = "", 0, если (ISBLANK (D2: БГ), 0,1))), знак (СТРОКА (D2: BG))))

Я могу объяснить это, если вам интересно.

РЕДАКТИРОВАТЬ: Как насчет этого? Это добавляет vlookup. = ARRAYFORMULA (IFERROR (ВПР (А2: А, {транспонирования (D1: 1), MMULT (транспонирование (если (D1: 1 = "", 0, если (ISBLANK (D2: BF), 0,1))), знак (СТРОКА (D2: BF)))}, 2, ложно)))

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