2016-10-27 12 views
1

は、だから私は二つの範囲を相関させるために、次の式を持っている:Googleスプレッドシート:欠落している場合/空白とCORREL()とMMULT()

=ROUND(CORREL(ARRAYFORMULA(MMULT('E0:Sample'!$D$2:$AY,TRANSPOSE(SIGN(COLUMN(('E0:Sample'!$D$2:$AY)))))),FILTER(OFFSET('E0:Sample'!$D$2:$D,0,ROW()-2),NOT(ISBLANK(OFFSET('E0:Sample'!$D$2:$D,0,ROW()-2))))),3)

式は限りがあるので、正常に動作します'E0:Sample'!$D$2:$AYに空白はありません。それ以外の場合は、エラーメッセージFunction MMULT parameter 1 expects number values. But '' is a empty and cannot be coerced to a number.がスローされます。

空の行をフィルタリングしようとしましたが、範囲が異なるためフィルタ関数は機能しません。

どのように私は最良の方法なしでこれを解決できますか?

ありがとうございます!

+0

。 –

答えて

1

完全な公式をテストするのは難しいですが、行列乗算のミニバージョンでテストしました.N関数をExcelと同じように使用できるようです。ここで私のミニテストである: -

= ARRAYFORMULA(MMULT(N(B1:G1)、N(A1:A6)))両方の範囲は、数字、アルファ及びブランクの組み合わせを含む

。非数値のセルはゼロとして扱われます。

Reference

私はこのためのコンテキストについては全く明らかではないよ - 私はあなたがMMULTを使用して、大規模な2D配列から行の合計を取得しようとしていると思います - これが正しければ、私は私の答えを考えます空白が合計に何も寄与しないので、OKです。 CORRELは2番目の範囲の空白を無視するため、まったくフィルタリングする必要はありません。

私は最終的にあなたの式のためにいくつかのテストデータを設定しなかった、と私の式は次のように終わった: - この式は、私がそのタグを削除したExcelで直接試合を持っていない項目があるとして

=ROUND(CORREL(ARRAYFORMULA(MMULT(n('E0:Sample'!$D$2:$AY),TRANSPOSE(SIGN(COLUMN(('E0:Sample'!$D$2:$AY)))))),OFFSET('E0:Sample'!$D$2:$D,0,ROW()-2)),3) 
+0

omgありがとう、魅力的な作品< –

+0

素晴らしい!時にはデータの途中に空白があるのか​​、それとも問題の原因となっていた空の行だけだったのかはわかりませんでした。それから、私はそれを熟考し始め、データに欠損値がある場合は行合計に修正を適用するべきかどうか疑問に思っています。私はこの場合、唯一正しい方法は、加重和を格納するヘルパー列を使用することだと思います。 –

+0

申し訳ありませんが、私は忙しかった!何らかの理由で私はあなたの新しいフォーミュラをコメント内からコピーして試してみるのに苦労しています。あなたの質問にそれを加えることができるかどうか疑問に思います。一方、MMULTの中ではN()を使うべきだと思うのですが、これは残りの数式では必要ありません。 –

関連する問題