我想通过linest运行多个(!)因子分析,再次排除包含零的所有行(或者如果这是更容易的空白单元格)。有没有办法可以使用linest函数来做到这一点?
我尝试使用以下公式,我在其他地方找到了,但除了#VALUE之外什么也得不到!。
=COUNTIF($A$2:$A$3660;A2)
FYI - Y值是列C,我的X值是D列和D列。即
提前致谢! 儒略
答案 0 :(得分:2)
不确定是否已解决此问题,但我一直在尝试自己做此事并找到了解决方案。我们现在可以使用FILTER函数。如果范围是C15:C26,则应该可以执行以下操作
=LINEST(FILTER(C15:C26,C15:C26<>0,))
答案 1 :(得分:0)
首先,我建议您过滤数据以排除任何列中包含零或空白单元格的行,然后将过滤后的数据复制到工作表的另一个区域或单独的工作表中。然后,您只需使用LINEST
。
否则,您可以使用以下需要使用CONTROL+SHIFT+ENTER
...
=LINEST(INDEX(C:C,N(IF(1,MODE.MULT(IF(MMULT(--(C15:E26=0),TRANSPOSE(COLUMN(C15:E26))^0)=0,ROW(C15:E26)*{1,1}))))),INDEX(D:E,N(IF(1,MODE.MULT(IF(MMULT(--(C15:E26=0),TRANSPOSE(COLUMN(C15:E26))^0)=0,ROW(C15:E26)*{1,1})))),N(IF(1,{1,2}))),1,1)
希望这有帮助!
答案 2 :(得分:0)
我使用函数 discard_empty 解决了空白单元格。该函数将范围转换为没有空值的值,并且LINEST起作用。
=LINEST(discard_empty(A1:A9))
Function discard_empty(range_in As Range)
Dim arr_temp() As Variant
Dim arr_new() As Variant
Dim i As Integer
Dim j As Integer
Dim k As Integer
arr_temp = range_in
For k = LBound(arr_temp, 1) To UBound(arr_temp, 1)
For j = LBound(arr_temp, 2) To UBound(arr_temp, 2)
ReDim Preserve arr_new(i)
arr_new(i) = arr_temp(k, j)
i = i + 1
Next j
Next k
arr_temp = arr_new
Erase arr_new
j = 0
For k = LBound(arr_temp) To UBound(arr_temp)
If arr_temp(k) <> Empty Then
ReDim Preserve arr_new(j)
arr_new(j) = arr_temp(k)
j = j + 1
End If
Next k
discard_empty = arr_new
End Function