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

Google Sheets如何无中间表用纯公式计算订单总金额

无中间表计算订单总金额实现方案

不需要新建中间工作表,直接在订单表「Total」列第一个待计算单元格(即订单号3003对应的总金额单元格)输入下面的数组公式,回车后会自动批量算出所有订单的总金额:

=ARRAYFORMULA(MMULT(--(REGEXEXTRACT(SPLIT(B2:B, ","), "^\S+") = TRANSPOSE('产品价格表'!A2:A)), --'产品价格表'!B2:B))

公式里的引用可按实际表格位置替换:B2:B是订单表存放line items的列,'产品价格表'!A2:A是价格表的产品名列,'产品价格表'!B2:B是价格表的单价列。

公式逻辑

  • 用SPLIT直接按逗号批量拆分整列所有订单的行项目,不用逐行取数,ARRAYFORMULA会自动适配整列数据
  • 用和原有方案一致的正则^\S+,提取每个拆分结果开头的商品名,自动过滤掉后面- 颜色的后缀部分
  • 把提取到的每行商品列表和转置后的产品名录做等值匹配,生成一个「订单×商品」的布尔矩阵,矩阵里值为TRUE就代表当前订单包含对应商品
  • 最后用MMULT做矩阵乘法,直接把匹配结果和单价表相乘求和,一步算出每个订单的总金额,省掉了单独VLOOKUP、逐行SUM的步骤。

如果觉得MMULT逻辑不好理解,也可以用更贴合原有思路的BYROW版本,同样不需要中间表:

=BYROW(B2:B,LAMBDA(single_order,
  IF(single_order="","",
    SUM(VLOOKUP(REGEXEXTRACT(SPLIT(single_order,","),"^\S+"),'产品价格表'!A2:B,2,0))
  )
))

这个公式把原有方案里「拆分-提取商品名-VLOOKUP匹配单价-求和」的流程,用BYROW按行封装在单条公式里,逻辑和原方案完全一致,只是不需要额外占用工作表位置,日常使用足够,仅在数据量特别大的时候计算速度比MMULT版本稍慢。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 16:48:25