计算机系统应用教程网站

网站首页 > 技术文章 正文

Excel困扰许久的多条件模糊查找,输出不同结果,被find函数搞定

btikc 2024-12-06 12:52:36 技术文章 26 ℃ 0 评论

查找函数大家习惯了用 vlookup,而 find 函数用的人相对较少。


单从字面理解,find 就是用来查找的,其语法也不复杂。但是这个函数有一些非常精彩的用法,恐怕掌握的人为数不多。

比如,某同学说他为了一个需求困扰了很久,一直没有很好的解决方法:对一列数据进行多条件模糊查找,找到以后,根据不同的查找条件,输出对应的值。就是我们今天的案例 3,我用 find 函数,连辅助列都不需要,短短一个公式就解决了他的难题。

作用:

  • 在第二个文本串中定位第一个文本串,并返回第一个文本串的起始位置的值

语法:

  • FIND(find_text, within_text, [start_num])

参数:

  • find_text:必需,要查找的文本。
  • within_text:必需,包含要查找文本的文本。
  • [start_num]:可选,指定开始进行查找的字符。如果省略,则假定为 1。

说明:

  • FIND 函数区分大小写,并且不允许使用通配符。

用法示例:

  1. 查找含有特定字符的单元格
  2. 多条件模糊查找
  3. 根据多个查找条件,输出不同结果
  4. 按照等级计算奖金

案例 1:查找含有特定字符的单元格

下图 1 为某公司部分员工列表,查找出 A 列中所有云字科的员工,在 B 列中写入“云字科”,如下图 2 所示。

解决方案 1:

1. 在 B2 单元格中输入以下公式,下拉复制公式:

=IF(ISNUMBER(FIND("云",A2)),"云字科","")


公式释义:

  • FIND("云",A2):在 A2 单元格中查找“云”字,找到会返回一个数字,表示它在文本中的位置;找不到则返回错误值
  • ISNUMBER(FIND("云",A2)):用 isnumber 判断 find 函数返回的是否是数字
  • IF(...,"云字科",""):如果是数字,说明找到“云”字了,输出“云字科”;否则,就留空

案例 2:多条件模糊查找

查找出所有徒弟,在 C 列中写入“徒弟”。

解决方案 2:

1. 在 C2 单元格中输入以下公式,下拉复制公式:

=IF(COUNT(FIND({"云","鹤","九","霄"},A2)),"徒弟","")

公式释义:

  • FIND({"云","鹤","九","霄"},A2):会出现一个由数字或错误值组成的数组;数字表示找到这个字,错误值表示没找到
  • COUNT(FIND({"云","鹤","九","霄"},A2)):用 count 函数统计数组中的数字个数,只要 >0 就表示含有“云”、“鹤”、“九”、“霄”其中之一,那就是徒弟
  • IF(...,"徒弟",""):如果 count 值不为 0,输出“徒弟”;否则,就留空

案例 3:根据多个查找条件,输出不同结果

查找出 A 列中所有徒弟,并在 C 列中写入该徒弟对应的字。

这个就是网友苦思冥想不得其解的需求,相当于多条件模糊查找,再根据不同条件输出对应结果。


网友之前想了很多种方式,包括 vlookup、lookup 等等,都没有好的解决办法。没想到用 find 给轻易破解了。

解决方案 3:

1. 在 D2 单元格中输入以下公式,下拉复制公式:

=IF(COUNT(FIND({"云","鹤","九","霄"},A2)),MID(A2,2,1)&"字科","")

公式释义:

  • COUNT(FIND({"云","鹤","九","霄"},A2)):这部分公式跟上一案例一样,先用 find 函数在单元格中依次查找 4 个字,得出一个由数字或错误值组成的数组;再用 count 函数统计数组中的数字个数
  • IF(COUNT(FIND({"云","鹤","九","霄"},A2)),:如果数字个数不为 0,说明名字中含有某个字;
  • MID(A2,2,1)&"字科",""):这个字通常在第二位,所以用 mid 函数取出名字中的第二个字,用 & 符号跟“字科”连接起来,就是想要的结果;否则显示空值

案例 4:按照等级计算奖金

下图 1 某公司员工的年终评级及对应的奖金规则,请按照规则快速计算出年终奖。如下图 2 所示。

解决方案 4:


1. 在 F2 单元格中输入以下公式,下拉复制公式:

=FIND(E2,"DCBA")*500&"元"

公式释义:

  • FIND(E2,"DCBA"):查找 E2 单元格的值在“DCBA” 中第几位,比如“C”在第 2 位,结果就为 2
  • FIND(E2,"DCBA")*500:用上述值乘以 500,就是奖金梯次规则
  • &"元":最后再用连接符号跟币种相连

很多同学会觉得 Excel 单个案例讲解有些碎片化,初学者未必能完全理解和掌握。不少同学都希望有一套完整的图文教学,从最基础的概念开始,一步步由简入繁、从入门到精通,系统化地讲解 Excel 的各个知识点。

现在终于有了,以下专栏,从最基础的操作和概念讲起,用生动、有趣的案例带大家逐一掌握 Excel 的操作技巧、快捷键大全、函数公式、数据透视表、图表、打印技巧等……学完全本,你也能成为 Excel 高手。

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表