中企动力 > 商学院 > excel查找多个匹配值
  • ?

    Excel常见查询套路,你用过几个?

    贲幼翠

    展开

    模糊及精准查询

    如图:Excel文件中包含多个数值,它们都有一个特点就是都含有6这样一个数值。

    CTRL+F打开查找对话框,我在查找内容是“6”但大家可以清楚看到,只要单元格含6都可以查找出来。这其实与我们本来是查找“6”的真实目的不一致。因为Excel中默认的查找方式是模糊查找

    怎么样才能够达到精确查找呢?在查找对话框中点击“选项”

    在“选项”中点击勾选“单元格匹配”单元格匹配什么意思?就是查找内容与单元格完全一致时还是才查找。再看一下查找结果,是不是达到了我们要的精确查找的结果?

    vlookup查找

    如图所示,要根据I2单元格活动形式,在E-G区域中查询出对应的价格

    经典套路:

    =VLOOKUP(I2,E:G,3,0)

    lookup查询

    如下图所示,根据H2单元格姓名,在A-B数据区域中查询对应的工号

    =LOOKUP(1,0/(H2=B2:B31),A2:A31)

    公式指南:

    =LOOKUP(1,0/(条件区域=指定条件),要返回的区域)

    组合查找

    利用MATCH和INDEX函数

    如下图所示,根据姓名查询城市及职务。

    G2单元格公式为:

    =INDEX(A:A,MATCH($F2,$B:$B,0),0)

    H2单元格公式为:

    =INDEX(C:C,MATCH($F2,$B:$B,0),0)

    如果看了这篇文章还是搞不定,可以直接给我留言

    关于作者

    专注分享Excel经验技巧

    一个人走得快,一群人走得远,与195位同学共同成长

  • ?

    excel几个函数综合运用,实现类似查询功能

    从安

    展开

    各位表亲好啊,话说某单位组织员工考核,最后需要根据考核分数进行评定。

    考核分数在0~59的,是不合格。

    60~79的,是合格。

    80~89的,是优秀。

    90及以上的,是良好。

    对于这种情况,咱们要首先建立一个分数和等级的对照表:

    发现这个对照表的规律了吗?

    分数是从小到大排列的,首列中的分数就是等级标准的起始值,也就是达到这个分数或是超过这个分数了,就是对应的等级。

    在这个例子中,就要用到近似匹配了。接下来,咱们看看用那些方法能实现。

    INDEX+MATCH

    先来说INDEX+MATCH法,这是一对查找应用的天生绝配,MATCH函数负责找出位置,INDEX函数负责根据这个位置找到对应的值,话不多说,看公式。

    =INDEX(F$3:F$6,MATCH(B2,E$3:E$6))

    MATCH函数省略第三参数,表示在E3:E6这个区域中,查找小于或等于B2单元格(75)的最大值。

    在E3:E6这个区域中,没有75这个值,她就找到所有几个弟弟当中,最大的一个弟弟,也就是60。

    MATCH函数说了,找不到你哥,就拿你顶包吧,然后就返回60在E3:E6这个区域中的位置2,INDEX函数根据这个位置返回F3:F6单元格中对应的值。

    这里MATCH就是一个班长:报告老师,第二排有人睡觉了!

    INDEX函数马上就说了,第二排睡觉的那个,滚出去!

    这里有一个前提啊:查询区域首列的值必须以升序排序,否则就乱了方寸了。

    VLOOKUP

    VLOOKUP也是重量级的查找引用函数,出镜率那是相当的高,有查找的地方,就有VLOOKUP。

    =VLOOKUP(B2,E$3:F$6,2)

    VLOOKUP函数的几个参数大家都记得吧,第一个是要找谁,第二个参数是在哪儿找,第三个参数是返回第几列的值,第四个参数是精确的找还是近似的找。

    在这里,VLOOKUP函数第四参数省略掉了,默认执行的是近似的匹配方式,VLOOKUP函数说了,既然没有小尾巴跟踪,我就差不多得了。

    查找时,返回精确匹配值或近似匹配值。 如果找不到精确匹配值,则返回小于查找值的最大值,也是在找几个弟弟中最大的那个弟弟。

    LOOKUP

    LOOKUP函数可是一个魅力十足的奇女子,那是简单而不简约,手起刀落之处,必是哀鸿遍野。

    =LOOKUP(B2,E$3:F$6)

    LOOKUP函数第一参数是查询值,第二参数是查询区域。

    大家只要记得,如果 LOOKUP 函数找不到查询值,则会与查询区域中小于或等于查询值的最大值进行匹配,仍然是找不到本主时,就拿几个弟弟中的大弟弟顶包。

    这里第二参数是一个两列的区域,LOOKUP函数很聪明的从这个区域中的首列,找到大弟弟的位置,并且返回这个区域最后一列对应位置的值。

    条条大路通罗马,近似匹配的查询,用几个函数都能实现。

    但是注意哦,在近似匹配时,必须是要将查询区域的首列从小到大排序的,否则的话,就找不到大弟弟的位置了呢。

  • ?

    Excel如何实现双条件查找?

    余元菱

    展开

    今天在论坛有个小伙伴问到一个关于Excel查找的相关问题,但是他的要求是多个条件进行限制,然后匹配对应的数据出来,今天小菜就以这种情况和大家分享关于Excel双(多)条件查找的5种技巧!

    现在需求是匹配出营销部的小菜底薪。会发现公司叫小菜的不只是营销部,因此不能做为单一条件去匹配,故此这类我们称多条件查找。

    方法1:用SUMPRODUCT函数

    公式:=SUMPRODUCT(($A$2:$A$8=E2)*($B$2:$B$8=F2)*($C$2:$C$8))

    满足姓名是小菜,部门是营销部,然后对底新列求和。

    方法2:用max函数+数组

    公式:=MAX(($A$2:$A$8=E2)*($B$2:$B$8=F2)*($C$2:$C$8)),编辑完公式在三键结束。

    方法3:Index+Match实现

    公式:=INDEX($C$2:$C$8,MATCH(E2&F2,$A$2:$A$8&$B$2:$B$8,0))

    Match这里巧妙把两个条件用&连接起来,就变成了一个条件,MATCH(E2&F2,$A$2:$A$8&$B$2:$B$8,0)

    方法4:使用lookup函数

    公式:=LOOKUP(1,0/(($A$2:$A$8=E2)*($B$2:$B$8=F2)),$C$2:$C$8)

    这是lookup一个常用套路=lookup(1,0/((条件1区域=条件1)*(条件2区域=条件2)),(返回的结果区域))

    方法5:数据库函数DSUM

    此函数有3个参数。第1参数:要引用的数据源;第2参数要求和的列;第3参数:条件,注意一定要引用单元格区域包括列标题字段,如E1:F2

    方法还有其他的,希望这些方法能解决大家的问题,如果OK,记得点个赞,分享个朋友圈,这样小菜也有更加的动力为大家写文章……

    如果你是新朋友,扫码关注下方二维码,便每天可以和小菜一起学习,一起提升技能!当然大家也可以技巧分享,学习更多办公技巧哦!

    每天一起学习,一起进步。

  • ?

    vlookup函数的使用方法,含查找多值、以某字开头的值与近似匹配

    白竹

    展开

    vlookup 是 Excel 中常用的函数之一,它用于查找指定值所对应的另一个值,特别是表格记录非常多时,用它很快就可以找到想查找的值。用vlookup函数查找时,既可以精确匹配又可以近似匹配。以下将先介绍vlookup函数的作用和函数表示,再列举vlookup函数的使用方法,最后再分享它的几个扩展应用实例,包含查找以某字或词组开头或结尾值、查找包含某个字或词组的值,近似匹配和查找指定类下的所有产品价格。实例操作所用版本均为 Excel 2016。

    一、vlookup函数的使用方法

    (一)vlookup 的作用

    vlookup 用于查找指定值所对应的另一个值。例如:查找某件产品的价格,某个同学的某科成绩等。

    (二)vlookup 函数表示:

    =vlookup(要查找的值,查找区域,返回值所在列号,精确匹配或近似匹配)

    参数说明:

    1、要查找的值:可以引用单元格的值,例如 B6;也可以直接输入,例如“红色T恤”。

    2、查找区域:用于指定查找范围,例如 A2:D10。

    3、返回值所在列号:用于指定返回值在哪列,列号开始必须从指定范围算起;例如指定范围为 B2:E8,则 B 列为第一列,若返回值所在列号为 3,则从 D 列中返回值。

    4、精确匹配或近似匹配:精确匹配用 0 或 False 表示;近似匹配用 1 或 True 表示;为“可选”项,即可填可不填;若不填,则默认值为近似匹配。

    (三)vlookup函数的使用方法

    1、假如要从一个服装销量表中查找某件衣服(粉红衬衫)的价格。选中 A14 单元,输入 =b5,按回车,则引用 b5 单元的值“红色T恤”;双击 B14 单击格,把公式 =VLOOKUP(B5,B2:H9,5,0) 复制到 B14,按回车则查找到“红色T恤”的价格,操作过程步骤,如图1所示:

    图1

    2、公式说明:

    =VLOOKUP(B5,B2:H9,5,0) :B5 是要查找的值,B2:H9 是查找范围,5 是返回值所在的列号(从 B 列开始算起的第5列[即 F 列]),0 表精确匹配;公式的意思是从 B2:H9 这片区域查找 B5(即“红色T恤”)的价格。

    二、vlookup函数的扩展使用方法

    (一)查找以某字或词组开头或结尾值,查找包含某个字或词组的值

    1、假如要查找服装销表中是否有以“T恤”结尾的服装,有则显示价格。选中 B14 单元格,把公式 =VLOOKUP("*"&"T恤",B2:H9,5,0) 复制到 B14 单元格,如图2所示:

    图2

    2、按回车,则公式执行结果为 35,恰好是 B3“绿色T恤”的价格,说明公式无误,如图3所示:

    图3

    3、公式中 * 表示任意字符,& 是连接符号,"*"&"T恤" 表示查找以任意字符开头、以“T恤”结尾的服装。

    4、查找以指定字符(如“粉红”)开头的的服装,公式可以这样写:=VLOOKUP("粉红"&"*",B2:H9,5,0)。查找包含某个词的服装,公式可以这样写:=VLOOKUP("*"&"短袖"&"*",B2:H9,5,0)。

    (二)近似匹配

    1、假如根据评定等级表查找指定学生的评定等级。在 L9 单元格中输入 =A3,按回车,则引用 A3 的值;输入公式=VLOOKUP(I3,L:M,2),按回车,则找到莫静玲的评定结果“良”,操作过程步骤,如图4所示:

    提示:“评定表”一定要按“升序”排序,否则无法实现近似匹配,公式执行会返回错误结果。例如:演示中,“评定表”的“分数”是按升序排序。

    2、公式说明

    公式 =VLOOKUP(I3,L:M,2) 中引用“评定表”的区域只用列号(即 L:M)即可,不必用行,否则无法返回正确的结果。公式中省略了第四个参数,则第四个参数用默认值“近似匹配”。

    (三)查找指定类下的所有产品价格

    1、假如要查找服装表中“小类”“衬衫”的价格。首先在 I1 和 J1 单元格分别输入“小类”和“价格”,然后在 I2 单元格输入要查找“衬衫”;把公式 =(F2=$I$2)+A1 复制到 A2 单元格,按回车,把鼠标移到 A2 右下角的单元格填充柄上,往下拖,则生成一组次序;把公式 =IFERROR(VLOOKUP(ROW(A1),A:D,4,0),"") 复制到 J2 单元格,按回车,则返回第一条“小类”属于“衬衫”的服装价格,同样方法往下拖,返回所有属于“衬衫”的服装价格,操作过程步骤,如图5所示:

    图5

    2、A 列为辅助列,用于存放构建的组次序;用公式 =(F2=$I$2)+A1 构建的组次序,只有“衬衫”是完整的,“小类”下共有三个“衬衫”,构建的组次序为 1、2、3,而“小类”下的“雪纺”和“T恤”并未构建完整的组次序,例如“雪纺”有四个,它们的次序全是 2。为什么“衬衫”可以构建完整的组次序,而其它不行?主要是 F2=$I$2 决定的,F2 单元格中是“衬衫”,而 $I$2 单元格也是“衬衫”,在 I 和 2 前加 $ 表示对单元格 I2 的绝对引用,所谓绝对引用就是值不会改变,例如往下拖时,I2 不会变为 I3、I4、…。

    3、公式说明

    A、=(F2=$I$2)+A1

    当公式在 A2 单元格时,(F2=$I$2) 为真,转为数字也就是 1,A1 为 0(可以在任意一个单元格输入 =A1 测试),则 =(F2=$I$2)+A1 运算结果为 1;当公式在 A3 单元格时,公式变为 =(F3=$I$2)+A2,如图6所示:

    图6

    F3 单元格是“T恤”,I2 单元格是“衬衫”,它们不相等,返回假,转为数值也就是 0,A2 单元格的值是 1,加起来结果为 1;当公式在 A4 单元格时,公式变为 =(F4=$I$2)+A3,如图7所示:

    图7

    F4 为“衬衫”,(F4=$I$2) 返回真,则 =(F4=$I$2)+A3 = 1 + 1 = 2。由此可知,在往下拖过程中,A1 会逐渐增加 1,$I$2 始终不变。

    B、=IFERROR(VLOOKUP(ROW(A1),A:D,4,0),"")

    IFERROR 用于处理错误,即如果 VLOOKUP 执行发生错误,则返回空(即查找到“T恤”和“雪纺”时,返回空);ROW(A1) 是取得单元格 A1 的值,往下拖过程中,A1 会变成 A2、A3、…;其它三个参数上面已经介绍过,但要注意查找范围(A:D)要包含 A 列(即辅助列),不能包含要分组的列(即 F 列)。

  • ?

    Excel中VLOOKUP一对多查找到底怎么做?

    柳澜

    展开

    现有学生成绩单一份。

    图:原始数据

    现需要在I4-N9区域根据I2生源地查找所有该生源地的记录。

    图:预计实现效果

    操作步骤:构造辅助列A列,在A2单元格输入公式=COUNTIF(C$2:C2,C2)&C2,用COUNTIF函数将生源地出现的次数和生源地联系起来,形成序号+生源地的形式。

    图:构造辅助列

    在I5单元格输入公式

    =IFERROR(VLOOKUP(ROW(A1)&$I$2,$A:$G,COLUMN(B1),0),"")

    横向、纵向进行单元格填充,即完成一对多查找。

    图:完成一对多查找

  • ?

    Excel小思维:多条件匹配数据,你会吗?

    初蓝

    展开

    Hi,我是秋小叶~

    做 Excel 表格,一提到函数公式,很多人就头皮发麻。

    为什么?其一,因为表格需求千变万化,数据结构千差万别,一点点细微的差别,用法可能就大相径庭;其二,每个函数都有自己的语法规则,必须一五一十严格遵照它的要求,它才会乖乖听话。

    那有什么方法,可以在短时间内,快速提升函数公式的应用能力?答案只有一个——用!

    怎么用呢?

    在工作中以问题和需求为出发点,去找合适的方法。而要想成为个中高手,还有 2 种方式,系列化延伸和一题多解!通过对比不同的思路和方法,能对 Excel 基本技能有更加深入的认知。真到要用的那一刻,就能信手拈来。

    拿工作中最常用到的查找匹配为例,要在左边数据区域中查找出小王的销量数据 11,填写进 F2 单元格,怎么做?

    有一点 Excel 基础的人都知道,用一个 VLOOKUP 函数就够了:

    =VLOOKUP(E2,A:C,3,0)

    (拿着 E2 中的「小王」去匹配区域 (A:C) 的第一列,也就是员工一列中查找,找到以后返回匹配区域中同一行第 3 列的数据,也就是 11,其中最后一个参数 0 表示精确匹配,必须找一模一样的「小王」)

    这就是单条件的查找匹配。那……假如工作中需要按多个条件查找匹配呢?还能用 VLOOKUP 实现吗?

    举个例子,查找匹配出员工、医院、产品同时满足条件的销量数据,又该怎么做?

    直接查找匹配不行,我们可以明修栈道,暗度陈仓。既然多条件复杂,我们可以将多个条件合并成一个条件。

    首先插入一个空列,设为合并列。在 D2 单元格输入如下公式,将左边的三列合而为一:

    =A2&B2&C2

    ( & 是连接运算符,可以将单元格、数据拼接成新的文本)

    有了这个辅助列,作为查找匹配的索引,我们用 VLOOKUP 也能轻而易举的实现多条件查找匹配,只要在 J2 单元格输入如下公式即可:

    =VLOOKUP(G2&H2&I2,D:E,2,0)

    (和前面的公式不同点在于,查找对象换成了 G2、H2、I2 三个单元格合并以后的文本,匹配区域从 D 列开始到 E 列,这是因为VLOOKUP有一个前提条件:只在匹配区域的第一列中查找索引对象。)

    通过上述系列化延伸,你就能进一步了解更多知识点:

    VLOOKUP 的基本用法:只要在两张表中存在可以索引的数据,就可以查找到同一行中的其他数据

    用连接符 & 可以将多列数据合并为一列

    VLOOKUP 公式中可以嵌套使用其他公式,比如 G2&H2&I2 的计算结果作为查找对象

    VLOOKUP 公式只在匹配范围的第一列里查找匹配,按指定的列序返回结果

    到这里,问题已经解决。

    但是,学习高手可能会继续纵向深挖:

    如果用于索引的查找匹配列不在第一列时,例如合并列在销量列后头时,又该怎么做?

    或者横向扩展:

    多条件查找匹配,除了用 VLOOKUP+ 辅助列的方法,还有哪些方法?哪一种方法会更简单高效?

    要解决这个问题,其实我们就是追求 一题多解。预知详情,我们下期再聊。你也可以在评论区留下思路,交流碰撞说不定会激发出新的灵感。

  • ?

    如何用VLOOKUP函数进行一对多查找

    普利茅斯

    展开

    VLOOKUP函数在excel中应用广泛,查找数据很方便,在使用Vlookup时,用于匹配的数据必须是唯一的,可是如果碰到一个目标对应好几个值该怎么办呢?

    今天就来讲一下如何用VLOOKUP函数进行一对多查找;

    我们知道VLOOKUP函数的基本用法,如下图,这个基本用法咱们在前几天讲过;

    来看今天的主题,一对多查找;下图:一个业务经理管好几个业务员,根据业务经理姓名,怎么查找对应的业务员们;

    首先,在前面加一列辅助列

    为什么要在前面加一列呢,因为VLOOKUP函数的查找方式就是从前往后查找,有的人说我可以在后面加,然后再用公式把数据区域调换,当然也可以哈,如果不嫌麻烦的话。我们的例子就看在前面加辅助列的方式;

    在A2单元格输入=B2&COUNTIF($B$2:B2,B2),下拉填充;

    释义:COUNTIF函数是条件计数的一个函数,写法是:COUNTIF(条件所在区域,条件),得出结果为一个数值;

    $B$2:B2,往下拖到B3单元格就变成了$B$2:B3,拖到B18单元格就变成了$B$2:B18,后面的条件B2同理;

    然后,在F2单元格输入=IFERROR(VLOOKUP($E$2&ROW(A1),A:C,3,0),""),下拉填充;

    E2是业务经理姓名(鲁长风),ROW(A1)表示单元格A1所在的行,与“鲁长风”连接就是“鲁长风1”,公式下拉到F2,就是“鲁长风2”,正好做为VLOOKUP函数的第一个参数,类推;

    再把E2单元格做一个下拉菜单,选择业务经理姓名,对应的业务员姓名就会产生了;

    IFERROR函数:判断正确性,如果正确,就显示正确结果,如果错误,则根据需要显示成规定条件,=IFERROR(C2/D2,"")公式中,如果正确就显示C2/D2的结果,错误就显示为空;

  • ?

    Excel用Find函数返回指定字符位置与在多行查找及一次查找多个值

    灰色调

    展开

    在 Excel 中,查找指定字符在源字符串中的位置,既可以用 Find函数,也可以用 FindB函数,它们都有三个参数,所不同的是,前者把汉字、字母和数字都算一个字符,后者把汉字算两个字节,数字和字母算一个字节。以下就是 Excel Find函数与FindB函数的使用方法及实例,含基本使用方法、在多行中动态查找方法和用数组一次查找多个值实例,操作所用版本均为 Excel 2016。

    一、Find函数和FindB函数语法

    (一)Find函数

    表达式:FIND(Find_Text, Within_Text, [Start_Num])

    中文表达式:FIND(查找文本, 源文本, [查找开始位置])

    (二)FindB函数

    表达式:FINDB(Find_Text, Within_Text, [Start_Num])

    中文表达式:FINDB(查找文本, 源文本, [查找开始位置])

    (三)说明:

    1、如果 Find_Text 为空(""),则返回 1;另外,Find_Text 不能包含任何通配符。

    2、Start_Num 为可选项,如果省略,则默认从第一个字符开始查找。Start_Num 小于等于 0 与大于 Within_Text 长度,Find 和 FindB 都返回 #VALUE! 错误值。

    3、Find 和 FindB 都区分大小写,也就是同一个字母的大写和小写算两个字母。Find 的 Start_Num 无论是汉字、字母还是数字都以一个字符算;而 FindB 的 Start_Num 汉字以两个字节算,字母和数字以一个字节算。

    二、Find函数的使用方法及实例

    (一) Find_Text 为空("")且省略 Start_Num 的实例

    1、选中 B1 单元格,输入公式 =FIND("",A1),按回车,返回 1;双击 B1,把公式改为 =FIND("",A1,4),按回车,返回 4;操作过程步骤,如图1所示:

    图1

    2、公式说明:第一个公式 =FIND("",A1) 查找文本为空,默认返回第一个字符的位置,所以返回 1;第二个公式 =FIND("",A1,4),查找文本也为空,但从第 4 个字符开始查找,所以返回在“Excel 2016 教程”中指定的位置 4。

    3、查找空格(" ")

    A、把公式 =FIND(" ",A1,4) 复制到 B2 单元格,如图2所示:

    图2

    B、按回车,返回 6,正是“Excel 2016 教程”中第一个空格的位置,如图3所示:

    图3

    (二)Start_Num 小于等于 0 与大于 Within_Text 长度的实例

    1、把公式 =FIND("2016",A1,0) 复制到 B1 单元格,按回车,返回 #VALUE! 错误;把公式改为 =FIND("2016",A1,15),按回车,也返回 #VALUE! 错误;操作过程步骤,如图4所示:

    2、说明 Start_Num 小于等于 0 与大于 Within_Text 长度,Find函数都返回 #VALUE! 错误。

    (三)Find函数区分大小写的实例

    1、把公式 =FIND("e",A1) 复制到 B1 单元格,按回车,返回 4;把公式改为 =FIND("E",A1),按回车,返回 1,如图5所示:

    2、查找位置都默认从 1 开始,但查找小写 e 时,返回的 4,正是“Excel 2016 教程”中小写 e 的位置;查找大写 E 时,返回的是 1,正是“Excel 2016 教程”中大写 E 位置。

    (四)查找不存的文本返回错误处理

    1、把公式 =FIND("2013",A1) 复制到 B1 单元格,按回车,返回 #VALUE! 错误,因为“Excel 2016 教程”没有 2013,操作过程步骤,如图6所示:

    图6

    2、如果用 =FIND("2013",A1) 作为 if 的条件,返回 #VALUE! 错误,if 将无法判断真假,如这个公式 =IF(FIND("2013",A1),"2013","2016"),如图7所示:

    3、如果条件 FIND("2013",A1) 为真将返回 2013,否则返回 2016,但由于返回 #VALUE! 错误,导致最终也返回 #VALUE! 错误,如图8所示:

    图8

    4、只要加一个判断 Find 返回值是否为数字的 IsNumber函数,if 就能返回正确值,把公式改为 =IF(ISNUMBER(FIND("2013",A1)),"2013","2016"),按回车,返回 2016,操作过程步骤,如图9所示:

    图9

    5、由于 FIND("2013",A1) 返回 #VALUE! 错误,#VALUE! 不是数字,因此 IsNumber(#VALUE!) 返回假,if 的条件为假,所以返回 2016。

    (五)用 Mid 与 Find 截取指定字符

    1、从指定字符截取到末尾。假如要从“Excel 2016 教程”中截取 2016 以后的所有文字。把公式 =MID(A1,FIND("2016",A1),10) 复制到 B1 单元格,按回车,返回“2016 教程”,操作过程步骤,如图10所示:

    图10

    2、截取中间指字符串。假如要从“Excel 2016 数据透视表教程”中截取“数据透视表”。把公式 =MID(A1,FIND("数据",A1),FIND("透视表",A1,FIND("数据",A1)) +3-FIND("数据",A1)) 复制到 B1 单元格,按回车,返回“数据透视表”,操作过程步骤,如图11所示:

    图11

    公式说明:

    A、公式中第一个 FIND("数据",A1) 用于返回要截取字符串的开始位置。

    B、FIND("透视表",A1,FIND("数据",A1))+3-FIND("数据",A1) 用于返回要截取字符串的长度,先用 FIND("透视表",A1,FIND("数据",A1)) 返回要查找字符串“数据透视表”最后三个字所在位置,由于查找“透视表”是三个字,而 Find 返回“透视表”的是“透”字的位置”,因此要加 3;然后减掉要截取字符串开始字符“数据”所在位置,从而返回要截取字符串“数据透视表”。

    提示:如果要从文字很多的段落中截取指定字符,FIND("透视表",A1,FIND("数据",A1)) 中才用 FIND("数据",A1) 找到查找开始位置,否则开始位置从 1 开始即可,这样有利于提高效率。

    (六)用 Find函数在多行中动态查找

    1、假如要在服装销量表的“产品名称”中查找是否包含“分类”。把公式 =IF(ISERR(FIND($C$2:$C$12,B2)),"不包含","包含") 复制到 G2 单元格,按回车,返回“包含”;把鼠标移到 G2 右下角的单元格填充柄上,按住左键,往下拖,则所经过单元格返回相应值;操作过程步骤,如图12所示:

    图12

    2、公式说明:公式中 $C$2:$C$12 是对 C2 到 C12 的绝对引用,即往下拖时,每次从 C2 到 C12 中返回一个值;B2 是相对引用,往下拖时会变为 B3、B4、……;FIND($C$2:$C$12,B2) 是在 C2 中找 B2,往下拖时,B2 变 B3,则在 C3 中找 B3,以此类推;如果没有找到,Find函数返回 #VALUE! 错误;用 IsErr函数判断是否返回错误,如果返回错误,则返回“不包含”否则返回“包含”。

    (七)Find 用数组一次查找多个值

    1、假如要在“Excel 2016 教程”中查找是否包含 0、2、教。把公式 =SUM(ISNUMBER(FIND({0,2,"教"},A1))*1) 复制到 B1 单元格,按回车,返回 3,操作过程步骤,如图13所示:

    图13

    2、公式说明:

    A、用 Find 查找多个值,可以用数组,即 FIND({0,2,"教"},A1),表示要在 A1 中查找 0、2、教,查找顺序为:从 0 开始查找,每次查找一个,找到返回所在位置,没有找到返回 #VALUE! 错误。

    B、FIND({0,2,"教"},A1) 最终返回 {8,7,12},则公式变为 =SUM(ISNUMBER({8,7,12})*1);用 IsNumber 判断,由于数组中全是数字,所以全返回真,公式变为 =SUM({True,True,True}*1),再把 1 与数组中的每个 True 相乘,由于 True 转为数值为 1,所以公式变为 =SUM({1,1,1}),最终求和结果为 3。

    C、FIND({0,2,"教"},A1) 的意思是,如果 A1 中只有 0、2 或“教”其中之一,则返回 1;如果同时有两个,则返回 2;如果同时有三个,则返回 3。

    三、FindB函数的使用方法及实例

    1、把公式 =FINDB("2016",A1) 复制到 B1 单元格,按回车,返回 7;双击 B1 单元格,把公式改为 =FINDB("教",A1,6),按回车,返回 12;再次双击 B1 单元格,把公式改为 =FINDB("程",A1,6),按回车,返回 14;操作过程步骤,如图14所示:

    2、说明:第一个公式 =FINDB("2016",A1) 返回 7 ,说明,FindB函数把每个字母算一个字节;第二个公式 =FINDB("教",A1,6) 返回 12,说明 FindB函数把每字母和数字都算一个字节;第三个公式 =FINDB("程",A1,6) 返回 14,说明 FindB函数把每个汉字算两个字节。除操作中的实例外,FindB函数的其它用法与Find函数相同。

  • ?

    查找返回多个数据值新思路,自制多功能查询函数比vlookup更简单

    诗桃

    展开

    转载自百家号作者:Excel函数与VBA实例

    在工作中我们经常会碰到根据某个单一条件去查找对应的数据值,这个时候我们常用的一个万能查询函数那就是vlookup函数,vlookup函数可以实现基本的向左、向右以及多条件值数据查询等功能。但是这个函数有个弊端就是,不能实现返回多个数据值。

    如当我们在查询某个人当天所有门禁刷卡时间或当天人员的所有销售记录时候,从上往下查找只能查找出最上面的第一条数据,无法提取出整天的数据。如果要实现这个功能就需要用辅助操作来实现,会显得比较麻烦。那么今天我们就来讲讲自定义多功能查询函数和vlookup函数分别是如何解决这个问题的。

    方法一、vlookup函数如何查找返回多个数据值

    问题:提取张三7月1日所有刷卡记录

    如上图效果图所示,当我们输入函数=VLOOKUP(ROW(A1),A:D,4,0)往下拖动,张三当天的所有刷卡记录都会显示出来,因为总共只有3条数据,所以第四条结果开始就会出现错误值。

    操作方法:

    第一步:首先用countif函数做一个辅助列,因为单纯的vlookup函数查询是无法返回多个数值的。插入A列,辅助列函数为:COUNTIF(C$2:C2,F$4)。

    注意点:函数COUNTIF函数中C$2:C2,是非常有深意的,用相对引用的方式往下拖动,分别代表的数据区域则为:C$2:C3、C$2:C4、C$2:C5等。这样代表的意思就是可以查找出对应的人出现过多少次。

    第二步:输入函数VLOOKUP(ROW(A1),A:D,4,0)进行数据查询,然后往下拖动即可返回姓名为张三的所有值。

    注意点:vlookup函数第一参数使用ROW(A1)为条件值的目的是,通过对应姓名所在的数值来进行数据查询。比如第一条记录8:38分,选择函数ROW(A1)按F9,返回的是1;第二条记录10:15分,选择函数ROW(A1)按F9,返回的是2,以此类推。效果如下图所示:

    方法二:自定义Mlookup多功能函数查找返回多个数据值

    问题:提取张三7月1日所有销售单号

    如上图效果图所示,输入函数:Nlookup(F4,C:D,2,-1),即可返回张三7月1日销售的所有单号:2018070101,2018070106,2018070111,是不是感觉比vlookup函数更加简单神奇。这需要用到的是VBA代码来自定义一个Nlookup函数。

    操作方法:

    第一步:按alt+f11进入代码编辑窗口,新建一个模块;

    第二步:输入以下代码后,保存为宏文件,即可使用自定义的Nlookup函数,如果你需要修改为其他自己喜欢的函数,可以全部替换即可。

    代码如下:

    Function Nlookup(rg, rgs As Range, L As Integer, M As Integer)

    Dim arr1, ARR2, 列数

    Dim R, n, K, X, cc, sr As String

    arr1 = rg.Value

    ARR2 = rgs

    If VBA.IsArray(arr1) Then

    For Each R In arr1

    If R <> "" Then

    cc = cc & R

    列数 = 列数 + 1

    End If

    Next R

    Else

    cc = arr1

    End If

    If M > 0 Then '非查找最后一个

    For X = 1 To UBound(ARR2)

    sr = ""

    If 列数 > 1 Then

    For q = 1 To 列数

    sr = sr & ARR2(X, q)

    Next q

    Else

    sr = ARR2(X, 1)

    End If

    If sr = cc Then

    K = K + 1

    If K = M Then

    Nlookup = ARR2(X, L)

    Exit Function

    End If

    End If

    Next X

    ElseIf M = -1 Then '查找所有值

    For X = 1 To UBound(ARR2)

    sr = ""

    If 列数 > 1 Then

    For q = 1 To 列数

    sr = sr & ARR2(X, q)

    Next q

    Else

    sr = ARR2(X, 1)

    End If

    If sr = cc Then

    Nlookup = Nlookup & "," & ARR2(X, L)

    End If

    Next X

    Nlookup = Right(Nlookup, Len(Nlookup) - 1)

    Exit Function

    Else '查找最后一个

    For X = UBound(ARR2) To 1 Step -1

    sr = ""

    If 列数 > 1 Then

    For q = 1 To 列数

    sr = sr & ARR2(X, q)

    Next q

    Else

    sr = ARR2(X, 1)

    End If

    If sr = cc Then

    Nlookup = ARR2(X, L)

    Exit Function

    End If

    Next X

    End If

    Nlookup = ""

    End Function

    学习完上面的两种查询多个数据的方法,你现在认为哪一种方法更加简单了?当然这个多功能函数还包含有其他的功能,赶快尝试一下吧。

  • ?

    Excel vlookup筛选两列的重复项与查找两个表格相同数据

    尘小春

    展开

    Vlookup函数可用于多种情况查找,筛选重复数据就是其中之一,它既可筛选两列重复的数据又可查找两个表格相同的数据。筛选两列重复数据时,不仅仅是返回一项重复数据,是把所有重复的都标示出来;查找两表格相同数据时,两个表格既可以位于同一Excel文档,又可分别位于两个Excel文档,并且也可以标示出所有重复的数据;当查找两个位于不同Excel文档中的表格相同数据时,查找范围需要写文档名称和工作簿名称,这样Excel才能找到查找区域。以下是vlookup筛选两列的重复项与查找两个表格相同数据的具体操作方法,实例中操作所用版本均为 Excel 2016。

    一、Excel vlookup筛选两列的重复项

    1、假如要筛选出一个表格中两列相同的数据。选中 D1 单元格,把公式 IFERROR(VLOOKUP(B1,A:A,1,0),"") 复制到 D1,按回车,则返回重复数据 6;把鼠标移到 D1 右下角的单元格填充柄上,按住左键并往下拖,在经过的行中,AB两列有重复数据的都返回重复数据,没有的返回空白;操作过程步骤,如图1所示:

    图1

    2、公式说明

    公式 =IFERROR(VLOOKUP(B1,A:A,1,0),"") 由 IFERROR 和 VLOOKUP 两个函数组成。IFERROR 是错误判断函数,用它来判断 VLOOKUP 执行后,如果返回错误,则显示空(即公式中的 "");如果返回正常值,则什么也不返回,直接显示 VLOOKUP 的返回结果。B1 是 VLOOOKUP 的查找值,A:A 是查找区域,1 是返回第一列的值(即 A 列),0 是精确匹配。

    二、Excel vlookup查找两个表格相同数据

    有两张有重复数据的服装销量表(一张在“excel教程.xlsx”中,另一张在“clothingSales.xlsx”中)(见图2),需要把重复记录找出来,这可以用vlookup函数实现,方法如下:

    图2

    1、在两张表后都添加“辅助”列,用于标示有重复记录的行。把“excel教程”中的“辅助”列用自动填充的方法全部填上 1,操作过程步骤,如图3所示:

    2、切换到 clothingSale.xlsx,在 G2 单元格输入 =IFERROR(VLOOKUP(A2,;选择“视图”选项卡,单击“切换窗口”,选择“excel教程”,则切换到“excel教程”窗口,单击左下角 Sheet6,选择“视图”选项卡,单击“切换窗口”,选择 clothingSales.xlsx,切换回“excel教程”窗口,[excel教程.xlsx]Sheet6! 自动填充到了 A2 的后面,公式已经变为 =IFERROR(VLOOKUP(A2,[excel教程.xlsx]Sheet6!,继续输入 $A2:$G10,7,0),""),则完整公式为 =IFERROR(VLOOKUP(A2,[excel教程.xlsx]Sheet6!$A2:$G10,7,0),""),按回车,则返回 1;把鼠标移到单元格填充柄上,往下拖,则查找出所有重复的记录(有 1 的为重复记录),操作过程步骤,如图4所示:

    3、公式说明

    公式 =IFERROR(VLOOKUP(A2,[excel教程.xlsx]Sheet6!$A2:$G10,7,0),"") 也由 IFERROR 和 VLOOKUP 两个函数组成,IFERROR函数的作用跟上文的“vlookup筛选两列的重复项”一样。VLOOKUP函数的查找值是 A2;查找区域是另一个文档(即[excel教程.xlsx]文档的 Sheet6 工作簿)的 $A2:$G10(即查找表格的每一列每一行),$A2 表示绝对引用 A 列,相对引用“行”,即执行公式时,列不变行变,$G10 与 $A2 是一个意思;返回列号为 7;0 表示精确匹配。

    4、注意

    1、当 clothingSales 文档中的第2行与“excle教程”文档中第9行的“编号”相同时,如图5所示:

    图5

    2、尽管两张表格中的第二行不同,则会返回错误的结果(即返回 1),如图6所示:

    图6

    3、这种情况发生在要查找值(即 A2)所在的列(即 A 列)。由此可知,这种方法只适合查找两个表格对应行相同数据。

excel查找多个匹配值

所有视频需要登录后,才能观看

请先登录您的帐号,即可完整播放,如果您尚未注册帐号,请先点击注册。

img

在线咨询

建站在线咨询

img

微信咨询

扫一扫添加
动力姐姐微信

img
img

TOP