详解Excel中最常用的查找公式Vlookup及Sumifs_sumifs和vlookup合起来设公式-程序员宅基地

技术标签: 数据分析  

序言

使用Excel做数据分析工作已经快10年了,因为经常要处理几十甚是上百万行的数据,所以常常要用到查找和定位的公式。而平时用的最多的就是两个,也就是,Vlookup以及Sumifs,单独用,搭配着用都有。基本上一套复杂的项目成本核算方案,用这两个公式为主体就能搭建出来。这里呢就和大家分享一下这两个公式的使用技巧,注意事项等等,零零碎碎说的比较多,大家就耐心看吧。

正文

Vlookup以及Sumifs的基础功能相信大家都清楚,这里为了文章的完整性就简单的说一下。

一、VLOOKUP

vlookup,是针对数值的单条件(使用数组可以实现多条件,本文就不展开了)查询;可以根据提供的条件,在指定的区域中返回要查找的值。

有两个功能相近的公式,hlookup和lookup,区别就是:

vlookup是在垂直方向查找(v代表vertical);

hlookup是在水平方向查找(h代表horizontal);

xlookup不预设查找方向,比vlookup和hlookup功能更加强大。

这样说可能不太直观,我们来举个栗子,如果我们有如下的数据:

                                                                                图1

如果我们的条件是姓名,根据姓名,查找成绩,那就是从左往右查(姓名列在左边,成绩列在右边),这样我们要用的就是vlookup,垂直方向查找。

如果我们的数据是这样的:

                                                                                  图2

条件还是姓名,那我们就要用hlookup,水平查找。

至于xlookup就强大了,xlookup可以替代vlookup和hlookup;也就是说vlookup和hlookup能做的,xlookup都能做,反过来则不行。

那为什么反而是vlookup使用的最多呢,道理也很简单,那就是“合适”。这就像找另一半,没有最好的,只有最合适的。

大家想一想,图1的格式比较多见还是图2的格式比较多见?做过数据处理或者接触过数据库的同学肯定知道,必然是图1。所以hlookup的使用频率自然就不高了,而xlookup理解起来更难一点,那么自然而然vlookup就用的多了。如果大家关注一些讲Excel使用技巧或者Excel培训机构的公众号,就可能看到这种标题:

“你还在用VLOOKUP么,有一个公式比它强百倍!!!”

点击去,就会发现基本上都是介绍xlookup的,公式写的花里胡哨,一长串。还是那句话没有最好的,只有最合适的。不过要是大家感兴趣后面可以做一期专门介绍xlookup的,毕竟微软自己都说xlookup是vlookup的改进版。

跑题了,我们言归正传,vlookup有四个参数,lookup_value,table_array,cal_index_num,以及range_lookup,含义分别是:

lookup_value:查找的条件

table_array:查找的范围

cal_index_num:要查找的列相对查找条件所在列的距离(列数)

range_lookup:模糊查找还是精确查找

我们用图1的数据来具体的写一下:

                                                                              图3

公式很简单,就是在a1-b17这个范围内查找“张三”所在的列(a列)后面一列(参数2)的值,这个公式如果写成:

=VLOOKUP("张三",A2:D17,2,0)

结果也是一样的,虽然后面这个公式里面我们的查找范围扩大到了d列,但是因为第三个参数依旧是2,因此查找的还是第一列后面一列的值。如果我们把第三个参数从2改成3,那么图3里面的公式会报错,因为查找的范围只有两列,而后面一个公式则会返回"数学"。

当然像上面一样的公式在现实工作环境中是毫无意义的,那我们就把数据弄得复杂一点,先看数据:

                                                                                  图4

假如某个学生一个学年的综合得分的算法如下:

综合得分=(学科1得分*学科1权重+学科2*学科2权重)*0.5*MAX(奖项权重1,奖项权重2)

 

那我们该怎么算第一学年,每个学生的综合得分呢?

