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

Я пытался использовать

=SUMPRODUCT(duration1,duration2,number1,number2)/sum(number1,number2) 

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

Я также не могу понять, как добавить дату в качестве критерия, как в предыдущем вопросе.

Вы можете скачать образец рабочей книги отсюда.

1 ответ1

1

Похоже, у вас проблемы, потому что вы неправильно понимаете, как работает функция SUMPRODUCT() .

Что он делает, так это умножает соответствующие элементы всех аргументов вместе, а затем суммирует полученный массив.

Возьмите следующее в качестве примера:

=SUMPRODUCT(A1:A3, B1:B3, C1:C3, D1:D3)

Два шага в оценке этой формулы:

=SUMPRODUCT({A1*B1*C1*D1; A2*B2*C2*D2; A3*B3*C3*D3})
=A1*B1*C1*D1 + A2*B2*C2*D2 + A3*B3*C3*D3


Для вашего конкретного случая, что вам действительно нужно сделать, это получить сумму двух sumproducts:

=SUM(SUMPRODUCT(duration1,number1),SUMPRODUCT(duration2,number2))/SUM(number1,number2)

Для вашей прилагаемой учебной книги формула в F5 будет иметь вид:

=SUM(SUMPRODUCT('CHAT US Raw Data'!I6,'CHAT US Raw Data'!P6),SUMPRODUCT('CHAT US Raw Data'!T6,'CHAT US Raw Data'!U6))/SUM('CHAT US Raw Data'!I6,'CHAT US Raw Data'!T6)

Обратите внимание, что это эквивалентно явному выполнению умножения внутри функции SUMPRODUCT() и просто использованию функции для суммирования результирующего массива (как было сделано в ответе на вопрос части 1):

=SUM(SUMPRODUCT(duration1*number1),SUMPRODUCT(duration2*number2))/SUM(number1,number2)

с фактической формулой в F5 :

=SUM(SUMPRODUCT('CHAT US Raw Data'!I6*'CHAT US Raw Data'!P6),SUMPRODUCT('CHAT US Raw Data'!T6*'CHAT US Raw Data'!U6))/SUM('CHAT US Raw Data'!I6,'CHAT US Raw Data'!T6)

Эту формулу по-прежнему необходимо адаптировать для проверки совпадения дат (и первых подходящих имен учеников, если они все еще применимы) в соответствии с вашими предыдущими вопросами.

Для получения дивидендов мы можем просто добавить дополнительный срок проверки даты.

Однако функцию SUM() делителя необходимо изменить, прежде чем можно будет добавить проверку даты. Нам нужна сумма двух суммирующих функций (при условии, что вы хотите расширить формулу для нескольких строк):

=SUM(SUMPRODUCT((date1=date)*duration1*number1),SUMPRODUCT((date2=date)*duration2*number2))
/SUM(SUMIF(date1,date,number1),SUMIF(date2,date,number2))

с фактической формулой в F5 :

=SUM(SUMPRODUCT(('CHAT US Raw Data'!H6=E5)*'CHAT US Raw Data'!I6*'CHAT US Raw Data'!P6),SUMPRODUCT(('CHAT US Raw Data'!S6=E5)*'CHAT US Raw Data'!T6*'CHAT US Raw Data'!U6))/SUM(SUMIF('CHAT US Raw Data'!H6,E5,'CHAT US Raw Data'!I6),SUMIF('CHAT US Raw Data'!S6,E5,'CHAT US Raw Data'!T6))

Альтернативой ручному выполнению умножений внутри SUMPRODUCT() (с результирующим неявным логическим принуждением) будет явное приведение проверок даты к единицам и нулям с помощью двойного отрицательного унарного оператора. Например, (date1=date) станет --(date1=date):

=SUM(SUMPRODUCT(--(date1=date),duration1,number1),SUMPRODUCT(--(date2=date),duration2,number2))
/SUM(SUMIF(date1,date,number1),SUMIF(date2,date,number2))

с фактической формулой:

=SUM(SUMPRODUCT(--('CHAT US Raw Data'!H6=E5),'CHAT US Raw Data'!I6,'CHAT US Raw Data'!P6),SUMPRODUCT(--('CHAT US Raw Data'!S6=E5),'CHAT US Raw Data'!T6,'CHAT US Raw Data'!U6))/SUM(SUMIF('CHAT US Raw Data'!H6,E5,'CHAT US Raw Data'!I6),SUMIF('CHAT US Raw Data'!S6,E5,'CHAT US Raw Data'!T6))

В заключение отметим, что для делителя суммирования существуют эквивалентные версии продукта.

Например,

SUM(SUMIF(date1,date,number1),SUMIF(date2,date,number2))

эквивалентно

SUM(SUMPRODUCT((date1=date)*number1),SUMPRODUCT((date2=date)*number2))

так же как

SUM(SUMPRODUCT(--(date1=date),number1),SUMPRODUCT(--(date2=date),number2))

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .