Excel函数:匹配项不同时如何用vlookup怎么用两个条件进行匹配查找所需列?

excel在之前的七篇文章中,我已经对函数vlookup的用法进行了深入浅出的讲解,相信看过的朋友们一定对函数vlookup的用法已经烂熟于心,今天我们还将继续以函数vlookup的基本用法为基础,但是讲解的案例将更加有深度。在上一篇中,我将函数vlookup与函数match、index组合函数进行了对比,发先函数vlookup用法在查找匹配方面有一定的限制,而函数match、index组合函数的应用更具灵活性(对于函数match和函数index的基本操作方法感兴趣的朋友可以看完该篇文章之后参考文章当函数vlookup无能为力时,函数match和index未尝不是更好的选择)上述七篇文章中的案例都有共同点,基于某列数据运用函数vlookup去寻找另一列数据,总而言之,都是去匹配单列数据。现在我们试想一下,如果现在给了我们一列数据,但是却让我们去匹配多列数据,我们该怎样解决这样的问题呢?上述问题就是我们今天要讲解的实例,所以接下来我们就直接进入实例讲解阶段。实例:我们现在有这样一个excel工作表,里面包含两张表。第一张表是一个数据源表,里面包括了客户ID、公司名称、联系人姓名、地址和联系人头衔五项内容,并附有相关的数据,第二张表的内容有四项,分别是客户ID、公司名称、联系人姓名和地址,其中客户ID为已知内容,而公司名称、联系人姓名和地址为未知内容,现在我们的任务就是根据第一张表中的数据源和第二张表的客户ID,运用函数vlookup将公司名称、联系人姓名和地址这三项匹配出来。excel工作表具体如下所示:实例图片在这里,我给大家推荐两种方法来解决这样的问题。方法一:分别在H2单元格,I2单元格和J2单元格中,也能用函数vlookup得出相应的结果,然后运用填充柄的拖拽功能得到所有要进行匹配的单元格。具体操作方法如下:首先我们在H2单元格,I2单元格和J2单元格中依次输入“=VLOOKUP(G2,$A$1:$E$16,2,0)”、“=VLOOKUP(G2,$A$1:$E$16,3,0)”、“=VLOOKUP(G2,$A$1:$E$16,4,0)”,然后我们按回车键,就能分别得到客户ID为“BERGS”所对应的公司名称、联系人姓名和地址,接着我们选中H2单元格,I2单元格和J2单元格,然后通过填充柄拖拽的方式向下拖拽,我们就能到其他客户ID所对应的公司名称、联系人姓名和地址。具体操作可参考下图:实例图片方法评价:上述方法将函数vlookup的基本用法与填充柄的拖拽功能结合,解决了现有问题,但是却还是有很大的局限性。试想一下,这里我们要匹配三项数据,结果我们写了三个公式,如果匹配100项数据,恐怕我们没耐心再写100个公式了。所以我们接下来还是看看更为便利的方法二吧!方法二:这里我们只需要在H2单元格填上合适的函数式,然后使用填充柄向左、向下拖拽,这样就能得出所有的结果了。但是在这过程中我们会遭遇两大难题:怎样对第一参数进行混合引用?怎样确定第三参数?接下来我们边做表解决问题。首先,我们将H2单元格的答案做出来。在H2单元格输入“=VLOOKUP(G2,$A$1:$E$16,2,0)”,然后回车键即可。这时我们按照以往的经验,我们知道接下来如果向下拖拽,结果仍然不会出错,所以关键问题在于怎样保证向左拖拽也不会出错。我们选中H2单元格,向左拖动一格,看看结果是什么?实例图片结果为#NA,具体函数式是“=VLOOKUP(H2,$A$1:$E$16,2,0)”,从这个函数式,我们可以看出两点错误,首先第一参数应该是“G2”,而不是“H2”,其次第三参数应该是“3”,而不是“2”。首先我们来解决第一参数带来的问题,可能有人会说改成$G$2(绝对引用)即可,这样做确实解决了向左拖拽带来的问题,但是也会导致向下拖拽时出错,所以这里要运用到混合引用来解决问题,将“G2”改写成“$G2”,将列锁定即可。现在我们来结果第二个问题,怎样让第三参数也随着填充柄的拖拽而不断变化呢?我们从函数式“=VLOOKUP(H2,$A$1:$E$16,2,0)”中可以看出在函数vlookup光填入数字的话,是不会随着填充柄的拖拽而不断变化的,所以还是要借助函数的功能。excel这里我推荐使用函数column,其基本语法形式是COLUMN(reference),具体我们可以看以下三个例子:“=COLUMN()”会得到公式所在的列;“=COLUMN(A10)”会得到结果“1”,因为A列是第一列;“=COLUMN(C3:D10)”会得到引用中的第一列的列号,即“3”。这里我们要运用的是“=COLUMN()”。这里我们在H2单元格输入“=COLUMN()”时,会得到“8”,因为H列是第八列,但是这里的第三参数应该是“2”,所以第三参数的具体形式应该是“=COLUMN()-6”,这时要填入H2单元格的函数式也就变为”=VLOOKUP($G2,$A$1:$E$16,COLUMN()-6,0)“。当向左拖拽时,第一参数G2不变,第三参数”COLUMN()-6“随之递增;当向下拖拽时,第一参数随之相应的改变,第三参数”COLUMN()-6“不变,这样的函数式就满足所有的要求了。具体做法整理:首先我们在H2单元格输入“=VLOOKUP($G2,$A$1:$E$16,COLUMN()-6,0)”,然后我们按回车键,就能分别得到客户ID为“BERGS”所对应的公司名称,接着我们选中H2单元格向左拖拽,就能得到客户ID为“BERGS”所对应联系人姓名和地址。最后我们选中H2单元格,I2单元格和J2单元格,然后通过填充柄拖拽的方式向下拖拽,我们就能到其他客户ID所对应的公司名称、联系人姓名和地址。具体操作可参考下图:实例图片总结:1.首先我们要非常熟练使用函数vlookup的的基本操作方法,这里大家感兴趣可以参考文章万千数据迷人眼,函数vlookup助你来挑选!2.excel中单元格内容的相对引用、绝对引用和混合引用问题一定分清楚,可以参考文章excel关于绝对引用和混合引用的巧妙使用3.要对函数column的基本用法有所了解。今天的分享到此结束,感兴趣的朋友可以点赞关注哦!}

