Исключить текст из массивов в сумме продукта - PullRequest
0 голосов
/ 16 октября 2018

Я пытаюсь исключить текст из массивов в функции SUMPRODUCT.

Я использую формулу:

=SUMPRODUCT(--ISNUMBER(FIND("S",Schedule!$AT$14:$DP$100)),(Schedule!$AT12:DP12>=D29)*(Schedule!AT12:DP12<=E29)*(Schedule!$A14:A100="VP")*((Schedule!$AT$14:$DP$100)))

  • Schedule!$AT$14:$DP$100: содержит числа и S (или s)
  • Schedule!$AT12:DP12: содержит даты
  • D29 содержит дату
  • Schedule!AT12:DP12: содержит даты
  • E29 содержит дату
  • Schedule!$A14:A100: содержит различный текст, из которого я хочу только строки с VP в них.

Если я изменю Schedule!$AT$14:$DP$100 на Schedule!$AT$14:$DO$100, то это сработает, поэтому я знаю, является ли S в ячейке, которая создает ошибку.Я знаю, что не могу умножить число на S.

Я также пытался:

=SUMPRODUCT(--SUBSTITUTE(Schedule!$AT$14:$DP$100,"S",0),(Schedule!$AT12:DP12>=D29)*(Schedule!AT12:DP12<=E29)*(Schedule!$A14:A100="VP")*((Schedule!$AT$14:$DP$100)))

Я тоже пытался, но безрезультатно.

=SUMPRODUCT(SUBSTITUTE(Schedule!$AT$14:$DP$100,"S",0)*(Schedule!$AT12:DP12>=D29)*(Schedule!AT12:DP12<=E29)*(Schedule!$A14:A100="VP")*((Schedule!$AT$14:$DP$100)))

=SUMPRODUCT(SUBSTITUTE(Schedule!$AT$14:$DP$100,"S",0)*(Schedule!$AT12:DP12>=D29)*(Schedule!AT12:DP12<=E29)*(Schedule!$A14:A100="VP"))

В основном я пытаюсь сказать следующее:
Если ячейка находится в диапазоне дат и имеет VP в строке, тосложите ячейки в диапазоне AT14:DP100 на листе расписания.Так что это будет sum of [number x 1(true) x 1(true) x 1(true)] + [number x 0(false) x 1(true) x 1(true)]...

Куда я иду не так?Я чувствую, что мне может понадобиться использовать формулу массива (CTRL SHIFT и ENTER)

1 Ответ

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

Из-за количества функций, которые не будут автоматически работать как массивы в SUMPRODUCT, вам, вероятно, нужно использовать формулу массива.(т. е. используйте Ctrl + Shift + Enter )

К счастью, вы уже сделали всю тяжелую работуучаствует.Все, что мы собираемся сделать, это переписать ваш текущий SUMPRODUCT(<Condition>,<Values>) как {SUM(IF(<Condition>,<Values>,0))}:

{=SUM(IF(ISNUMBER(FIND("S",Schedule!$AT$14:$DP$100)),(Schedule!$AT12:DP12>=D29)*(Schedule!AT12:DP12<=E29)*(Schedule!$A14:A100="VP")*((Schedule!$AT$14:$DP$100)),0))}
...