Формула Excel 2017 - усредняет данные по месяцам, будучи фильтруемым - PullRequest
0 голосов
/ 04 октября 2018

Я не VBA-кодер, и я бы предпочел формулу Excel, если это возможно, самое простое решение будет лучшим.

Скриншот тестовой книги

Как видите, у меня есть много столбцов, которые можно фильтровать.

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

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

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

=AVERAGE(IF(MONTH(E9:E1833)=1,(J9:J1833)))

Этот файл не обновляется с отфильтрованными данными.

=SUM(IF(MONTH(E9:E1833)=1,J9:J1833,0)) /SUM(IF(MONTH(E9:E1833)=1,1))

Этот файл не обновляется с отфильтрованными данными.

Я пробовал 5 различных SUBTOTAL формул, некоторые с OFFSET, ни одна из них не дает тот же результат, который я получаю при проверке вручную.

Каждый лист содержит более 1500 сотен строк, самый большой - 29148 строк.Данные возвращаются к 2005 году.

Пожалуйста, кто-нибудь может помочь мне найти решение?

1 Ответ

0 голосов
/ 04 октября 2018

Одним из возможных решений является создание вспомогательного столбца, который возвращает 1, если строка видима, и возвращает 0, если строка невидима (или пуста).Это дает немного больше свободы в ваших формулах.

Например, если вы хотите создать вспомогательный столбец в столбце X, введите его в ячейку X9 и перетащите вниз:

= SUBTOTAL(103,A9)

Теперь вы можете создать собственную формулу усреднения, например:

= SUMPRODUCT((MONTH(E9:E1833)=1)*(X9:X1833)*(J9:J1833))/
  SUMPRODUCT((MONTH(E9:E1833)=1)*(X9:X1833))

Не совсем красиво, но она выполняет свою работу.(Обратите внимание, что это формула массива, поэтому вы должны нажать Ctrl + Shift + Введите на клавиатуре вместо Введите после вводаэта формула.)

Имея еще больше вспомогательных столбцов, вы можете вообще избежать SUMPRODUCT и просто выполнить это, выполнив один AVERAGEIFS.

Например, если вы введете в ячейку Y9и перетащите вниз:

= MONTH(E9)

Тогда ваша формула может быть такой:

= AVERAGEIFS(J9:J1833,X9:X1833,1,Y9:Y1833,1)

Нет чистого способа сделать это без хотя бы одной вспомогательной функции (если вы хотите избежатьVBA).

...