这里就要用到vlookup了,我们可以把学科权重lookup到D列后面。这里提醒各位,在做之前记得一定一定要备份一遍原文件,在备份文件里面做修改。

让我们来看公式:

这里涉及到的自动填充方面的知识这边就展开讲了。把权重lookup过来,然后我们就可以写公式计算了。但是到了这一步我们不去计算,来讲一下vlookup的进阶应用。先看一下修改后的数据:

现在的数据中,不同的学年学科的权重不同,这时候如果我们要用vlookup,而且要只写一遍公式的话就要想点办法了。只用vlookup肯定不行,因为现在的查询条件有两个,一个是学科,还有一个是学年。那这里我们就要用到另一个定位函数match,这个函数的作用简单来说就是返回要查找的值在一个数组中的位置。我们想要达到的目的就是在查到一年级的时候vlookup的第三个参数是2,查到二年级的时候第三个参数变为3。所以macth正合适,公式也比较简单,如下:

=VLOOKUP(C2,$G$9:$I$11,MATCH(D2,$G$9:$I$9,0),0)

这样呢我们就实现了写一遍公式就完成把两个学年不同的权重添加到e列。

vlookup和match是绝配,大家可以自己多多操练一下。

二、SUMIFS

sumifs的基础功能呢我们也简单介绍一下。

这个函数的功能是条件求和,比如上面的数据里面,如果我要求张三第一学年语文数学的成绩合计,我们就可以用

sumifs最起码要有三个参数,也就是:

sum_range:要求和的目标所在的列或范围

criteria_range1:第一个条件所在的列或范围

criteria1:第一个条件

然后还可以接着写第二个条件,第三个条件。。。。。

和sumifs相关的函数还有,sumif,averageifs,maxif等等,很多

那为啥一个条件求和的公式会被用来作为查找定位?

首先excel大部分情况下处理的都是数字,其次条件多了,结果就唯一了。

还是比如上面的用vlookup查找张三成绩的语句:

=VLOOKUP("张三",A2:D17,2,0)

这个语句会在找到第一个符合条件的结果后就中止并返回结果,也就是说我们最终得到的是张三在一年级是的数学成绩,如果用sumifs来写的话:

=SUMIFS($B$2:$B$19,$A$2:$A$19,"张三")

这样得到的结果和vlookup是不一样的,得到的是张三所有的成绩的和,如果要达到和上面的vlookup一样的效果我们就需要添加条件:

=SUMIFS($B$2:$B$19,$A$2:$A$19,"张三",$C$2:$C$19,"数学",$D$2:$D$19,"一年级")

这样得到的就是和vlookup一样的结果了。

大家别看好像sumifs写的更复杂,实际应用中要的就是sumifs的效果;vlookup碰到第一个符合的就中止了,结果无法预期,这是个很大的问题。

和sumifs搭配的比较多的是vlookup,index等,比如上面的数据,我们要求第一学年各个同学的综合得分,这就需要vlookup和sumifs搭配使用,我们来看结果:

大家可以看到,加了两个辅助列,这两个辅助列都是使用了vlookup,最终的计算用的是sumifs,搭配了maxifs;当然这个例子里面实际maxifs没有啥作用,完全可以用vlookup替代,但我们要严谨。

三、注意点

用vlookup和sumifs的时候大家特别要注意自动填充的锁定,实际工作中公式不止要能下拉,还需要能向右拉。举个例子,我们来修改一下数据,如果没有奖项权重,没有学科权重,只是求每个学院每个学年的平均得分(也就是说两个学科权重一样),那我们就可以这样做:

=SUMIFS($B$2:$B$19,$A$2:$A$19,$L3,$D$2:$D$19,M$2)/2

这个公式里面有3种锁定方式,全锁,下锁和右锁,大家可以自己理解消化一下。

然后还有两个至关重要的注意点,

一个是vlookup找不到会报错,sumifs找不到会返回0,所以如果你看到sumifs写好之后是0的话要谨慎一点;需要确认一下到底是原始数据就是0还是你写的条件不对。

