网友求助SOS:如何根据快递匹配分类?啥意思呢?下面我们用案例模拟真实的办公场景。
如下图所示:
A:B列是快递编号与对应快递的对照表。A列编号是完整快递单号的前两位。D列是完整的快递单号,我们就是想要根据D列完整的快递单号,将对应的快递公司填写在E列。
小编给到的解决方案是vlookup+mid+iferror函数组合。怎么用呢?下面我们一步一步说。总而言之,这个案例很简单。
我们输入公式:
=MID(D2,1,2)
利用MID函数提取D列单元格完整物流单号的前两位。
MID函数提取D2单元格中的字符串,从第1位开始,提取2位字符长度,所以“YT2553112343019”的前两位就是“YT”。
外面嵌套VLOOKUP函数:
=VLOOKUP(MID(D2,1,2),A:B,2,0)
用MID函数提取到的完整物流单号的前两位,作为VLOOKUP函数的第一参数查找值。在A:B区域内进行查找,用精确匹配的方式,查找A:B区域的第2列“对应快递”。
但是我们发现:
只有完整物流单号前两位是字母(文本)的,E列才会显示正确的快递公司查询结果。而完整物流单号全部是数字的,也就是完整物流单号前两位是数字的,E列快递公司的查询结果却显示错误值。
造成这种结果的原因是这样的:
MID函数提取结果返回的是文本形式存储的数据。
比如MID函数提取到的D3单元格的前两位“76”
=MID(D3,1,2)
与对照表中的A8单元格的“76”对比:
=F3=A8
结果会返回错误值:
FALSE
也就是说MID函数提取到的“76”文本型数字,而A8单元格的“76”为纯数字,两者其实不相等。所以VLOOKUP查询不到。
其中一种解决方案,就是对对照表进行操作,用“分列”的方式,将A列的“编号”的格式转换为文本格式,也就是说将VLOOKUP的查找值mid函数返回结果与查询区域的首列“编号”统一文本格式。
那么E列结果自然而然就都正确了。
但是小编提倡的是用公式一条龙解决问题,不要用公式+分列两步走战略。
我们输入公式:
=MID(D2,1,2)
利用MID函数提取D列单元格完整物流单号的前两位。
注意:
MID函数提取到的前两位如果是数字的情况下,为文本型数字。如物流单号“76495265471561”前两位“76”为文本型数字。
继续完善公式:
=MID(D2,1,2)*1
MID(D2,1,2)*1作用:
将提取的2个字符尝试转换为真正的数字。
若字符是文本型数字(如 "76"),转换成功 → 返回真正的数字 76。
若字符是非数字(如 "YT"),转换失败 → 返回错误值 #VALUE!。
继续完善公式:
=IFERROR(MID(D2,1,2)*1,MID(D2,1,2))
IFERROR(MID(D2,1,2)*1, MID(D2,1,2))作用:
根据上一步结果,返回有效值。
若文本型数字转换为真正的数字成功 → 保留真正的数字(如 76)。
若转换失败 → 返回原始文本(如 "YT")。
逻辑:
优先尝试用真正的数字匹配(针对快递单号以数字开头的场景,如中通单号 76)。
若失败则用文本匹配(针对快递单号以字母开头的场景,如圆通单号 YT)。
最后VLOOKUP函数匹配即可:
=VLOOKUP(IFERROR(MID(D2,1,2)*1,MID(D2,1,2)),A:B,2,0)
VLOOKUP(..., A:B, 2, 0)作用:
在 A:B 对照表中,根据前一步的值查找对应的快递公司名称。
参数解析:
查找值:IFERROR(...) 的结果(真正的数字或文本)。
查找区域:A:B 列(A 列为编码,B 列为快递公司名称)。
返回列:第 2 列(即 B 列)。
匹配模式:0 表示精确匹配。
转载请注明来自极限财经,本文标题:《d速物流是什么快递我得去哪里取快递(vlookupmidiferror函数)》
还没有评论,来说两句吧...