Суммарный продукт по категориям, суммируйте каждый день и суммируйте максимальное время

#excel #sumproduct

#excel #суммарный продукт

Вопрос:

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

введите описание изображения здесь

Поэтому в основном игнорируйте белые строки, в которых данные были заменены более поздней датой (в примере я разделил поле даты и времени).

введите описание изображения здесь

Я пробовал следующую формулу, но я просто получаю #VALUE! ошибки

 =SUMPRODUCT(LARGE((Table!A:A='Cumulative Baselines'!A27)*(Table!D:D),{1}))
 

Заранее спасибо

Комментарии:

1. Вы можете использовать функцию SUMIF, проверьте эту ссылку для справки contextures.com/xlfunctions01.html#sumifs

Ответ №1:

Насколько я знаю, вы можете использовать SUMIFS, но только в сочетании с sum или sumproduct:

 =SUM(D$2:D$20*(A$2:A$20=F2)*(COUNTIFS(A$2:A$20,A$2:A$20,B$2:B$20,B$2:B$20,C$2:C$20,">"amp;C$2:C$20)=0))
 

(Я использовал произвольный диапазон, поскольку он, вероятно, был бы медленным, если бы использовались диапазоны целых столбцов)

введите описание изображения здесь

Ответ №2:

При этом не используется обсуждаемая вами функция, но вот работоспособное решение, если это зависит от времени:

Столбец E, строка 1:

= ГРАФЫ (B1: B11, B1, A1: A11, A1), расширяйте по мере необходимости.

  • Это последовательный просмотр ваших данных и добавление счетчика к строке, в которой они находятся, который представляет строки со значением в столбце A и значением в столбце B, соответствующим строке, в которой находится эта ячейка. Поскольку ваши данные упорядочены от самых старых к самым новым, последний экземпляр этой комбинации всегда будет иметь значение 1.

Теперь мы можем расширить это до:

= ЕСЛИ (ГРАФЫ (B1: B11, B1,A1: A11,A1) = 1,1,0)

  • Все значения, которые не равны 1, теперь равны 0. Это дает нам критерии, необходимые для использования инструкции sumifs.

Создайте ячейку с целевыми значениями для проверки: в моем примере у меня есть ABC в ячейке G1 и DEF в G2 = SUMIFS(D: D,A: A,G1, E: E,1) — расширяйте по мере необходимости

  • Этот оператор условной суммы суммирует все в столбце D, которые также имеют значение 1 в столбце E и то же значение в столбце A, которое вы поместили в G1.

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

Редактировать: похоже, ключевая проблема здесь заключается в том, что max() плохо работает с пользовательскими форматами даты и времени, что изначально Excel будет считывать неразделенную временную метку, а sumproduct считывает все нечисловые значения как 0. Вы можете изменить его, чтобы использовать максимум, добавив столбец (снова) и введя дату и время вместе как =значение даты (ячейка столбца даты) значение времени (ячейка столбца времени). Это будет сохраняться как значение с плавающей точкой, к которому можно применить max() .

Проблема в том, что нам все еще нужен столбец, чтобы проверить, представляет ли объединенное значение уникальный день, а затем найти максимальное значение рекомбинированной метки времени для этого дня, поэтому вернемся к вышеупомянутому решению и дополнительной работе, чтобы включить использование sumproduct() . По моему опыту, сок не будет стоить усилий, чтобы заставить sumproduct() работать в этом сценарии.

Комментарии:

1. Спасибо за это — это полезно, причина, по которой я пошел по маршруту sumproduct, заключалась в том, что данные не всегда могут быть последовательными с последними наибольшими значениями, поэтому, если какие-либо предыдущие данные добавлены не по порядку, правильно ли я думаю, что это будет отображаться как выбранная строка, если она не отсортирована вручную подата и время?

2. Правильно, если данные не являются последовательными, фильтр даты ломается, и весь карточный домик падает. Я предполагаю, основываясь на отметках даты и времени, что это будет поступать из внешней системы, возможно ли отсортировать данные в источнике? Если это так, на лист можно было бы ссылаться на источник извне, и он буквально обновлялся бы каждый раз, когда обновлялась ссылка exref.