还有一个就是用sumifs一定要注意原始数据有没有重复值,或者你给的条件够不够。

这里给大家说一个我实际经历过的惨痛教训。楼主当时给一个单位做成本核算,每个月甲方爸爸都会把当月的成本数据给到楼主,楼主呢会简单的整理好后导入到核算模板中,出了结果反馈给甲方,甲方呢用这个成本来做预算和绩效。话说有一个月,公司给楼主塞了个刚培训完的小白,楼主就让他/她做成本的前期清洗汇总。没成想甲方爸爸那边对接人也换成了个小白,给到公司的成本数据中有部分数据是两个月的。然后楼主手下的这位小白同学看都没看,还是用sumifs,而且条件中没限定日期,因为以前给的都是一个月的,不需要。再然后呢,我也是傻乎乎的没有检查小白的作业直接把结果算出来给到了甲方爸爸。而甲方爸爸也没有仔细看,就用这个错误的成本数据给各个部门核定了当月的考核得分,绩效发放总额等等。然后,就没有然后了,一地鸡毛。幸亏楼主平时舔甲方爸爸比较给力,甲方爸爸的总会出面平息的一场风波。

所以,再次提醒大家,看数据很重要,不要一上来就咔咔的写公式,先看数据,找规则

好了这次就讲这么多吧,其实还有很多没有讲,后面有时间再说吧,希望本文能给大家带来点什么吧

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/m0_73209313/article/details/127301963

智能推荐

ubuntu 18.04 python3安装 版本更换 指定python版本运行脚本 anaconda3冲突_把/usr/bin/python和/usr/bin/python3链接到anaconda/bin-程序员宅基地

文章浏览阅读1.7k次。一、python3安装sudo apt install python3二、版本更换1查询已安装的python版本ls /usr/bin/python*显示在update-alternatives中有的python版本sudo update-alternatives --list python添加python版本到update-alternatives中,后面的数字越高优先级越高..._把/usr/bin/python和/usr/bin/python3链接到anaconda/bin

一起学ORBSLAM2(5)ORBSLAM的单目视觉处理方式_orbslam的单目尺度-程序员宅基地

文章浏览阅读6.4k次,点赞2次,收藏38次。单目相机由于深度是未知的,因此我们需要对其进行初始化,在ORB-SLAM中将其用单独的类来表示,并将它写成单独的文件initializer.cc,注意单目相机即使在进行初始化之后,仍然存在尺度问题,初始化将第一帧的位移作为单位长度,后面的深度和位移都是依据这一标准进行的,所以尺度问题是单目slam的理论缺点。单目slam初始化需要两帧进行,第一帧作为参考初始化帧,第二帧作为当前帧。在第一帧来临时建..._orbslam的单目尺度

IK-Analyzer的maven项目依赖_ikanalyzer依赖-程序员宅基地

文章浏览阅读3.5k次。Java中文分词包——IK-Analyzer的maven项目依赖 <dependency> <groupId>com.janeluo</groupId> <artifactId>ikanalyzer</artifactId> <version>2012_u6</version&..._ikanalyzer依赖

pytest+selenium自动化测试知识汇总_selenium+pytest自动化-程序员宅基地

文章浏览阅读771次。pytest+selenium自动化测试知识汇总_selenium+pytest自动化

HTML基础 - HTML表格-程序员宅基地

文章浏览阅读1.8w次,点赞30次,收藏176次。HTML基础 - HTML表格1.无表头的表格 <table> <tr> <td><table>标签代表的是表<tr>标签代表的是行<td>标签代表的是列在html页面中的表格来着,就和excl的表格不一样喽,咱自己有自己的规则:这就是没有表头,也就是最简单的一个表格。(设置了边框为1 :border= “1”)2.有表头的表格 <th><th>表示就是表头了哦,字体是加粗居中显示的_html表格

