Ответ 1
Я нашел более быструю функцию для заполнения "сводной таблицы":
=ARRAYFORMULA(SUM(((Sample!$A:$A)=$A2) * ((Sample!$B:$B)=B$1) * (Sample!$C:$C) ))
Кажется, что он работает намного быстрее без более тяжелых функций String и Query.
Я пытаюсь использовать аналогичную функцию для SUMIFS (например, SUMIF, но с более чем одним критерием) в Google Spreadsheet. MS-Excel имеет встроенную функцию (http://office.microsoft.com/en-us/excel-help/sumifs-function-HA010342933.aspx?CTT=1).
Я попытался использовать ArrayFormula (http://support.google.com/docs/bin/answer.py?hl=en&answer=71291), аналогично SUMIF:
=ARRAYFORMULA(SUM(IF(A1:A10>5, A1:A10, 0)))
Добавив И:
=ARRAYFORMULA(SUM(IF(AND(A1:A10>5,B1:B10=1), C1:C10, 0)))
Но функция И не взяла команду ArrayFormula и не возвращала FALSE все время.
Единственное решение, которое я смог найти, это использовать QUERY, который кажется немного медленным и сложным:
=SUM(QUERY(A1:C10,"Select C where A>5 AND B=1"))
My Target - заполнить таблицу (похожую на сводную таблицу) со многими значениями для вычисления:
=SUM(QUERY(DataRange,Concatenate( "Select C where A=",$A2," AND B=",B$1)))
Кто-нибудь мог сделать это проще и быстрее?
Я нашел более быструю функцию для заполнения "сводной таблицы":
=ARRAYFORMULA(SUM(((Sample!$A:$A)=$A2) * ((Sample!$B:$B)=B$1) * (Sample!$C:$C) ))
Кажется, что он работает намного быстрее без более тяжелых функций String и Query.
Самый простой способ легко сделать SumIFS-подобные функции, на мой взгляд, - объединить функцию FILTER и SUM.
SUM(FILTER(sourceArray, arrayCondition_1, arrayCondition_2, ..., arrayCondition_30))
Например:
SUM(FILTER(A1:A10;A1:A10>5;B1:B10=1)
Объяснение: FILTER() фильтрует строки в A1: A10, где A1: A10 > 5 и B1: B10 = 1. Затем SUM() суммирует значения этих ячеек.
Этот подход очень гибкий и легко позволяет также выполнять функции COUNTIFS() (просто используйте COUNT() вместо SUM()).
По состоянию на декабрь 2013 года в Google Таблицах теперь есть функция SUMIFS, как указано в этом сообщении в блоге и документирована здесь.
Обратите внимание, что старые таблицы не преобразуются в новую версию, хотя вы можете попробовать скопировать данные в новую книгу.
Этот парень использовал функцию фильтра для измельчения массива по критериям, затем функцию суммы, чтобы добавить все это в одну ячейку. http://www.youtube.com/watch?v=Q4j3uSqet14 Это работало как прелесть для меня.