#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.