Обновите формулу СУММЕСЛИ для поддержки отфильтрованных данных - PullRequest
0 голосов
/ 03 августа 2020

У меня есть таблица времени регистрации на дату (и стопка другой информации, которая здесь не имеет отношения)

logTable
Date - Project - other stuff - Hours
1 Jul - X - ... - 3 hrs
1 Jul - Y - ... - 2 hrs
2 Jul - X - ... - 4 hrs
etc.

Затем у меня есть формула, которая рассчитывает время в день:

Примечание что K3 - это начало периода (т.е. понедельник), для которого нужно вычислить время в день.

=SUMIF(logTable[[#All],[Date]],"="&K3,logTable[[#All],[Hours]])

На простом английском sh это будет «показать мне общее количество часов из всех строк с датой X "- и мне нужно" показать мне общее количество часов из всех в настоящее время видимых, не отфильтрованных строк с датой X "

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

К сожалению, СУММЕСЛИ, похоже, не поддерживает таблицы фильтрации.

Как я могу обновить эта формула, которая будет вычислять время в день, но только для нефильтрованных строк в logTable? Например, мне может потребоваться отфильтровать свою таблицу по проекту X и получить обновление вывода, чтобы отразить это (обратите внимание, что это всего лишь пример, таблица может быть отфильтрована многими другими способами - решение должно поддерживать фильтрацию таблицы).

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

1 Ответ

0 голосов
/ 03 августа 2020

Есть много способов сделать это. Вот выбор

  1. измените формулу, чтобы использовать SumIF вместо SumIF, затем вы можете добавить дополнительные критерии.

    =SUMIFS(logTable[hours],logTable[date],G2,logTable[project],G3)

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

    =SUBTOTAL(9,logTable[hours])

  3. Используйте новую функцию Filter (), доступную в Office 365 Excel.

    =SUM(FILTER(logTable[hours],(logTable[date]=G2)*(logTable[project]=G3)))

В этих примерах дата находится в ячейке G2, а проект - в ячейке G3. Отрегулируйте по своему усмотрению.

...