2017-04-24 16 views
0

このタイトルには複数の質問があることがわかりましたが、私はそれらの回答を理解していないか、問題に直接関係していません。Googleスプレッドシート:ArrayFormulaとフィルタ

私は手動で行を複製するために数式をドラッグするのを避けようとしています。

式は、私がARRAYFORMULAを使用した場合、すべてのアンカーが必要とされているかわからないこの

=IF(ISBLANK(A6), 
    "", 
    COUNT(FILTER(Data!C$2:C, 
       Data!A$2:A = A6, 
       Data!B$2:B >= B$2, 
       Data!B$2:B <= B$3, 
       Data!C$2:C >= E$3, 
       Data!C$2:C <= E$2))) 

のように見えます。

Aの列は、私が「介入」したい列です。残りの範囲は、現在評価中のものに評価する必要があります。

私はこれを試してみました:

=ARRAYFORMULA(IF(ISBLANK(A6:A), 
       "", 
       COUNT(FILTER(Data!C$2:C, 
          Data!A$2:A = A6:A, 
          Data!B$2:B >= B$2, 
          Data!B$2:B <= B$3, 
          Data!C$2:C >= E$3, 
          Data!C$2:C <= E$2)))) 

とは、A6:AA列内の各セルに正しく評価するようです。しかしながら、Dataシートからの範囲も、単一の値で評価され、範囲ではないようである。

何かが見つからないか、またはARRAYFORMULAの仕組みがわかりませんか?

+0

このちょうど約 'ブランク' Vです。 '0'? '' ''を '0'に変更すると、配列のバージョン以外の結果が"永遠に "続きますが、ドラッグを止めると配列以外のバージョンは停止します – pnuts

+0

残念ながら、それはトリックをしていないようです。 – altschuler

+0

申し訳ありませんが、* '' 'を' 0'に変更するのは、比較を公平にすることだけでした - 修理が必要なものは何も表示されていないため、修理を意図していません。 – pnuts

答えて

1

filterは配列形式であるため、別の配列形式では使用できません。シート配列は配列の配列を処理できないためです。

あなたはmmultで解決されcountifs ARRAYFORMULA、探している回避策

=arrayformula(TRANSPOSE(MMULT(TRANSPOSE((Data!B$2:B>=B2)*(Data!B$2:B<=B3)*(Data!C$2:C<=E2)*(Data!C$2:C>=E3)),--(Data!A$2:A=TRANSPOSE(A6:A10)))))


説明

=arrayformula(TRANSPOSE(MMULT(...,...) ^^^^^ mmult will count for 1's and 0's in intersection of conditions

...TRANSPOSE((Data!B$2:B>=B2)*(Data!B$2:B<=B3)*(Data!C$2:C<=E2)*(Data!C$2:C>=E3))... ^^^^ any number of 'plain' conditions goes here

...--(Data!A$2:A=TRANSPOSE(A6:A10)... ^^^^ all 'filter' conditions go here, you have only 1 of those

関連する問題