中企动力 > 商学院 > 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中VLOOKUP一对多查找到底怎么做?

    Kay

    展开

    现有学生成绩单一份。

    图:原始数据

    现需要在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数据太多,如何批量、快速的判断并进行统计呢?

    腓特烈西亚

    展开

    excel数据太多,如何批量、快速的判断并进行统计呢?

    举个例子,假如公司需要进行优秀员工数量统计,我们现在有这样一些excel数据:

    我们需要统计的excel数据

    我们现在的要求是,计算excel里完成力、执行力、创新力任意一项大于98,就算优秀员工,有人说,这个不是很简单吗?我们来数一数,张三执完成力96、执行力65、创新力78,不满足,李四完成力73、执行力83、创新力83,不满足,以此类推,当然,数量少是没有问题的,不过要是员工人数几千或者上万呢,我的天呐,要累死人啦!

    那么,excel里有快速的办法吗?有的!

    excel,需要显示优秀员工的单元格输入=IF(OR(B2>=95,C2>=95,D2>=95),"优秀员工",""),向下填充,在需要统计人数的单元格输入=COUNTIF(E2:E9,"优秀员工"),哇,瞬间得到结果,何惧几千上万呢?

    excel瞬间完成的计算

    excel需要的单元格输入函数

    这是什么意思呢?if函数就是假如的意思,or就是或者,意思就是假如引用单元格1大于等于98,或者引用单元格2大于等于98,或者引用单元格3大于等于98,假如有1个条件满足,就是优秀员工,否则的话就为空。

    COUNTIF自然就是计算满足条件的单元格个数啦。

    怎么样,很简单吧,你学会了吗?快去试试吧!非常感谢您观看文本,如果你有更好的方法适用这个情况,请您留言分享!分享好玩、有趣、实用的手机和电脑技巧,您的支持就是我的最大动力!

  • ?

    Excel如何自动挑选出同时满足多个条件的数据

    琼花

    展开

    在进行数据统计时,有时需要挑选出同时满足多个条件的数据。例如在进行三好学生、优秀学生等评选时,有时会需要挑选出各学科考试成绩都大于某个数值的学生,作为参评的条件之一。例如要挑选出各学科成绩都大于80的学生。这时在班级里学生较多的情况下,如果采用逐个查看每个学生各科成绩来进行挑选的方法将会花费一定的时间,还有可能因为马虎而出现疏漏,这样不但影响工作效率,还可能影响最终结果的准确性。这种情况可以考虑用Excel来帮助我们较轻松和准确的完成这个任务,这里以Excel2007为例介绍如何操作,以供参考。

    在Excel中挑选出同时满足多个条件的数据可以考虑采用“AND”函数,其语法为:AND(logical1,logical2, ...),括号内的“logical1,logical2, ...”为各种条件的表达式,如果各种条件的表达式都成立,Excel就会返回“TRUE” 否则返回“FALSE”。

    但如果表格中只显示英文的“TRUE”和“FALSE”,会显得不太美观,也不够明了。这时可以组合使用其他的函数,如“IF”函数,让Excel显示我们自定义的字符。IF”函数的语法为:IF(logical_test,value_if_true,value_if_false),括号中的“Logical_test”为表达式(例如可以用上述的“AND”函数作为表达式),“value_if_true”为表达式结果为TRUE”时Excel返回的结果,“value_if_false”为表达式结果为“FALSE”时Excel返回的结果。

    例如要从下图表格中挑选出各科成绩都大于80的学生:

    例表

    ●统计时可先在表格右侧添加一个显示统计结果的列,然后点击选中该列的列首单元格。

    点击列首单元格

    ●选中单元格后,在编辑栏中输入“=AND(C4>=80,D4>=80,E4>=80,F4>=80)”,其中的C4、D4、E4、F4为该行中的学生各科考试成绩所在的单元格,>=80为判断条件,即要求考试成绩大于等于80分。如果AND后面的括号中各判断条件都成立,即各科成绩都大于等于80分,则Excel会返回“TRUE” 否则如果有一科或者多科成绩不大于等于80,Excel会返回“FALSE”。

    输入公式

    ●输入上述函数公式后,按键盘回车键或者点击编辑栏左侧的对号,该单元格中就会显示出计算结果。

    显示判断结果

    ●再用下拉填充柄或者选择性粘贴公式的方法在该列的其他单元格中快速填充公式,就会显示出所有学生的判断结果,其中结果为“TRUE”的表示该学生的各科成绩都大于等于80,结果为“FALSE”的表示该学生至少有一科成绩不大于等于80。但这种显示结果不太美观和明了,最好再组合IF函数来显示中文或者其他符号的判断结果。

    填充公式后显示判断结果

    ●我们可以把列首单元格中的公式改成=IF(AND(C4>=80,D4>=80,E4>=80,F4>=80),"是","否"),即如果公式"AND(C4>=80,D4>=80,E4>=80,F4>=80)"的判断结果为“TRUE”,则Excel会显示字符“是”;反之如果判断结果为“FALSE”则Excel会显示字符“否”,这样看起来比英文的“TRUE”和“FALSE”要明了一些。

    修改公式

    ●这样再下拉填充或者选择性粘贴公式后,该列其他单元格中就都显示出中文的判断结果了。

    填充公式后显示中文判断结果

    ●我们还可以用对号来表示符合条件,用空白来表示不符合条件。即把上述公式修改为=IF(AND(C4>=80,D4>=80,E4>=80,F4>=80),"√","")。

    修改公式

    ●这样,符合条件的学生就都会显示对号,不符合条件的学生会显示空白,感觉更加一目了然。

    符合条件的学生都显示对号

    上述例子介绍的只是AND函数和IF函数相组合的一种应用方法,熟练掌握这两种函数的用法后,可以给数据统计带来更多的方便。

  • ?

    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,记得点个赞,分享个朋友圈,这样小菜也有更加的动力为大家写文章……

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

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

  • ?

    Excel中如何快速筛选符合多个条件的数据个数

    燕子

    展开

    在数据统计中会经常筛选符合一个条件或多个条件的数据个数,这对数据分析是非常重要的。筛选符合多个条件数据时是通过countifs函数实现的,首先来看下这个函数的语法。

    countifs(criteria_range1,criteria1,criteria_range2,criteria2,…)criteria_range1为第一个需要计算其中满足某个条件的单元格数目的单元格区域(简称条件区域),criteria1为第一个区域中将被计算在内的条件(简称条件),其形式可以为数字、表达式或文本。例如,条件可以表示为48、"48"、">48" 、 "广州" 或 A3;

    同理,criteria_range2为第二个条件区域,criteria2为第二个条件,依次类推。最终结果为多个区域中满足所有条件的单元格个数。

    下面通过实例来具体操作下,一个班级的考试成绩表,分别筛选出各科成绩都不及格的人数及各科成绩都90分以上的人数。

    数据表

    对都不及格的条件进行设置,也就是各科成绩都在60以下,涉及到的数据列从B到I,这些条件满足后就可以了。所以公式也就出来了: =count(B2:B21,"<60",C2:C21,"<60",D2:D21,"<60",E2:E21,"<60",F2:F21,"<60",G2:G21,"<60",H2:H21,"<60",I2:I21,"<60")。

    公式1

    同理都90分以上的人数公式:=COUNTIFS(B2:B21,">90",C2:C21,">90",D2:D21,">90",E2:E21,">90",F2:F21,">90",G2:G21,">90",H2:H21,">90",I2:I21,">90")。

    公式2

    到此需要的数据个数就都有了,这对于数据量的比较大的数据是非常有用的,希望对你有所帮助。

  • ?

    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函数限制,查找多个对应值

    翟焦

    展开

    VLOOKUP函数很神奇,不过并非万能查找函数,比如根据著作查找所有人物。

    直接用VLOOKUP函数进行查找,只能查找到第一个对应的人物,没法查找到全部人物。

    =IFERROR(VLOOKUP($E2,$B:$C,2,0),"")

    究竟该如何突破VLOOKUP函数的限制,让VLOOKUP函数可以查找到全部对应值呢?

    思路:在查找的时候,唯一值才可以查找,著作都不是唯一值,没办法直接查找。如果添加一个辅助列,获取著作+次数,就变成了唯一值,这样就可以突破VLOOKUP函数的局限。

    添加一个辅助列次数,在A2输入公式下拉填充。

    =B2&COUNTIF($B$2:B2,B2)

    区域采用$B$2:B2这种写法,估计很多初学者不理解,卢子这里详细说明一下。

    $B$2加美元$锁定行号和列号,这样下拉的时候,就不会进行任何改变,依然是$B$2,也就是绝对引用。

    B2因为没有加美元$锁定,所以下拉的时候就变成了B3、B4、B5……,这种就叫相对引用。

    一个锁定,一个不锁定,这样下拉的时候,就可以让区域逐渐变大。用COUNTIF函数,就可以依次获取著作的出现次数。

    左边的查找区域原理知道了,现在来看右边如何用VLOOKUP函数查找。

    在F2输入公式下拉和右拉。

    =IFERROR(VLOOKUP($E2&COLUMN(A1),$A:$C,3,0),"")

    现在以红楼梦为例进行说明,红楼梦一共出现3次,也就是红楼梦1、红楼梦2、红楼梦3。

    而E2单元格只是红楼梦缺少次数,数字1、2、3可以通过COLUMN函数获取。A就对应1,B就对应2,依次类推。

    这样用下面的公式就完成了查找。

    =VLOOKUP($E2&COLUMN(A1),$A:$C,3,0)

    不过这样直接查找,没有对应值会显示错误值,不太美观,因此嵌套一个IFERROR函数,让错误值显示空白。

    到此,就解释完毕了。其实,要学好函数,思路真的很重要。

  • ?

    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 列)。由此可知,这种方法只适合查找两个表格对应行相同数据。

  • ?

    查找返回多个数据值新思路,自制多功能查询函数比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查找多个数据

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

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

img

在线咨询

建站在线咨询

img

微信咨询

扫一扫添加
动力姐姐微信

img
img

TOP