2012-02-03 4 views
20

Я пытаюсь иметь аналогичную функцию SUMIFS (как SUMIF, но с более чем одного критерия) в электронной таблице Google. MS-Excel имеет встроенную функцию (http://office.microsoft.com/en-us/excel-help/sumifs-function-HA010342933.aspx?CTT=1).SUMIFS в Google Spreadsheet

Я пытался использовать 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))) 

Но функцию И не взял Ar rayFormula и возвращено FALSE все время.

Единственное решение, которое я мог бы найти было использовать QUERY, который кажется немного медленным и сложным:

=SUM(QUERY(A1:C10,"Select C where A>5 AND B=1")) 

Моя цель, чтобы заполнить таблицу (похожую на сводную таблицу) со многими значения для расчета:

=SUM(QUERY(DataRange,Concatenate("Select C where A=",$A2," AND B=",B$1))) 

Удалось ли кому-нибудь сделать это проще и быстрее?

ответ

10

я нашел быстрее функцию, чтобы заполнить «сводную таблицу»:

=ARRAYFORMULA(SUM(((Sample!$A:$A)=$A2) * ((Sample!$B:$B)=B$1) * (Sample!$C:$C))) 

кажется, работает гораздо быстрее, без тяжелой строки и Query функций.

+2

Еще одна идея, если бы у меня был правильный вопрос, будет '= ARRAYFORMULA (SUMIF (Образец! A: A & Sample! B: B; A & B; Образец! C: C))' – cregox

+0

Мне очень нравится метод Гая. Я использовал метод SUM (FILTER (sourceArray, arrayCondition_1, ...) из Javaaaa выше, но был раздражен тем, что мне пришлось обернуть его в 'IFERROR()', чтобы ловить '# N/A' случаи, когда' FILTER () 'возвратил нулевые результаты. Метод« сводной таблицы »не обходится без нулевых результатов, как хотелось. Sweet! –

1

Этот парень использовал функцию фильтра для измельчения массива по критерию, затем функцию суммы, чтобы добавить все это в одну ячейку. http://www.youtube.com/watch?v=Q4j3uSqet14 Это работало как очарование для меня.

+1

Метод в видео похож на метод QUERY, который я нашел довольно медленным на большой электронной таблице. Даже с 4-мя строками потребовалось второе, чтобы вычислить. – Guy

13

Простейший способ легко сделать SumIFS-подобные функции, на мой взгляд, объединить функцию FILTER и SUM.

SUM(FILTER(sourceArray, arrayCondition_1, arrayCondition_2, ..., arrayCondition_30)) 

Например:

SUM(FILTER(A1:A10;A1:A10>5;B1:B10=1) 

Пояснение: фильтр (фильтры) строки в A1: A10, где A1: A10> 5 и B1: B10 = 1. Тогда SUM() сумм значения этих ячеек.

Этот подход очень гибкий и легко позволяет также выполнять функции COUNTIFS() (просто используйте COUNT() вместо SUM()).

+0

Я вижу, что вы написали также сообщение об этом, которое будет углубляться, может быть полезно упомянуть: http://spreadsheetpro.net/how-to-make-sumifs- COUNTIFS-averagifs-функция-в-Google-таблицы / – Javaaaa

7

По состоянию на декабрь 2013 г. Google Таблицы теперь имеют функцию SUMIFS, как указано в this blog post и документально подтверждено here.

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