2016-10-27 33 views
1

所以我有下面的公式來關聯兩個範圍:只要有谷歌電子表格: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

由於這個公式有沒有直接匹配在Excel中的項目我已刪除該標記。 –

回答

1

很難測試你的完整公式,但是我測試了一個矩陣乘法的小版本,看起來你可以像在Excel中一樣使用N函數。這是我的小型試驗: -

= ARRAYFORMULA(MMULT(N(B1:G1)中,n(A1:A6)))

其中兩個範圍包含的號碼,阿爾法和空白的組合。非數字單元格被視爲零。

Reference

我不是上下文完全清楚這個 - 我想你想使用MMULT擺脫你的大二維數組行資金 - 如果這是正確的,我認爲我的回答是可以的,因爲空白對這些數字沒有貢獻。由於CORREL忽略了第二個範圍的空白,你根本不需要過濾?

我並最終建立起一些測試數據,公式,和我的公式弄成這個樣子: -

=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非常感謝你,作品像魅力<3 –

+0

太棒了!我不清楚有時在數據中間是否有空白,或者是否只是最後導致問題的空行。然後我開始過度思考,並想知道如果數據中有一些缺失值,是否應該對行數進行修正。我認爲在這種情況下唯一可行的方法是使用幫助列來存儲加權總和。 –

+0

對不起,我一直很忙!出於某種原因,我努力從評論內複製新的公式以嘗試並測試它 - 我想知道是否可以將它添加到您的問題中,因爲這似乎更好?同時我認爲你應該只在MMULT中使用N() - 在公式的其餘部分你不需要它。 –