20

GoogleスプレッドシートでSUMIFSと同様の機能(SUMIFと同様ですが、複数の基準があります)を使用しようとしています。MS-Excelには、この関数が組み込まれています(http://office.microsoft.com/en-us/excel-help/sumifs-function-HA010342933.aspx?CTT=1)。

SUMIFと同様に、ArrayFormula(http://support.google.com/docs/bin/answer.py?hl=en&answer=71291 )を使用しようとしました。

=ARRAYFORMULA(SUM(IF(A1:A10>5, A1:A10, 0)))

ANDを追加することにより:

=ARRAYFORMULA(SUM(IF(AND(A1:A10>5,B1:B10=1), C1:C10, 0)))

しかし、AND関数はArrayFormula命令を取得せず、常に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)))

誰かがもっと簡単で速い方法でそれを行うことができましたか?

4

4 に答える 4

16

私の意見では、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 > 5 および B1:B10 = 1 である A1:A10 の行をフィルタリングします。次に、SUM() は、これらのセルの値を合計します。

このアプローチは非常に柔軟で、たとえば COUNTIFS() 関数を簡単に作成することもできます (SUM() の代わりに COUNT() を使用するだけです)。

于 2013-03-31T12:55:56.800 に答える
10

「ピボットテーブル」を埋めるためのより高速な関数を見つけました:

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

より重いStringおよびQuery関数がなくても、はるかに高速に実行されるようです。

于 2012-02-06T18:32:26.743 に答える
1

この男は、Filter 関数を使用して配列を条件ごとに切り詰め、次に sum 関数を使用してすべてを同じセルに追加しました。 http://www.youtube.com/watch?v=Q4j3uSqet14 それは私にとって魅力のように働きました。

于 2012-07-11T01:56:22.513 に答える