Excel应用实战——如何实现智能提取并进行判断匹配的函数组合

Excel应用实战——如何实现智能提取并进行判断匹配的函数组合

首页休闲益智匹配找相同合成大师更新时间:2024-08-20

本文将用到: MID(数据,取数第1位,取几位) FIND/SEARCH(目标值,查找文本) MATCH(目标值,查询区域,精准/模糊) VLOOKUP(目标值,查询区域查询区域列号,精准/模糊) ISERROR() 结果为TRUE/FALSE IF(条件,满足条件结果,不满足条件结果)

一位来自广西的网友,据推测是个小哥,他想通过1、2两列进行对比,若1列能在2列中找到一样的城市,显示在3列。

来自广西网友的提问

表哥思路:首先提取B列的城市名称到辅助列,再判断是否在C列的城市列表中,最后将结果显示在D列。

我们截取前几行作为案例一步步说明如何实现。

第一步:组合MID FIND提取B列的市级城市

如果每个城市的名字都是两个字,则可使用公式MID(8,2)直接提取。

但观察到案例中需要提取市级城市的名称字数不一致,有的是两个字,有的是三个字。所以不可直接用MID提取,需要借助能够帮助定位字数的关键字。

由于各行数据非常整齐,均包含关键字"市",并且省级字符数均为7个。

因此,可以借助查询函数,定位关键字"市",以确定城市字数。

如何通过关键字"市",以确定提取城市字数?

以B6为例,首先,确认市级城市名的第1个字的位序。

由于数据均来自"广西壮族自治区"(此处共7个字),则市级城市名字的起始位序为8;

之后,确认关键字"市"在第几位。公式为FIND("市",B6);

根据以上可得,城市的字数为"市"的位序与城市名起始位序之差,即为城市名的字数(如图绿色部分)。

综上,提取城市名称的辅助列公式为:

MID(B6,8,FIND("市",B6)-8)

提取了B列的城市名称后,下一步判断是否该城市在C列名单范围内。

第二步,使用查询函数与名单城市进行匹配

案例中,名单列表的全部城市被存储在一个合并单元格中,可将其视作一段字符串,也可作为数据区域。因此,查询方法分为两种。

与第一步中提取"市"关键字的方法一致,在单元格C3中查找,是否包含辅助列的城市名。以第3行为例,公式为FIND("钦州",$C$3)。

表哥Tips:

此处也可用函数SEARCH。公式为SEARCH("钦州",$C$3)。当判断内容为中文时,FIND和SEARCH用法几乎完全一致,而当在判断英文时,FIND判断一致性不但包括内容,还有大小写,所以FIND比SEARCH的匹配要求更加严格。

此方法查询原理为是否辅助列单元格与C列一致,显然若直接使用函数,结果全部城市都会被判定不在列表范围内。因此,需要用到通配符"*",与辅助列城市结合成一段与C列结构类似的字符串,系统才能进行正确判断。

公式为:

VLOOKUP("*"&"钦州"&"*",$C$3,1,FALSE)

或MATCH("*"&"钦州"&"*",$C$3,0)

第三步,根据查询结果显示最终结果

在上一步中,我们根据查询函数进行判断,判断是否辅助列提取的城市名在C列的名单列表中。若能够查询到,则说明在名单内,返回查询到的数据,而查询不到,则显示报错。

表哥Tips:

FIND/SEARCH报错时显示"#VALUE";VLOOKUP/MATCH报错显示"#N/A"。

我们利用是否报错这一点,在D列显示最终结果。

判断查询函数是否报错,可使用函数ISERROR(),如果报错,此函数返回"TRUE",否则返回"FALSE"。如果你觉得听起来似乎有些糊涂,可参考下表缕清逻辑:

判断是否报错的公式为:

ISERROR(第二步的查询函数)

结果为:

最后用IF函数判断并显示最后结果,如果"TRUE"则显示"N",否则显示"Y"。

综上三步,回顾整体思路,及所用到函数为:

以上是提取关键字并进行判断匹配的方法,

希望表哥的思路能够对你起到抛砖引玉的作用。

你的大法是什么呢?

欢迎与表哥分享

↖(^ω^)↗撒花

查看全文
大家还看了
也许喜欢
更多游戏

Copyright © 2024 妖气游戏网 www.17u1u.com All Rights Reserved