[〜#〜] sumifs [〜#〜]([〜#〜] sumif [〜#〜]ただし、Googleスプレッドシートに複数の基準があります。 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=ja&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)))
誰もがそれをより簡単かつ迅速に行うことができましたか?
「ピボットテーブル」を埋めるより高速な関数を見つけました。
=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> 5およびB1:B10 = 1のA1:A10の行をフィルターします。次に、SUM()はそれらのセルの値を合計します。
このアプローチは非常に柔軟で、たとえばCOUNTIFS()関数も簡単に作成できます(SUM()の代わりにCOUNT()を使用するだけです)。
この男は、フィルター関数を使用して、基準によって配列を切り詰め、次に合計関数を使用して同じセルにすべてを追加しました。 http://www.youtube.com/watch?v=Q4j3uSqet14 それは私にとって魅力的でした。