javascript:void() 是什么意思-程序员宅基地

文章浏览阅读3.1k次,点赞3次,收藏2次。`javascript:void(0)` 中的 `void` 是 JavaScript 中的一个操作符,这个操作符指定要计算一个表达式但是不返回值。`void(0)` 表示在 JavaScript 上没有任何效果。_javascript:void()

随便推点

PTA部分数据结构代码_pta数据结构勇闯冰火岛代码-程序员宅基地

文章浏览阅读848次。大二下学期数据结构练习代码重排链表一元多项式的乘法与加法运算最长连续递增子序列后缀式求值银行业务队列简单模拟求解迷宫从入口到出口的路径汉诺塔的非递归实现N皇后问题表达式转换堆栈模拟队列奥运排行榜PAT排名汇总抢红包寻找大富翁插入排序还是归并排序根据后序和中序遍历输出先序遍历树的遍历列出叶结点列出所有祖先结点是否同一棵二叉搜索树树种统计二叉搜索树的最近公共祖先朋友圈秀恩爱分得快文件传输图着色问题拯救007列出连通集哈利·波特的考试旅游规划镖局运镖公路村村通重排链表#include <iostre_pta数据结构勇闯冰火岛代码

2D/3D人体姿态估计 (2D/3D Human Pose Estimation)_3d人体姿态估计和2d姿态估计的区别-程序员宅基地

文章浏览阅读1.5w次,点赞25次,收藏153次。1. 基本概念2. 发展现状_3d人体姿态估计和2d姿态估计的区别

antd表格固定后出现,对不齐的现象,解决方案_antd表格固定列滚动不一致-程序员宅基地

文章浏览阅读8.8k次。问题描述:antd表格固定后出现对不齐的现象,比如设置了fixed。如下图这个是官方的bug,在后续版本修复了在3.26.1里修复了。antd表格固定列对不齐现象https://github.com/ant-design/ant-design/issues/19952解决方案:1.升级版本(方案一)但对于老项目,升级成本高或者暂时无法升级的就只能用样式强行控制了2.样式控制(方案二) (1).github 上antd issues 19952给了一个方案..._antd表格固定列滚动不一致

php7.3安装pdo_mysql,mongodb,redis扩展_pdo_mysql运行库文件-程序员宅基地

文章浏览阅读560次。在Dynamic Extensions注释下方添加pdo_mysql.so路径具体路径看安装情况致命错误:ext/mysqlnd/mysql_float_to_double.h:没有那个文件或目录解决将报错文件路径补全vi 报错的.c文件修改为然后重新编译。_pdo_mysql运行库文件

Nginx配置文件(nginx.conf)配置详解_nginx conf.d只生效一份-程序员宅基地

文章浏览阅读407次。转发地址:https://blog.csdn.net/tjcyjd/article/details/50695922Nginx的配置文件nginx.conf配置详解如下:user nginx nginx ;Nginx用户及组:用户 组。window下不指定worker_processes 8;工作进程:数目。根据硬件调整,通常等于CPU数量或者2倍于CPU。error_log logs/error.log;error_nginx conf.d只生效一份

GB2312简体中文编码表(转)_∨…“黝r。… 一。::;√:…犬:…::…::…。丶、:\决辽弋义:…-程序员宅基地

文章浏览阅读2.3w次,点赞6次,收藏36次。GB2312简体中文编码表GB2312编码是第一个汉字编码国家标准,由中国国家标准总局1980年发布,1981年5月1日开始使用。GB2312编码共收录汉字6763个,其中一级汉字3755个,二级汉字3008个。同时,GB2312编码收录了包括拉丁字母、希腊字母、日文平假名及片假名字母、俄语西里尔字母在内的682个全角字符。分区表示GB2312编码范围:A1A1-FEFE,其中汉字编码..._∨…“黝r。… 一。::;√:…犬:…::…::…。丶、:\决辽弋义:…

推荐文章

热门文章

相关标签