Формула Excel Sumproduct работает по частям, но не вместе - PullRequest
1 голос
/ 24 января 2020

Доброе утро, StackOverflow, заранее благодарю за потраченное время.

Я пытаюсь использовать SUMPRODUCT, чтобы получить выборочную сумму ряда чисел. У меня есть строки заголовка столбца, которые обеспечивают селективность. Одна из этих строк имеет символьную часть и числовую часть. Мне нужно разделить эти части и выполнить математические вычисления для числовой части, чтобы выборочно суммировать значения, где числовая часть находится ниже порогового значения.

Когда я F9 в каждой части формулы, все работает нормально. Однако ячейка в целом преобразуется в #value, потому что операторы FIND преобразуются в #value, когда их оставляют в покое (они разрешаются отдельно и в группе, когда F9'd).

SUMPRODUCT имеет четыре термины:

1: заголовки столбцов нужного мне типа

2: непустые ячейки в строке дискриминатора

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

4: данные, которые я хочу выборочно суммировать.

(# 3 имеет ошибку logi c, потому что я не могу полагаться на SUMPRODUCT для умножения нулей в # 2 на #Value в # 3, когда строка дискриминатора пуста.)

Вот код:

=SUMPRODUCT(--($C4:$EP4="Jobs"),--($C$1:$EP$1<>""),--(NUMBERVALUE(IF(ISERR(FIND(" ",$C$1:$EP$1)),"",RIGHT($C$1:$EP$1,LEN($C$1:$EP$1)-FIND("|",SUBSTITUTE($C$1:$EP$1," ","|",LEN($C$1:$EP$1)-LEN(SUBSTITUTE($C$1:$EP$1," ","")))))))<=INDEX(KPIs!$J$400:$R$555,MATCH(TODAY(),KPIs!$N$400:$N$555,1)-1,7)),$C6:$EP6)

Опять же, каждая часть (из любых операторов одного размера до всех # 3 одновременно) работает, когда F9'd, но вся формула разрешается в #value, потому что любой из операторов FIND разрешается в #Value, когда клетка оставлена ​​для разрешения как целое.

1 Ответ

0 голосов
/ 24 января 2020

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

=SUMPRODUCT(--($C$4:$EP$4="Jobs"),--(NUMBERVALUE(RIGHT(SUBSTITUTE(" "&$C$1:$EP$1," ",REPT(" ",99)),99))<=INDEX(KPIs!$P$400:$P$555,MATCH(TODAY(),KPIs!$N$400:$N$555,1)-1)),$C$6:$EP$6)

Вопросы для рассмотрения:

  1. Часть 2 --($C$1:$EP$1<>"") на самом деле не дает никакой выгоды, поскольку вы тестируете ее любым способом в части 3.

  2. Формула INDEX возвращает ссылку из столбца P, поэтому ее можно упростить.

  3. Часть 3 может быть упрощена с помощью конструкции, которую вы увидите на многих форумах NUMBERVALUE(RIGHT(SUBSTITUTE(" "&$C$1:$EP$1," ",REPT(" ",99)),99)), где вы хотите самую правую часть строки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...