Использование именованного диапазона для идентификации рабочих таблиц для использования SUMIFS в a для добавления массива данных - PullRequest
0 голосов
/ 04 марта 2020

Ниже приведен образец Google Sheet, над которым я работаю: https://docs.google.com/spreadsheets/d/1LDsfn_FMdUSfuFZAyuXf5gdlOSN9yLqhT1RY8aX7Nfs/edit?usp=sharing

В таблице Итоги команд , я пытаюсь вычислить Все продажи основаны на дате, типе продажи и типе программы, начиная с Строка 27 .

Проблема, с которой я столкнулся, заключается в том, что именованный диапазон, Консультанты , извлекает данные только из первой ячейки именованного диапазона ( Octo ). Мне нужна формула, которая будет извлекать данные выбранного диапазона из каждой записи в именованном диапазоне и суммировать их вместе.

Для справки я поставлю правильные значения, начиная с Строка 33 .

Ближайший пример, который я видел, был с этого сайта: https://www.got-it.ai/solutions/excel-chat/excel-tutorial/sumif/sumif-across-multiple-sheets

Однако я получаю ту же проблему, что и первая ячейка в названном диапазоне тянутся.

Я чувствую, что упускаю что-то простое, но я часами прыгал вокруг своей головы и не могу понять. Любая помощь очень ценится.

Ответы [ 3 ]

1 голос
/ 04 марта 2020

Итак, после попытки выяснить способ не использовать итеративный процесс, я свернул и сделал следующее:

=arrayformula(SUMIFS(INDIRECT("'"&$B$4&"'!F6:F100"),INDIRECT("'"&$B$4&"'!D6:D100"),$B$2,INDIRECT("'"&$B$4&"'!E6:E100"),E$27,INDIRECT("'"&$B$4&"'!A6:A100"),$A41)+
SUMIFS(INDIRECT("'"&$B$5&"'!F6:F100"),INDIRECT("'"&$B$5&"'!D6:D100"),$B$2,INDIRECT("'"&$B$5&"'!E6:E100"),E$27,INDIRECT("'"&$B$5&"'!A6:A100"),$A41)+
SUMIFS(INDIRECT("'"&$B$6&"'!F6:F100"),INDIRECT("'"&$B$6&"'!D6:D100"),$B$2,INDIRECT("'"&$B$6&"'!E6:E100"),E$27,INDIRECT("'"&$B$6&"'!A6:A100"),$A41)+
SUMIFS(INDIRECT("'"&$B$7&"'!F6:F100"),INDIRECT("'"&$B$7&"'!D6:D100"),$B$2,INDIRECT("'"&$B$7&"'!E6:E100"),E$27,INDIRECT("'"&$B$7&"'!A6:A100"),$A41)+
SUMIFS(INDIRECT("'"&$B$8&"'!F6:F100"),INDIRECT("'"&$B$8&"'!D6:D100"),$B$2,INDIRECT("'"&$B$8&"'!E6:E100"),E$27,INDIRECT("'"&$B$8&"'!A6:A100"),$A41)+
SUMIFS(INDIRECT("'"&$B$9&"'!F6:F100"),INDIRECT("'"&$B$9&"'!D6:D100"),$B$2,INDIRECT("'"&$B$9&"'!E6:E100"),E$27,INDIRECT("'"&$B$9&"'!A6:A100"),$A41))

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

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

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

0 голосов
/ 04 марта 2020

Лучший способ извлечь данные из множества неизвестных имен вкладок без сценария - это на самом деле СОЗДАТЬ имена вкладок заранее. На вашем листе похоже, что вы ожидаете / освобождаете место для 21 сотрудника. На вашем месте я бы создал еще 15 вкладок с именами Temp7, Temp8, Temp9 ... et c. Тогда вы можете просто «спрятать» эти вкладки. Тогда в ваш раздел итогов можно будет встроить формулу, которая будет легко складывать все вкладки, используя литерал массива и QUERY ({}), чтобы сложить итоги для вас без всякой ерунды INDIRECT (), через которую вы проходили вытащить из отдельных имен вкладок.

Было бы интересным предварительное добавление имен вкладок, если бы я мог показать вам формулы для упрощения вычисления итогов?

0 голосов
/ 04 марта 2020

Возврат Всего продаж:

=if(isna(ArrayFormula(QUERY({Lo!$A$5:$F; Tulio!$A$5:$F;Ya!$A$5:$F; Miguel!$A$5:$F;Kevin!$A$5:$F; Octo!$A$5:$F}, "select sum(Col6) where Col1=date '"&TEXT(A28,"yyyy-mm-dd")&"' label sum(Col6) ''",0)))=TRUE,0,ArrayFormula(QUERY({Lo!$A$5:$F; Tulio!$A$5:$F;Ya!$A$5:$F; Miguel!$A$5:$F;Kevin!$A$5:$F; Octo!$A$5:$F}, "select sum(Col6) where Col1=date '"&TEXT(A28,"yyyy-mm-dd")&"' label sum(Col6) ''",0)))

Кстати, я получаю Всего продаж $ 0, $ 615.50 и $ 2,498.00

...