【问题标题】:Array as cell formula parameter数组作为单元格公式参数
【发布时间】:2018-09-15 15:06:29
【问题描述】:

我需要在 LibreOffice Calc 中计算多项式系数以拟合数据点。 X 和 Y 值在单元格 A2:... 和 B2:... 中,数据大小在单元格 D1 中,多项式次数在单元格 D2 中。这工作正常:

=TRANSPOSE(LINEST(OFFSET($B$2;0;0;$D$1;1);OFFSET($A$2;0;0;$D$1;1)^{1;2;3}))

我需要动态地将数组1:$D$2 传递给这个公式,而不是{1;2;3}。我尝试使用 Excel 帮助中的示例:

ROW(INDIRECT("1:" & $D$2))

但它给出了一个值错误。如何在数组中获取这个序列?

第二个问题:如果我能做到这一点,我如何得到降序{3;2;1;0}

【问题讨论】:

    标签: excel excel-formula libreoffice openoffice.org openoffice-calc


    【解决方案1】:

    这是因为ROW 生成一个垂直数组,而您需要一个水平数组。

    因此,使用:

    TRANSPOSE(ROW(INDIRECT("1:"&$D$2)))

    由于 INDIRECTOFFSET 都是 volatile 函数,我个人更喜欢:

    =TRANSPOSE(LINEST($B$2:INDEX($B2:$B1048576,$D$1),$A$2:INDEX($A2:$A1048576,$D$1)^TRANSPOSE(ROW(INDEX(A:A,1):INDEX(A:A,$D$2)))))

    问候

    【讨论】:

    • 谢谢,成功了!你能回答我的第二个问题吗?
    • 用与 k 参数完全相同的结构将 Row 部分包装在大函数中
    • 或更一般地,将其用作大函数的 k 参数:LARGE(MyArray, ROW($A$1:INDEX($A:$A, COUNTA(MyArray)))),其中 MyArray 是 Row 构造
    • 这只给了我一个最大值...:/你能在主要答案中解释你的解决方案吗?
    • 你能澄清一下你想要序列 {3;2;1;0} 而不是 {3;2;1}?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-15
    • 1970-01-01
    • 2022-07-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多