the*_*erd 2 excel excel-formula spill-range
我有当前的公式
=LET(
rad, ROW(C2),
sumArea, SUM(INDIRECT(ADDRESS(rad,3)):INDIRECT(ADDRESS(rad+5,3))),
result, sumArea/INDIRECT(ADDRESS(rad+6,2)),
result
)
Run Code Online (Sandbox Code Playgroud)
它计算单元格 B7 中的值与更改列 C 的五天变化。在给出参数时它完美地工作ROW(C2),但我理想地希望它能够处理溢出,因为 C 列本身已溢出。当我给出参数 时ROW(C2#),它确实溢出,但在每个溢出结果中返回一个值错误。
是否无法以这种方式使用 LET 函数,或者我可以更改某些内容以使其工作?我很感谢我能得到的任何指导!:D
样本数据:
值-28.6% 是通过取 计算得出的SUM(-2,2,2,-5,-1)/14。
正如其他人所建议的,使用INDIRECTandADDRESS通常不是一个好主意(尤其是因为函数是不稳定的,因此每次工作表更改时都会重新计算)。
使用单元格 B3 中的公式
=LET(a,A3:A9,o,B1,n,SEQUENCE(ROWS(a)-o),e,INDEX(a,n),s,INDEX(a,n+o),(e-s)/s)
Run Code Online (Sandbox Code Playgroud)
其中B1是变量回顾(例如5天)
如果您有太多时间,或者认为您可能想重复使用此公式,请Name通过“公式/定义名称”菜单创建一个:
那么B3中的公式现在是:
=PeriodChange(A3:A9,B1)
Run Code Online (Sandbox Code Playgroud)
例如:如果您仍然想要 1 周期更改的辅助列:
=PeriodChange(A3:A9,1)
Run Code Online (Sandbox Code Playgroud)
编辑:
CHOOSEROWS这个替代公式更灵活一些,因为它允许您使用而不是传递具有多个列的数组INDEX:
=LET(a,A3:B9,o,B1,n,SEQUENCE(ROWS(a)-o),i,LAMBDA(m,CHOOSEROWS(a,m)),e,i(n),s,i(n+o),(e-s)/s)
Run Code Online (Sandbox Code Playgroud)
使用函数LAMBDA的别名CHOOSEROWS可以减少输入次数。