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

XLOOKUP与INDEX-MATCH无法匹配超规包裹对应运单编号求助

问题:匹配超规包裹对应运单编号并计算总费用

我在一家相框公司工作,需要找出哪些寄给客户的包裹因超规(超重、超大等)产生附加费。目前收到快递公司的运单数据表,要创建一个仅包含运单编号及总费用的可刷新表格,但无法将超规包裹行与所属主运单行匹配。

原始运单数据表

最后一个包裹编号描述费用运单编号运单内所有包裹编号
0001标准件£ 5.00CN0010001
0003标准件£ 10.00CN0020002;0003
0004标准件£ 5.00CN0030004
0008标准件£ 20.00CN0040005;0006;0007;0008
0010标准件£10.00CN0050009;0010
0002超规件£ 15.00
0009超规件£ 15.00
0010超规件£ 15.00

已尝试的操作及问题

要求新表格可刷新,因此用IF语句嵌套函数:

=IF( E2= "", <function>, E2)

该公式在第4列(运单编号)有值时能正常显示数据,但第4列无值时,尝试用XLOOKUP结合TEXTSPLIT拆分第5列内容作为查找数组:

=XLOOKUP( A2, TEXTSPLIT( E2:E5, ";"), D2:D5)

所有超规行均返回#N/A错误;单独使用TEXTSPLIT时返回#VALUE错误。尝试过INDEX-MATCH组合,但无法实现匹配,寻求可行解决办法。

可行解决方案

方法1:兼容多数Excel版本(用ISNUMBER+SEARCH)

在超规行的运单编号单元格(比如D7,对应包裹0002)输入以下公式,向下填充:

=IF(D2<>"",D2,XLOOKUP(TRUE,ISNUMBER(SEARCH(A2,E$2:E$6)),D$2:D$6,"未找到"))

说明:

  • SEARCH(A2,E$2:E$6)检查当前超规包裹编号是否存在于主运单的包裹编号列表中,返回匹配位置的数组
  • ISNUMBER将搜索结果转为布尔值,XLOOKUP匹配第一个TRUE对应的运单编号

方法2:适用于Excel 365/2021(动态数组方案)

利用动态数组函数拆分所有包裹编号并对应运单编号:

=IF(D2<>"",D2,XLOOKUP(A2,TOCOL(TEXTSPLIT(E$2:E$6,";")),REPT(D$2:D$6,COUNTA(TEXTSPLIT(E$2:E$6,";"))),"未找到"))

说明:

  • TEXTSPLIT(E$2:E$6,";")拆分所有主运单的包裹编号为二维数组
  • TOCOL将二维数组转为一维数组,REPT重复对应运单编号,让包裹编号数组和运单编号数组长度完全匹配,最终用XLOOKUP精准查找

计算运单总费用

得到完整的运单编号列后,用SUMIF计算每个运单的总费用(假设运单编号在D列,费用在C列):

=SUMIF(D:D,F2,C:C)

(其中F2为需要计算总费用的运单编号单元格)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 10:44:50