You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用带#运算符的数组IF公式实现Filter结果的动态溢出计算

动态溢出数组公式实现自动计算(适配FILTER结果)

直接用以下动态溢出数组公式替代拖拽式IF公式,无需VBA、宏或手动刷新,粘贴数据后自动同步计算:

=LET(
    ids, B2#,
    vals, C2#,
    types, D2#,
    prev_ids, VSTACK("", DROP(ids, -1)),
    prev_vals, VSTACK(0, DROP(vals, -1)),
    prev_types, VSTACK("", DROP(types, -1)),
    IF((types="IN")*(prev_types="OUT")*(ids=prev_ids), vals-prev_vals, 0)
)

公式说明

  1. 变量定义:用LET简化公式逻辑,ids/vals/types分别对应你通过FILTER提取的ID列、数值列、IN/OUT类型列的溢出数组(替换B2#/C2#/D2#为你的实际溢出引用)
  2. 上一行数据构造:
    • VSTACK("", DROP(ids, -1)):给上一行ID数组开头补空值,对应原拖拽公式中第一行数据的表头行
    • VSTACK(0, DROP(vals, -1)):给上一行数值数组开头补0,避免空值计算错误
  3. 条件判断与计算:完全复刻原拖拽公式的三个判断条件,满足时计算当前行与上一行的数值差,否则返回0

使用步骤

  1. 确保你的FILTER提取公式已设置为动态溢出(比如在B2输入=FILTER(...),数据自动溢出到B2:D#)
  2. 在结果输出单元格(比如E2)粘贴上述公式,公式会自动匹配FILTER返回的行数并溢出结果
  3. 当你将新数据粘贴到初始工作表时,FILTER会自动更新数据,此公式同步自动计算,无需任何手动操作

优化(处理空结果)

如果FILTER可能返回空数组,可加IFERROR避免错误提示:

=IFERROR(LET(
    ids, B2#,
    vals, C2#,
    types, D2#,
    prev_ids, VSTACK("", DROP(ids, -1)),
    prev_vals, VSTACK(0, DROP(vals, -1)),
    prev_types, VSTACK("", DROP(types, -1)),
    IF((types="IN")*(prev_types="OUT")*(ids=prev_ids), vals-prev_vals, 0)
), "")

内容的提问来源于stack exchange,提问作者ch1zra

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.11 23:42:37