博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
EXCEL常用函数
阅读量:5894 次
发布时间:2019-06-19

本文共 4374 字,大约阅读时间需要 14 分钟。

hot3.png

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动态调整需要求和的栏数,从而达到目的。

转载于:https://my.oschina.net/moluyingxing/blog/312305

你可能感兴趣的文章
Netty 4.1.35.Final 发布,经典开源 Java 网络服务框架
查看>>
Eclipse中修改代码格式
查看>>
关于 error: LINK1123: failure during conversion to COFF: file invalid or corrupt 错误的解决方案...
查看>>
Linux 进程中 Stop, Park, Freeze【转】
查看>>
PHP盛宴——经常使用函数集锦
查看>>
安装gulp及相关插件
查看>>
如何在Linux用chmod来修改所有子目录中的文件属性?
查看>>
Hyper-V 2016 系列教程30 机房温度远程监控方案
查看>>
笔记:认识.NET平台
查看>>
cocos2d中CCAnimation的使用(cocos2d 1.0以上版本)
查看>>
gitlab 完整部署实例
查看>>
影响企业信息化成败的几点因素
查看>>
SCCM 2016 配置管理系列(Part8)
查看>>
struts中的xwork源码下载地址
查看>>
我的友情链接
查看>>
PHP 程序员的技术成长规划
查看>>
python基础教程_学习笔记19:标准库:一些最爱——集合、堆和双端队列
查看>>
js replace,正则截取字符串内容
查看>>
javascript继承方式详解
查看>>
lnmp环境搭建
查看>>