これは、私が回避できない単純な問題のようです。次の式があります(正常に動作します)。
=MEDIAN(FILTER('Filtered-Data'!$D$4:$D,'Filtered-Data'!$C$4:$C=B3))
私が望むのは、ArrayFormula を使用して、B3 だけでなく B3:B の範囲の列ごとの結果を取得することです
これはできますか?
これは、私が回避できない単純な問題のようです。次の式があります(正常に動作します)。
=MEDIAN(FILTER('Filtered-Data'!$D$4:$D,'Filtered-Data'!$C$4:$C=B3))
私が望むのは、ArrayFormula を使用して、B3 だけでなく B3:B の範囲の列ごとの結果を取得することです
これはできますか?
SELECT ... WHERE... IN (valA,valB...)
最初のアイデアは Google QUERY 関数を使用することでしたが、標準の SQL句をサポートしていません。しかし、あなたが望むことは で達成可能ですARRAYFORMULA
。トリックは、2 つの列を適切に一致させ、エラーを処理し、適切なフィルタリング (読みやすくするために複数行) を適用することです。
=MEDIAN(FILTER(Filtered-Data'!$D$4:$D,
ARRAYFORMULA(IF(IFERROR(MATCH
(Filtered-Data'!$D$4:$D,'Filtered-Data'!$C$4:$C=B3:B,0),0)>0,TRUE,FALSE))))
説明:
ARRAYFORMULA(MATCH(col1,col2,0))
値一致基準を含む配列の最初の行を検索します。0/1 は、一致が上から始まるか下から始まるかを決定します。スタンドアロン使用の場合、MATCH
最初の結果を生成した後に停止します。適用するとARRAYFORMULA
、MATCH
必要なものに近づくことができます。結果の配列が生成されます。ただし、アイテムが一致しない場合はエラーが返されるため、列に次のようなものが表示されます。
N/A
2
3
1
3
2
N/A
N/A
N/A
1
3
常にある種の行番号が必要なので、これらN/A
は何の役にも立ちません。すべてを古き良き「0」IFERROR
に置き換える が来ます:
Google スプレッドシートは「0」から行をカウントすることはありません (「1」から始まり、オフセットのみがゼロから始まります)。 " - あなたのケースにとって安全なものに変更するよりも。N\A
IFERROR(MATCH(col1,col2,0),0)
FILTER は、filtering_criteria でブール値の単一列配列またはブール値の配列 ( https://support.google.com/drive/table/25273?hl=en ) に評価される式を想定しているため、そのようなブール値の配列を確実にARRAYFORMULA
生成する必要があります。IF
便利です - 常に TRUE または FALSE を生成します:IF(IFERROR(MATCH(col1,col2,0)>0,TRUE,FALSE)
そのようなものにARRAYFORMULAを再適用して、配列で作業し、単一の結果ではなく配列の結果をレンダリングします。ARRAYFORMULA(IF(IFERROR(MATCH(col1,col2,0)>0,TRUE,FALSE))
それを内部に配置しFILTER
ます...出来上がり、動作します。
参照については、http: //productforums.google.com/forum/#!topic /docs/PpnZinkLzQs を参照してください。