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

如何针对动态数组值批量应用Excel公式?

解决Excel中可变长度TALLY字段的批量展开问题

方法一:Excel 365/2021 动态数组公式(一键自动生成结果)

假设原始数据放在A2:F列(A=RO、B=ROID、C=ITEM、D=CONT、E=RP、F=TALLY),在空白单元格(比如H2)输入以下公式,结果会自动溢出到下方和右侧:

=LET(
    原始数据, A2:INDEX(F:F,COUNTA(A:A)),
    处理单行, LAMBDA(行,
        LET(
            RO, INDEX(行,1), ROID, INDEX(行,2), ITEM, INDEX(行,3), CONT, INDEX(行,4), RP, INDEX(行,5), TALLY, INDEX(行,6),
            拆分TALLY项, TEXTSPLIT(TALLY, ", "),
            拆分数量长度, TEXTSPLIT(拆分TALLY项, "/"),
            数量, INDEX(拆分数量长度,0,1)*1, 长度, INDEX(拆分数量长度,0,2)*1,
            明细收货量, 数量*长度,
            明细ITEM, ITEM & "   ." & 长度,
            明细CONT, CONT,
            汇总收货量, SUM(明细收货量),
            汇总ITEM, ITEM,
            汇总CONT, CONT & "   1",
            明细行集合, HSTACK(明细收货量, RO, ROID, 明细ITEM, 明细CONT, RP),
            汇总行, HSTACK(汇总收货量, RO, ROID, 汇总ITEM, 汇总CONT, RP),
            VSTACK(汇总行, 明细行集合)
        )
    ),
    各行结果集合, BYROW(原始数据, 处理单行),
    VSTACK({"Received_qty", "RO", "ROID", "ITEM", "CONT", "RP"}, DROP(REDUCE("", 各行结果集合, LAMBDA(累计结果, 当前行结果, VSTACK(累计结果, 当前行结果))), 1))

公式说明:

  • 自动识别原始数据的最后一行,无需手动调整范围
  • 对每行TALLY字段拆分出所有统计项,自动计算明细收货量和汇总收货量
  • 按要求生成ITEM和CONT列的格式,汇总行放在对应明细行的最上方

方法二:Power Query(兼容Excel 2016及以上,适合大量数据)

如果你的Excel版本不支持动态数组函数,用Power Query可以更稳定地处理批量数据:

  1. 选中原始数据区域,点击数据选项卡 → 从表格/区域,导入Power Query编辑器
  2. 拆分TALLY到单行:选中TALLY列,点击拆分列 → 按分隔符,选择逗号,勾选「拆分到行」
  3. 拆分数量和长度:选中拆分后的TALLY列,点击拆分列 → 按分隔符,选择斜杠/,拆分成两列,命名为「数量」「长度」并转为数值类型
  4. 计算收货量:添加列 → 自定义列,输入公式:[数量] * [长度],命名为Received_qty
  5. 生成明细ITEM:添加列 → 自定义列,输入公式:[ITEM] & " ." & Text.From([长度]),命名为ITEM_明细
  6. 生成汇总行:选中RO、ROID、ITEM、CONT、RP列,点击转换 → 分组依据,操作选择「所有行」,新列名设为「汇总数据」;展开汇总数据后,添加自定义列生成汇总收货量List.Sum([汇总数据][Received_qty])、汇总ITEM[ITEM]、汇总CONT[CONT] & " 1"
  7. 合并汇总与明细行:整理列顺序为Received_qty「RO」「ROID」「ITEM」「CONT」「RP」,删除冗余列
  8. 点击关闭并上载,结果会自动导入到新工作表

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 03:54:51