与EXCEL打交道也好几年了,你是不是还停留在经常性简单而重复的工作呢?每月忙的时候天天加班,空闲的时候盯着手机刷刷刷,,既然如此,轻松的时候就应该琢磨下怎样提升效率,比如规范好自己的数据源,设计一套模板,直接更换数据源就能出来你想要的很多报表……
这样你可能就不会加那么多班了。好了,看看下面几位群友的问题,希望能对各位有所启发!
1、查询员工1-12月的工资
先给大家展示下效果,具体界面自己去美化,我们只讲怎么实现这个功能:

为了演示方便,我对数据进行了简化,群友的表是12个月的工资都有。
如果每个月的工资格式都相同,那就很好办,只要根据名字和月份在对应的表中查询就可以了。
D4中公式:
=VLOOKUP($A$4,'1月'!$B:$J,3,0)
以上公式在往后拉的时候,第三个参数返回的列序号,你是一个个手工改的吗?肯定有人是,那有没有什么办法可以不用手工改呢?
D4至J4公式中第三个参数对应的是3-9,所以我们用返回列号的函数column(C1)—column(j1)直接表达
所以公式可以修改成:
=VLOOKUP($A$4,'1月'!$B:$J,column(C1),0),这样直接往后拉就不需要手工去修改第三个参数了。
但是往下拉时第二个参数都是'1月'!$B:$J(大家注意引用其他表中数据时的表达方式)我们需要往下拉时X月也能跟着改变,怎么办呢?其实只需要让1变成2,3,4,……就可以了,那我们可以用返回行数的函数row来表达:
=row(A1)&"月!B:J"
函数返回来{"1月!B:J"},这是个字符串,我们需要把他转换成引用,所以用indirect函数
=indirect(row(A1)&"月!B:J")
终于OK了,整合公式得到:
=VLOOKUP($A$4,INDIRECT(ROW(A1)&"月!B:J"),COLUMN(C1),0)
直接向右向下就可以了!
上面的两步套路在别的嵌套中经常使用,所以要彻底领悟。
下拉列表效果的实现非常简单,利用数据验证(以前版本就数据有效性)

但这位群友跟我说二月份的工资里多了一列扣款,所以总表就按照2月的格式,1、3月份没这项可以空着,如果我们继续用VL公式,往后拉公式就会出现对应列序号的错乱。

比如一月的数据实际工资应返回第9列,而2月里因为多了一列所以应该返回第10列,这时我们该怎么办呢?
公式(由群友咫尺天涯提供,谢谢!):=iferror(VLOOKUP($A$4,INDIRECT(ROW(A1)&"月!B:k"),MATCH(D$3,INDIRECT(ROW(A1)&"月!B2:k2"),0)),"")
用match函数返回统计表中的列字段和每个月明细表列字段去匹配后的相对位置来表达应该返回的列序号,这样比如2月份对应的实际工资相对姓名在第10列,那就返回第10列。思路挺好,大家仔细体会!强调一点,统计表中的列字段一定要囊括工资表的所有列字段,这样数据才能全部查找过来。
2、在多表中查询信息
上面例子中的查询说白了还不叫多表查询,毕竟1月的数据对应在1月的工资表中,而下面这个,姓名有可能存在与一办、二办、三办任意一个办事处中,这种情况该如何查询呢?

如果我们知道姓名存在于哪个办事处的话,那直接用VLookup公式就可以了。
思路一:
在不知道姓名存在哪个办事处的情况下,我们就用iferror函数:
如果在一办,那就到一般去查,否则在嵌套iferror,如果在二办就到二办查,否则就在三办查。
C4中公式如下:
=IFERROR(VLOOKUP($A$4,一办!$A:$H,2,0),IFERROR(VLOOKUP($A$4,二办!$A:$H,2,0),VLOOKUP($A$4,三办!$A:$H,2,0)))
规规矩矩的公式,只要逻辑清楚,在嵌套几个也没问题,就是长了点,!
思路二:
如果我们能把姓名找出来是在哪个表中,就直接用vlookup就可以了。
统计总表中的姓名在分表中出现的次数就知道姓名在哪个办事处了。如果统计结果是0,说明该姓名不在此表中,否则就是在。
=COUNTIF(INDIRECT({"一办";"二办";"三办"}&"!A:A"),总表!A4)
(与第一个例子中引用各月的工作表时的方法有异曲同工之处,这就是为什么要大家必须掌握的原因)
然后用lookup找出姓名到底在哪个办事处
=LOOKUP(1,0/COUNTIF(INDIRECT({"一办";"二办";"三办"}&"!A:A"),总表!A4),{"一办";"二办";"三办"}&"!A:h")
经典的LOOKUP的用法
最后用vlookup直接查找
=VLOOKUP($A$4,INDIRECT(LOOKUP(1,0/COUNTIF(INDIRECT({"一办";"二办";"三办"}&"!A:A"),$A$4),{"一办";"二办";"三办"}&"!A:h")),COLUMN(G1),0)
转自:米宏Office