办公应用软件
发表时间:2018-03-10
154人浏览  if函数是工作中常用的excel函数之一,下面厚学网整理了一些关于办公应用中excel中的if函数及一些公式的使用。  一、if函数  作用:根据条件进行判断并返回不同的值。  示例:  1、如果a1单元格值大于100,显示“完成”,否则显示“未完成”  =if(a1>100,"完成","未完成")  2、判断成绩  =if(a1  3、如果a1的值大于60并且b1不为空,显示“已结束”否则显示“未结束”  =if(and(a1>60,b1  二、iferror函数  作用:把错误值显示为指 定的内容  示例:  1、如果a1/b1返回错误值,则显示空  =iferror(a1/b1,"")  2、如果vlookup查找不到值,则显示空  =iferror(vlookup(省略),"")  三、countif函数  作用:根据条件统计个数  示例:  1、计算a列有多少财务部的人员  =countif(a:a,"财务部")  2、计算a列有多少个包括“北京”的公司名称  =countif(a:a,"*北京*)  四、sumif函数  作用:根据条件求和  1、统计c列大于1000的销售金额之和  =sumif(c:c,">1000")  2、统计a列产品为“三星”所对应b列的销售个数  =sumif(a:a,"三星",b:b)  五、countifs函数  作用:多条件计数  示例:  1、公司1的人事部有多少人(a列公司名称,b列部门名称)  =countifs(a2:a11,"公司1",b2:b11,"人事部")  2、工资在3000~4000之间的有多少人(d列为工资)  =countifs(d2:d11,">3000",d2:d11,"  六、sumifs函数  作用:多条件求和  示例:  1、公司1人事部工资和(a列公司名称,b列部门名称。d列工资)  =sumifs(d2:d11,a2:a11,"公司1",b2:b11,"人事部")  2、a列为"电视",b列包括34的c列数量之和  =sumifs(c:c,a:a,"电视",b:b,"*34*")  七、averageif函数  作用:根据条件计算平均数  示例:  1、计算c列单价小于10的平均单价。  =averageif(c:c,"  2、计算c产品的平均单价(a列为产品名称)  =averageif(a:a,"c",b:b)  八、averageifs函数  作用:多条件计算平均值  示例:  1、计算甲公司,经理级的平均工资(a列公司名,b列职称,c列工资金额)  =averageifs(d2:d11,a2:a11,"甲公司",b2:b11,"经理")  2、统计工资在4000~8000之间的平均工资  =averageifs(d2:d11,d2:d11,">4000",d2:d11,"个性定制课程}
为了回答这个问题,我将本人新出版的《“偷懒”的技术:打造财务Excel达人》第一章使用Excel的理念心法的内容,结合搜集到的资料,补充完善,修订成本答案,尽量体系化、学术化,希望对你有帮助。当表格的计算效率较低时,可考虑从以下方面进行优化:一、首先要合理设计数据的布局,这是计算效率得到保障的前提由于Excel引用访问本工作表、不同工作簿或工作表数据的速度是有区别的,通常计算指向其他工作表的引用比计算工作表内的引用速度要慢。当数据计算量较大时,就必须考虑数据的整体布局:数据是分工作簿保存、分工作表保存,还是保存在同一工作表。基于整体性原则,如果是清单型数据表格,可能的话,尽量将数据整合同一工作表,至少尽量在同一工作簿。如果不能整合在同一工作簿,宁愿使用少量的大型工作簿,也不要使用数量较多的小型工作簿。尽可能地避免工作簿间的链接,对外部工作簿进行链接,既影响表格的打开速度,并且当工作簿移动或删除时,还容易出现断链,不易于查找和修复。二、不可避免引用其他工作簿时的提速技巧对关闭的工作簿尽量使用简单的直接单元格引用。这样做可以避免在重新计算任何工作簿时重新计算所有链接的工作簿。如果不能避免使用链接的工作簿,最好将它们全部打开而不是关闭,并且表格打开顺序也有讲究,要首先打开要链接到的工作簿,然后再打开包含链接的工作簿。一般来说,从打开的工作簿比从关闭的工作簿中读取链接的速度要快。进一步提速的“断舍离”大法:断:数据量大的表格,应将已经计算出结果且不会再更新的单元格的公式计算结果采用选择性粘贴方式转化为数值,以减少计算量;舍:尽量不要大范围使用计算量大的功能或公式。比如:尽管条件格式和数据有效性的功能非常强大,数组公式运算功能也非常强大,但是,大量使用它们会明显降低计算速度,除非你愿意忍受蜗牛般的运算速度,否则,不要大范围使用数据有效性、条件格式和数组公式;离:如果某张工作表需要进行大量运算,且其他工作表对它的引用较少,可考虑将其移出本工作簿。以免每次重新计算时,影响工作簿的整体计算速度。三、原始数据要规范原始数据一定的规范,否则,还要使用函数公式清洗不规范的数据,徒增中间环节,影响计算速度。比如数据的来源不是手工输入,而是从其他系统导出,导出的数据可能并不规范,比如数字是文本格式、数字后有空格、不可见字符,这些数据就没法直接参与运算,如果不手工整理成规范数据,还得用函数公式进行规避,这就大大影响计算速度。四、要关注公式函数的计算效率,尽量使用效率高的函数,或使用其他功能代替1.非必要的情况下,不使用可变函数(易失性函数)。Excel的可变函数有:RAND、NOW、TODAY、OFFSET、CELL、INDIRECT 和 INFO。可变函数有个特点,当数值发生变化时,每次都要重新计算,因而会影响表格的计算性能。比如,我们常用的下面的公式来定义动态区域:=OFFSET(Sheet1!$A$1,0,0,UNTA(Sheet1!$A:$A),1)它的好处是:会自动扩展以包含新条目,但表格的计算性能会降低,这是因为 OFFSET 是可变函数,并且由于 OFFSET 中的 UNTA 函数必须检查很多行,计算效率较低。一般情况下,我们可以使用Excel的表格功能来代替动态区域(Excel 2003中称为列表)。2.使用其他行和列计算并存储中间结果一次,以便在其他公式中重复使用它们。并且,如前所述,尽可能引用其他单元格已有的计算结果,这样可提高运算效率。在C2单元格输入公式:=SUM($A$2:$A2)然后向下填充公式到 C2000。如上图。B列的公式是上一累加结果加上本行数字。B列的公式是引用了上一行单元格的计算结果,B列公式比C列公式单元格引用总数减少了 500 倍,计算量大大减少。3.减少每个公式中的引用数,最大程度地减少函数中的引用单元格范围。尽管在 Excel 2007以后的版本中,数组公式可以处理整列引用,但是这会强制计算列中的所有单元格,包括空单元格。这样会使表格计算起来很缓慢。4.尽可能使用最有效的函数(一般情况下自定义函数慢于 Excel 中的内置函数),编制适当的公式,尽可能减少公式的计算次数=IF(ISERROR(VLOOKUP(“龙逸凡”,$A$2:$C$1000,3,0)),“查无此人”, VLOOKUP(“龙逸凡”,$A$2:$C$1000,3,0))如果表格A2:A1000中有“龙逸凡”, 使用上面这个公式,则 Excel 要运算VLOOKUP函数两次。Excel 2007以后的版本中,可以使用 IFERROR 来减少运算的次数:=IFERROR(VLOOKUP(“龙逸凡”,$A$2:$C$1000,3,0),“ 查无此人”)五、非必要的情况下不使用会触发重新计算的操作以下操作会触发重新计算:1.在自动模式下单:击行或列分隔符。2.在工作表中插入或删除行、列或单元格。3.添加、更改或删除已定义名称。4.在自动模式下重命名工作表或更改工作表位置。5.在表格中使用筛选、隐藏或取消隐藏行。6.在自动模式下打开工作簿。如果工作簿上次由不同版本的 Excel 计算,则打开工作簿通常导致完整计算。7.选中了“保存前自动重算”选项的情况下在手动模式下保存工作簿。六、可能的情况下先对数据进行排序,再使用查找引用。尽可能避免对未排序数据执行查找,因为速度很慢1.如果使用完全匹配选项,则函数的计算时间与找到匹配项之前扫描的单元格数成比例。对于在较大区域内执行的查找,此时间可能非常长。对排序数据使用 VLOOKUP、HLOOKUP 和MATCH 的近似匹配选项的查找时间很短,并且不会根据所查找的区域长度显著增加。2.因为完全匹配查找可能很慢,所以应该考虑使用以下可以提高性能的方法:使用一张工作表。使查找和数据位于同一工作表中运行速度更快。如果可以,请首先对数据进行排序,并使用近似匹配。如果必须使用完全匹配查找,请将要扫描的单元格区域限制在最小范围内。使用动态区域名称或表格(列表)功能,而不是引用大量行或列。七、做到了前面四点,表格的运算速度还是很慢时,将Excel的计算模式改为手动计算,在需要时再重新计算在手动计算模式下,可以通过按 【F9】触发智能重新计算。使用 【Shift+F9】 仅重新计算所选工作表,按【Ctrl+Alt+F9】强制对所有公式执行完整计算,也可以通过按 【Ctrl+Shift+ Alt+F9】 强制彻底重新构建依赖项和执行完整计算。F9计算所有打开的工作簿中的所有工作表。按 Shift+F9 可计算活动工作表。按 Ctrl+Alt+F9 可计算所有打开的工作簿中的所有工作表,不管它们自上次计算以来是否已更改。如果按Ctrl+Alt+Shift+F9,则会重新检查相关公式,然后计算所有打开的工作簿中的所有单元格,其中包括未标记为需要计算的单元格。}

我要回帖

更多关于 vlookup怎么用两个条件进行匹配 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信