Excel根据需求查找并填充值以及Vlookup的一些注意点
要求
和行政部门坐在一起一般来说都会有许多怪怪的Excel问题问过来,今天人事的同事又来问了我一个Excel的问题:
如何让数据透视表里面显示值而不是统计数?
当时我就莫名了…问了问到底要什么,原来是同事做了张表,里面有一些信息,然后要做一张统计表把存在的填进去,不存在的就空着。
原始表的样子(大致的,当然是胡诌的数据)
要做出来的样子
数据透视表是这样的
解决方法
首先用数据透视表是肯定没戏的,这个东西本来就是用来统计的,而且直接填充值的话也有一些逻辑上的错误
所以曲线救国吧,我们只要针对这些关键字查找一下,有的话就把值填进去,没的话就空着。
先构造一下空的表单
同时在原来的表里面插个第一列,公式是:=[@Co]&[@JF]&[@[Grade ]]&[@Position]
完了可以把这列隐藏掉,Hidden少了个d大家请无视……
然后简单填一个公式:=IF(ISERROR(VLOOKUP(C$2&C$1&$A3&$B3,Sheet1!$A:$E,1,FALSE)),"",$B3)
往下拉一下,往右拉一下,完成。函数还是很好用的.
解释一下,为了查找匹配几个值,当然有更先进的办法,不过最简单的还是把那几个值串在一起,这样直接一个Vlookup就可以解决了,在Sheet2的查找公式里面要注意的是那几个引用,引用没问题就没问题了。
顺便说点Vlookup
Vlookup这个函数名声在外,基本每次我说要做点Excel的培训的时候,都会有人来问是不是讲Vlookup,我当时还觉得蛮奇怪的,因为Vlookup其实是个很简单的函数啊,有什么要讲的?
后来做过几次培训,知道了,其实大部分问题都出现在几个点上,这几个点很多书啊什么的都没讲清楚。
Vlookup的作用是我在A表里面有个值,我用这个值去B表里面查一下,查到的话就返回B表中定位的这个格子的那一行你指定列的数字
函数语法:
VLOOKUP(lookup_value,table_array,col_index_num,range_lookup)
关键点有一下几个:
- Lookup_value为需要在数据表第一列中进行查找的数值。多少人一开始就栽在了这个第一列上
- 引用,很多人第一个格子做得很好,结果一拖,就都是Error了。以我们上面的那个例子为例,用了几种绝对引用,对于匹配查找第一列的Grade和第二列的Position,因为列数不需要变,拖动的时候只要改变行数就行了,所以用$A3和$B3,固定A和B这两个列号,这样拖动填充的时候就只会有行号的变化,同理,JF和Co因为行不变,所以只要变列号就行,引用就是用C$1和C$2这样固定在第一列和第二列,往下拖的话就是D,E,F这样下去,往右拖动整个数据不变。
- 区域的引用,这个也很多人犯错,一般来说,在用lookup的时候记得把区域设置成绝对引用例如这里的Sheet1!$A:$E,不管怎么拖动,保证只在从A列到E列里面进行查找。这个错误也经常发生,要注意避免
这几点不出问题的话,一般来说lookup就没什么问题了。
PS.和这次的例子Excel文件:
PS.后来人事的同事自己想了个办法解决了这个问题,她还是构造了数据透视表,然后又建了张新的表然后用IF判断一下数据透视表里面那个格子有没有值,有的话就填充一下。理解起来比我的方法简单不少,不过我的办法么可以少画张表…就这点好处了 :P
Lookup例子

