今天主要是两个函数,和一个能干事的大公式。大致内容如下:

  • datedif函数好吃吗?能干啥?
  • text函数究竟是干什么的?
  • 如何通过Excel检验身份证号的真假。

好了,进入正题吧。

1、datedif 函数

Excel中,DATEDIF是一个传说的隐藏函数,在帮助和插入之中,你是找不到的。它的作用呢,就是返回两个日期之间“年”、“月”、“日”之间的间隔数。

先来看参数。

=DATEDIF("开始日期","结束日期","返回值的类型")

开始和结束日期,只有一个要求,就是结束日期必须大于开始日期。同时,开始日期必须在1900年后。

返回的类型,可以选择以下的:

Y : 年
M : 月
D : 日

当然,还有别的玩法。

MD : 返回起始日期和结束日期的同月间隔天数,忽略月份和年份。
YD : 返回起始日期和结束日期的同年间隔天数,忽略年份。
YM : 返回起始日期和结束日期的间隔月数,忽略日期中的年份。

举个例子,计算我到2020年9月19日的周岁。

=datedif("1997-09-26","2020-09-19","Y")

直接返回多少呢?

答案是18(22),毕竟姜辰今年18(22)岁。

2、text函数

text函数是Excel中最有用的函数之一。

也是我最喜欢的。

主要作用就是把数值转换为按指定格式表示的文本。

用起来,很舒服的。

用法:

=TEXT("数值","你要转换出来的格式")

举个例子,我要把20200808变成2020年08月08日。

=text("20200808","0000年00月00日")

很简单,那么能转换哪些格式呢?

可以转换的格式 数值 转换出来的结果 说明
G/通用格式 10 10 没变化
000.0 10.25 010.3 小数点前面不够三位,用0补齐,保留1位小数。
#### 10.0000 10 没用的0一律消失
00.## 1.2340 01.23 小数点前面不够2位,用0补齐;后面多余的,只保留2位小数
0000-00-00 12345678 1234-56-78 用来表示日期的
0000年00月00日 87654321 8765年43月21日 还是用来表示日期
aaaa 2020/09/19 星期六 显示中文星期几的全称
aaa 2020/09/19 显示中文星期几的简称

除了这些,还能用来干什么?

还可以用来判断条件哟。

举个例子:

=text("85","[>=90]优秀;[>=60]合格;不及格")

输出的结果是什么?

合格

这是什么意思呢?输入的值大于等于90,则显示优秀;大于等于60,并且小于90,则显示合格,小于60,显示不合格。

可以用来干什么?判断成绩打等级?

就这样吗?用text函数能不能把123变成一二三?

可以。

=text("123","[DBNum1][$-804]G/通用格式")

输出结果:

一百二十三

那我要大写的呢?

=text("123","[DBNum2][$-804]G/通用格式")

输出结果:

壹佰贰拾叁

强大的TEXT函数,不打算多练习一下吗?

接下来,就是我们的重头戏了,

如何通过Excel检验身份证号的真假。

众所周知,身份证号只有18位,每一位究竟是干什么的呢?

来,一起研究下。

Excel 校验身份证号

身份证号前6位是地区码。以北京为例:110000,第一、二位表示省,三四位标识市,五六位标识县。

第7到14位,表示出生年月日。这也就是为什么Excel中从身份证计算年龄都是从第7位开始,提取8位了。

紧接着,15到17位是顺序码。用来表示在同一个地方出生的人,进行编号。其中,17位奇数给男生,偶数给女生。

18位是校验码,用来检测身份证是否合法,如果第18位是10,则用X代替。据说是按照ISO7064:1983.MOD 11-2校验码来计算出来的。

正常情况怎么判断身份证号是否正确呢?

1、将前面的身份证号码17位数分别乘以不同的系数。从第一位到第十七位的系数分别为:7-9-10-5-8-4-2-1-6-3-7-9-10-5-8-4-2。
2、将这17位数字和系数相乘的结果相加。
3、用加出来和除以11,看余数是多少?
4、余数只可能有0-1-2-3-4-5-6-7-8-9-10这11个数字。其分别对应的最后一位身份证的号码为1-0-X -9-8-7-6-5-4-3-2。(即余数0对应1,余数1对应0,余数2对应X...)
5、通过上面得知如果余数是3,就会在身份证的第18位数字上出现的是9。如果对应的数字是2,身份证的最后一位号码就是罗马数字X。
例如:某男性的身份证号码为【53010219200508011X】, 我们看看这个身份证是不是符合计算规则的身份证。
首先我们得出前17位的乘积和【(5*7)+(3*9)+(0*10)+(1*5)+(0*8)+(2*4)+(1*2)+(9*1)+(2*6)+(0*3)+(0*7)+(5*9)+(0*10)+(8*5)+(0*8)+(1*4)+(1*2)】是189,然后用189除以11得出的结果是189÷11=17余下2,187÷11=17,还剩下2不能被除尽,也就是说其余数是2。最后通过对应规则就可以知道余数2对应的检验码是X。所以,可以判定这是一个正确的身份证号码。

那么,用Excel怎么来检测呢?

假设A2是身份证号,并且是现在18位的二代身份证,那么我们就在B2来校验吧。

# 在B2填写:
=IF(LEN(A2)<>18,"非二代身份证",IF(MID("10X98765432",(MOD(SUMPRODUCT(MID(A2,ROW(INDIRECT("1:17")),1)*{7;9;10;5;8;4;2;1;6;3;7;9;10;5;8;4;2}),11)+1),1)=RIGHT(A2),"对","错"))

这个公式很长对吗?

是不是需要一个一个解析一下?

if函数、mod函数、mid函数,我们都在《Excel中一些好玩的小公式(2)》中讲到了,而之中陌生的,是SUMPRODUCT函数和INDIRECT函数以及RIGHT函数。

那么,明天见。

全文完 [ 喜欢本文,打赏作者! ]