1.EXCEL提取出生年月
=IF(C9="","",VALUE(MID(C9,7,4)&"/"&MID(C9,11,2)&"/"&MID(C9,13,2)))
其中C9表示EXCEL的地址。mid函数形式如下:
=MID(text, start_num, num_chars)
start_num是一个数字,是指从”字符串“的左边第几位开始截取;需要注意的是,截取的字符包含start_num这个位置的字符。如mid(567,1,2)=56。
num_chars也是数字,是指从start_num开始,向右截取的长度。
start_num参数小于1时,函数返回一个错误;当Strat参数值大于text参数长度时,返回一空字符串。
2.通过身份证判断性别
通过身份证判断性别 =IF(ISBLANK(C27)," ",IF(C27<>"",IF(MOD(RIGHT(LEFT(C27,17)),2),"男","女"),))
C27代表地址。
=IF(MOD(MID(H8,17,1),2),"男","女")
这种方式也可以。在此,还是讲下 mod(求余)这个函数吧。
形式:=mod(number,divisor)
需要注意的是,余数也有正负,这取决于divisor的正式符号,如下:
=MOD(3, 2) = 3/2 的余数 = 1
=MOD(-3, 2) = -3/2 的余数。符号与除数相同 (1)
=MOD(3, -2) = 3/-2 的余数。符号与除数相同 (-1)
=MOD(-3, -2) = -3/-2 的余数。符号与除数相同 (-1)
3,通过身份证,计算出年龄,然后再根据年龄计算进行简单的判断
=IF(YEAR(TODAY())-MID(E7,7,4)>23,"已婚","未婚")
上面这段代码的意思就是直接通过年龄相减,然后再比较,大于23岁判断为已婚,小于则表示未婚。
计算年龄还有个相对来说,更准确的公式:
=(TODAY()-C1)/365.25
因为有润年,所以每年润0.25年,即除以365.25。其中,这个C1是通过身份证计算出来的出生年月:
=MID(A1,7,4)&"-"&MID(A1,11,2)&"-"&MID(A1,13,2) “结果类似: 1999-09-12
上面的A1就是身份证号码的单元格地址。
4.通过身份证,生成性别(男,女)
=IF(MOD(MID(H2,17,1),2),"男","女")
5.lookup函数。这个函数大概的作用是:查找某些值,然后根据这些值在另外的区域生成另外的值。
它有两种形式,
(1)向量形式:公式为 = LOOKUP(lookup_value,lookup_vector,result_vector)
lookup_value—函数LOOKUP在第一个向量中所要查找的数值,它可以为数字、文本、逻辑值或包含数值的名称或引用;
lookup_vector—只包含一行或一列的区域lookup_vector 的数值可以为文本、数字或逻辑值;
result_vector—只包含一行或一列的区域其大小必须与 lookup_vector 相同。
这个意思已经讲得比较清楚了,比如查找的区域有三行二列,则生成结果的区域也是三行二列,区域大小要对应。
注意:LOOKUP_vector 的数值必须按升序排序:...、-2、-1、0、1、2、...、A-Z、FALSE、TRUE;否则,函数 LOOKUP 不能返回正确的结果。文本不区分大小写。
(2)数组形式:公式为= LOOKUP(lookup_value,array)
式中 array—包含文本、数字或逻辑值的单元格区域或数组它的值用于与 lookup_value 进行比较。 例如:
LOOKUP(5.2,{4.2,5,7,9,10})=5。
注意:array的数值必须按升序排列,否则函数LOOKUP不能返回正确的结果。文本不区分大小写。如果函数LOOKUP找不到lookup_value,则查找array中小于或等于lookup_value的最大数值。如果lookup_value小于array中的最小值,函数LOOKUP返回错误值#N/A。
另外,数组形式也可以这么用:
=LOOKUP(16,{0,"偏小";1,"120102";18,"010101";70,"超龄"})
此时,查询结果就会返回最后一列的值,即18。
5.1, VLOOKUP函数,即关联查询函数。
语法结构:VLOOKUP(lookup_value, table_array, col_index_num, [range_lookup])。
语法解释:VLOOKUP(查找值,查找范围,查找列数,精确匹配(FALSE)或者近似匹配(TRUE)).
(1)如:=VLOOKUP(K8,$G$2:$J$2980,4,FALSE),意思是在范围($G$2:$J$2980)内查找与K8相同的值,并取出J2(引用范围的第4列,即G为第1列,H为第二列,J为第四列)的值。
(2)这个函数在用于引用其它sheet数据或者其它文件Excel数据时,非常有用。如:
上图的意思,将test2.xls文件中名叫“王五”的第三列(即成绩)引用到当前excel表格中。
注意:上面Lookup_value参数一定是和Table_array参数的第1列进行比较,否则计算结果可能不正确。
6,FREQUENCY函数。这个函数的作用是分组统计,见下图:
上图的实现的功能是:统计A列的数据,分成三个组,小于等于89的663人,89到99有108人,大于99的有4人。这其中用到了FREQUENCY函数,这个函数有两个参数,第一个参数表示统计的范围,第二参数表示分段的区域(推荐地址用绝对引用)。需要注意的是,在单元格输入=FREQUENCY(A:A,$D$3:$D$4)后,直接按ctrl+shift+enter,而不是手动增加“{}”符号。
7,查找重复数据。见下图:
(1)
“条件格式”位于“开始”菜单中。筛选以后,如果有重复数据,就会以不同的颜色的显示。如果要将重复的数据集中在一起,可以使用“数据》筛选》按颜色排序”。
(2)上面的规则大多数情况下正确,但不完全。比如身份证对比的时候,excel默认只判断前16位,即便设置成文本格式依然没用。这个时候要么用公式计算。如:
如果 要检查B2的号在A列有否出现:=IF(COUNTIF(A:A,B2 & "*")>0,"有重复",""),注意两列比较是>0。
如果 要检查A列内的身份证号是否重复了:=IF(COUNTIF($A$2:$A$200,A2& "*")>1,"重复了",""),同列比较是>1。上面的代码中,需要注意的是 B2 & "*" 这种东西,因为身份证基本上都是数字,所以即便将单元格设置成文本格式,它依然会转换成数字来比较,而加上 & "*",就变成了511023192811295178*这种字符串的格式,这样以后excel才会采用文本格式进行比较,这个时候*相当于一个通配符。
(3)第(2)种方式专门用来解决身份证的比对问题,但没有第一种方式的那种背景显示,要达到第一种那样的背景显示,可以选择第(1)种方式中的新建规则。如图:
上面代码的功能就是判断B列中的每列是否存在于C列中,可以通过“格式”=》“填充”设置相应的背景颜色。需要注意的是,拖动单元格的时候,要选择第二项仅填充格式:
8,粘贴不覆盖已有内容单元格(只覆盖空的单元格)。如下图:
要把所有的姓名,放在同一列内,就要用到粘贴不覆盖功能。这个也简单,复制其中的任何一列,然后右键--》选择性粘贴,勾选"跳过空单元",如图:
9,关于按村按组排序的问题。
(1),如下:
如上图,要实现金盆村1组排前面,2组、3组、...、10组、11组等顺序排序,需要单独将村别和组提取出来,分别排序。提取组别如下:
=VALUE(LEFT(RIGHT(I2,LEN(I2)-3),LEN(RIGHT(I2,LEN(I2)-3))-1))
上面的公式看起来有点复杂,实际也简单,value函数是将文本转换成数字,RIGHT(I2,LEN(I2)-3)目的是去掉村名,如“金盆村”,LEFT函数目的是去掉“组”这个字。
按村排序需要单独将各村名提取出来,可以通过”=MID(I2,1,3)“这样的方式提取,村别排序需要用自定义排序,如:
(2),如果遇见村组的表示方法如1-5,1-11,2-5,2-7这种数字加“-”的表示法,我们需要用到excel的分列功能,选中需要分列的数据,然后点击“数据”菜单=》“分列”,如下:
第1步:
第二步:
上面的数据主要体现在第二步,将1-3通过“-”分隔成1和3两列,即1村3组的实现就是如此。
10,数据透视表。
这是一个新概念,以前没有听说 ,更没有用到。下面引入一个需求,如图:
要实现的需求是,每个人只显示一条数据,金额显示为1-5月份发放金额的总和。插入数据透视表:
上面第二张图里面,重点都圈出来了,需要说明的是我们只对“合计”那一栏的金额就是求和,其它标签一律选“无”分类。另外排版成一行时,我们还需要右键选择“数据透视表选项”,里面有个“显示”标签:
将经典数据透视表布局打上勾即可排列成一行。上面只是介绍了一个关于分组求和的例子,实际上数据透视表还可以求最大值、最小值、平均值、方差、偏差之类的,总之功能相当强大。
11,counta函数
返回非空单元格的个数 。区别: count函数只有当单元格内容是数值时才起作用。counta函数则是无论当单元格是什麽内容都起作用(可以是文本,逻辑值)。
上图的公式就是通过counta函数来生成前面的序号。需要注意的是,上面的2和3之间的单元格必须是空单元格才可以,即选中A4到A7时,计数只会显示为3才可以,但有时候中间的单元格不是空而是空值时就不得行,如下列情况:
这种情况直接处理会相当麻烦,最简单的方法就是先把这些数据复制到一个记事本中,再从记事本中复制过来。
12,offset函数
语法形式是 OFFSET(reference,rows,cols,height,width),其中rows,cols,height,width分别代表:向下偏移的行数、向右偏移的列数、返回区域的行数、返回区域的列数。
功能需求如下:
通过户人数,统计该户金额合计,我们可以通过offset动态调整需要求和的栏数,从而达到目的。