Excel SERIESSUM 不接受单元格引用数组作为系数

Excel SERIESSUM 不接受单元格引用数组作为系数

Google Sheets 版本的“SERIESSUM”函数接受单元格引用数组作为系数“列表”,如以下示例所示:

=SERIESSUM(O8549,0,1,{K8549,K8538,K8526,K8514,K8502,K8490,K8478,K8466,K8454,K8442,K8430,K8418})

但是,Excel 拒绝接受这一点,显然只接受单元格“范围”或常量列表。有什么方法可以解决这个问题。我在网上搜索了相关信息……我需要将系数放在“K”列和每 12 行中(它们是每 5 分钟获取一次的大气读数,“K”列是过去一小时的移动平均值)——我的系数需要是过去 12 小时的每小时平均值。有人建议创建一个自定义函数,但是它将如何用常量填充 Excel 中的系数列表(我的 VBA 技能非常生疏/缺乏)?BDR

答案1

由于系数的数量固定为 12,因此可以使用CHOOSE

=SERIESSUM(
    O8549,
    0,
    1,
    CHOOSE(
        {1; 2; 3; 4; 5; 6; 7; 8; 9; 10; 11; 12},
        K8549,
        K8538,
        K8526,
        K8514,
        K8502,
        K8490,
        K8478,
        K8466,
        K8454,
        K8442,
        K8430,
        K8418
    )
)

答案2

问题是,在 Excel 中,您不能将单元格引用放入带有括号的数组中。

您可以尝试像这样构建系数(适当编辑您的范围):

=CHOOSEROWS($B$1:$B$61,SEQUENCE(ROWS($B$1:$B$61)/12+1,,1,12))

并将它们放入 SERIESSUM 中:

=SERIESSUM(0.6,0,1,CHOOSEROWS($B$1:$B$61,SEQUENCE(ROWS($B$1:$B$61)/12+1,,1,12)))

或者让它更整洁一点:

=LET(
  data,$B$1:$B$61,
  every,12,
  coeffs,CHOOSEROWS(data,SEQUENCE(ROWS(data)/every+1,,1,every)),
  SERIESSUM(0.6,0,1,coeffs)
)

编辑-Excel 2013 的可能解决方案

在空列中,使用此公式的变体来获取系数:

=INDEX($B$1:$B$61,IF(ROW()=1,ROW(),(ROW()-1)*12))

在此处输入图片描述

根据工作表中数据的位置以及第 n 行的具体要求调整范围和偏移量。

然后将保存系数的范围传递到 SERIESSUM 函数中:

=SERIESSUM(0.6,0,1,D1:D6)

相关内容