提取身份证的性别、出生年月日的VBA

合集下载

Excel如何从身份证号码中计算出生日期、性别及年龄

Excel如何从身份证号码中计算出生日期、性别及年龄

Excel如何从身份证号码中计算出生日期、性别及年龄
如下图,要根据A列的身份证号码提取出生日期,判断性别和计算年龄
提取出生日期
现在身份证号码都是18位,代表出生日期的是第7位-第14位,总共8位数字,
所以在B2单元格输入公式:=--TEXT(MID(A2,7,8),"0-00-00")
公式说明:使用MID函数从第7位开始提取,提取8位数,但是提取出来的是一串数字,并不属于日期格式,所以使用TEXT函数将数字转换为日期格式。

判断性别
身份证号码的第17位数字是代表性别的,奇数为男生,偶数为女生,所以在C2单元格输入公式:=IF(MOD(MID(A2,17,1),2),"男","女")
公式说明:用MID函数提取第17位代表性别的数字,然后用MOD函数将第17位数跟2相除取余数,奇数跟2相除的余数为1,偶数跟2相除的余数为0,再用if函数判断MOD函数的余数是1则返回“男” 是0则返回“女”
计算年龄
在D2单元格输入公式:=DATEDIF(B2,TODAY(),"Y")
公式说明:用DATEDIF函数计算两个日期之间相差的日期间隔,用出生日期跟今天的日期(用TODAY函数表示当前的日期),计算类型为“Y”(年)
我是小螃蟹,如果您喜欢这篇教程,请帮忙点赞、转发和评论哦,感谢您的支持!。

身份证号提取生日、年龄、性别、籍贯

身份证号提取生日、年龄、性别、籍贯

身份证号提取生日、年龄、性别、籍贯咱们每个人都有一个唯一的身份证号,其实身份证号中包含了很多的个人信息,你知道怎么从身份证号中提取个人的生日、年龄、性别、籍贯等信息吗?技巧君今天和大家分享一下如何利用Excel从身份证号中提取个人信息!文末有示例文件获取方法哦身份证号的构成身份证号有18位,排列顺序从左至右依次为:六位数字地址码,八位数字出生日期码,三位数字顺序码和一位数字校验码。

顺序码的奇数分给男性,偶数分给女性。

身份证号构成从这个构成中,我们可以发现,只需要提取对应的编码就可以提取出身份证号中的个人信息!提取性别=IF(MOD(MID(B2,17,1),2),'男','女')身份证号提取性别说明:MID(B2,17,1),提取第17位数字MOD(MID(B2,17,1),2),对2取余,奇数余数得1,偶数余数为0提取出生年月=--TEXT(MID(B2,7,8),'0-00-00')提取出身年月说明:MID(B2,7,8),提取第7位开始后面的8位数字,即出生年月日编码TEXT(MID(B2,7,8),'0-00-00'),转换为年-月-日的格式--TEXT(MID(B2,7,8),'0-00-00'),减负运算换算为真正的日期提取实岁=DATEDIF(TEXT(MID(B2,7,8),'0-00-00'),TODAY(),'Y')提取实岁说明:DATEDIF(TEXT(MID(B2,7,8),'0-00-00'),TODAY(),'Y'),计算当前日期和出生日期的年差值,即实际岁数提取虚岁=(YEAR(NOW())-MID(B2,7,4))提取虚岁说明:MID(B2,7,4):提取第7位数开始的4位数字,即出生年份YEAR(NOW()):计算当前日期的年份(YEAR(NOW())-MID(B2,7,4)):虚岁=当前年份-出生年份提取籍贯=VLOOKUP(--MID(B2,1,6),籍贯编码!B:C,2,0)提取籍贯说明:--MID(B2,1,6),提取前六位地址编码VLOOKUP(--MID(B2,1,6),籍贯编码!B:C,2,0),在地址编码表里找到籍贯。

请教狐狸爸爸:身份证号码有效性验证,提取籍贯、性别、出生日期、年龄信息(VBA代码)

请教狐狸爸爸:身份证号码有效性验证,提取籍贯、性别、出生日期、年龄信息(VBA代码)

请教狐狸爸爸:身份证号码有效性验证,提取籍贯、性别、出生日期、年龄信息(VBA代码)Option Explicit'====================================== ============================='函数名称: IsIDNumber'功能描述:根据GB11643-1999编码规则验证18位身份证号码是否有效'输入参数:参数1:IDNumber 必需的,18位身份证号码'返回参数:有效返回True,无效返回False'兼容性:'使用示例:IsIDNumber(*******************")'返回True '相关调用:'作者:红尘如烟'创建日期: 20010-4-25'====================================== =============================Function IsIDNumber(ByVal IDNumber As String) As Boolean Const W As String = "79058421637905842" '加权因子Const C As String = "10X98765432" '校验码Dim S As Integer, i As Integer, T As IntegerIDNumber = UCase(Trim(IDNumber))If Len(IDNumber) <> 18 Then Exit FunctionIf Not IsNumeric(Mid(IDNumber, 1, 17)) Then Exit Function If Not IDNumber Like "*[0-9X]" Then Exit FunctionFor i = 1 To 17T = Mid(W, i, 1)If T = 0 Then T = 10S = S + Mid(IDNumber, i, 1) * TNextT = S Mod 11If Right(IDNumber, 1) = Mid(C, T + 1, 1) Then IsIDNumber = TrueEnd FunctionPrivate Sub Form_Load()End SubPrivate Sub txtAge_BeforeUpdate(Cancel As Integer)End SubPrivate Sub txtIDNumber_AfterUpdate()If Nz(Me.txtIDNumber) = "" Then Exit Sub'验证输入的是否为一个有效的身份证号码If Not IsIDNumber(Nz(Me.txtIDNumber)) ThenMsgBox "无效的身份证号码!", vbInformationMe.txtIDNumber = NullMe.txtBirthday = NullMe.txtSex = NullMe.txtNativePlace = NullElse'从表中取得籍贯Me.txtNativePlace = DLookup("[FAddress]", "tblNativePlaceList", "[FNumber]=" & Left(Me.txtIDNumber, 6)) '提取出生日期(第7-14位)Me.txtBirthday = DateSerial(Mid(Me.txtIDNumber, 7, 4), Mid(Me.txtIDNumber, 11, 2), Mid(Me.txtIDNumber, 13, 2)) '提取性别(第17位,奇数为男,偶数为女)Me.txtSex = IIf(Mid(Me.txtIDNumber, 17, 1) Mod 2 = 0, "女", "男")'根据出生日期计算年龄,精确到年' Me.txtAge = DateDiff("yyyy", Me.txtBirthday, Date)'根据出生日期计算年龄,精确到月Me.txtAge = DateDiff("m", Me.txtBirthday, Date) \ 12'根据出生日期计算年龄,精确到天' Me.txtAge = DateDiff("d", Me.txtBirthday, Date) \ 365.25End IfEnd Sub。

怎么样快速批量提取出WPS表格身份证号码的出生日期

怎么样快速批量提取出WPS表格身份证号码的出生日期

怎么样快速批量提取出 WPS 表格身份证号码的出生日期、性别
众所周知,从一个人的身份证号码就能看出这个人所属省份、县市、出生年月日以及性别。

人力资源部门的同事在记录新员工信息的时候,不掌握一点技巧,一个一个的人工识别,那 是不可取的办法。

下面,介绍一种 WPS 表格中快速批量提取出身份证号码中的出身日期。


操作步骤
启动 WPS2012表格,输入一些数据,如下图所示。


鼠标单击 B2单元格,然后点击上面的 fx 插入函数按钮。




弹出一个设置框,切换到常用公式标签,选择提取身份证生日,然后单击身份证号码 后面的按钮,鼠标单击 A2单元格,按下确定按钮。


在 B2单元格正确的显示出了生日,这样比我们手动输入来的快多了。




最后利用单元格填充的方法将整个表格填充完整。




6
6
显示性别是同样的方法













利用函数提取身份证中的性别出生日期

利用函数提取身份证中的性别出生日期

1、性别、出生月日、年龄的自动填充功能设置我们先对“性别”“出生年月”“年龄”进行函数设置。

当我们输入某人身份证号码时,系统便会自动生成“性别”,“出生年月”及“年龄”,这样就减少了我们录入的工作量。

请分别选择性别、出生月日、年龄信息项单元格输入下列公式:性别A、如果身份证号是18位的,=IF(MOD(MID(E3,17,1),2)=1,"男","女")B、如果身份证号是15位或18位那么就应输入分式(1)性别:=IF(MOD(IF(LEN(E3)=15,MID(E3,15,1),MID(E3,17,1)),2)=1,"男","女")含义:“LEN(E3)=15”表示看E3中是否有15个字符;“MID(E3,15,1)”表示在E3中从第15位开始提取1位字符;“MOD(MID(),2)=1”表示提取的字符除以2余数为1;“IF(LEN(E3)=15,MID(E3,15,1),MID(E3,17,1)”表示看E3中是否够15个字符,如果够就从第15个字符开始取1个字符,如果不够15个字符就从第17个字符开始取1个字符。

我们的身份证号码一般是15位或18位。

“IF(MOD(IF(LEN(E3)=15,MID(E3,15,1),MID(E3,17,1)),2)=1,"男","女"”表示所取字符除以2如果余数为1显示男,否则显示女。

(2)出生年月: =DATE(MID(E3,7,4),MID(E3,11,2),MID(E3,13,2))含义:DATE(YEAR,MONTH,DAY);“MID(E3,7,4)”表示在E3中从第7个字符开始连续取4个字符表示年,用类似的表示方法一个人的出生年月日便可以通过函数设置表示出来,如果为了看起来方便,我们可以将单元格格式设置成年、月、日的日期格式,这样显示的结果会非常容易理解。

WPS表格从身份证号提取生日及性别信息

WPS表格从身份证号提取生日及性别信息

WPS表格从身份证号提取生日及性别信息目前,我国的身份证号分为两种,一种为15位,一种为18位。

在15位的老版身份证中,第7到12位为出生日期数,最后一位为性别代码,偶数为女,奇数为男。

18位的新身份证中第7到14位为出生日期数,倒数第2位为性别代码,同样偶数为女,奇数为男。

基于这个特点,我们可以用函数加以判断。

如图1是我们已输入完身份证号的XX表,在输入身份证号时需注意,要把单元格格式设为文本型,最好不要在所输身份证号前加一个单引号“'”或其它的符号。

一、提取出生日期在E2中输入公式:方法一,公式“=DATE(MID(D2,7,4),MID(D2,11,2),MID(D2,13,2))”方法二,公式“=IF(LEN(D2)=15,TEXT(MID(D2,7,6),"1900年00月00日"),TEXT(MID(D2,7,8),"00年00月00日"))”,拖动填充柄向下复制公式,这样就完成了出生日期的提取(如图2):二、提取性别信息在C2中输入公式:“=IF(MOD(IF(LEN(D2)=15,MID(D2,15,1),MID(D2,17,1)),2)=1,"男","女")”,拖动填充柄向下复制公式,这样就完成了性别信息的提取(如图3):三、年龄计算在F2单元格输入公式:方法一,从身份证直接计算公式“=DATEDIF(DATE(MID(D2,7,4),MID(D2,11,2),MID(D2,13,2)),TO DAY(),"y")”并回车。

15位身份证“=DATEDIF(DATE(MID(F880,7,4),MID(F880,11,2),MID(F880,13, 2)),TODAY(),"y")”(如图4):方法二,从出生日期计算公式“=DATEDIF(E2,TODAY(),"Y")”,并回车。

EXCEL根据身份证号码自动提取性别、出生年月日和年龄(通用公式)

EXCEL根据身份证号码自动提取性别、出生年月日和年龄(通用公式)

EXCEL根据身份证号码自动提取性别、出生年月日和年龄(通用公式)这是根据身份证号码(15位和18位通用)自动提取性别和出生年月的自编公式,供需要的网友参考:说明:公式中的B2是身份证号1、根据身份证号码求性别:=IF(LEN(B2)=15,IF(MOD(VALUE(RIGHT(B2,3)),2)=0,"女","男"),IF(LEN(B2)=18,IF(MOD(VALUE(MID(B2,15,3)),2)=0,"女","男"),"身份证错"))2、根据身份证号码求出生年月日:=IF(LEN(B2)=15,CONCATENATE("19",MID(B2,7,2),".",MID(B2,9,2) ),IF(LEN(B2)=18,CONCATENATE(MID(B2,7,4),".",MID(B2,11,2)),"身份证错"))3、根据身份证号码求年龄:=IF(LEN(B2)=15,year(now())-1900-VALUE(MID(B2,7,2)),if(LEN(B 2)=18,year(now())-VALUE(MID(B2,7,4)),"身份证错"))其他通用公式:(新旧身份证号通用)(1)、根据“身份证号”获得“年龄”A1为身份证号,B1中输入公式=DATEDIF(TEXT((LEN(A1)=15)*19&MID(A1,7,6+(LEN(A1)=18)*2),"#-00-00"),TODAY(),"y")(2)、根据出生“年-月-日”获得“年龄”B1为出生日期,C1中输入公式=INT((TODAY()-B1)/365)或者=DATEDIF(B1,TODAY(),"Y")判断身份证格式是否正确:B1为身份证号,C1中输入公式=IF(OR(LEN(B1)=18,LEN(B1)=15),IF(LEN(B1)=18,IF(OR(MONTH (DATE(1*(MID(B1,7,4)),1*(MID(B1,11,2)),1*(MID(B1,13,2))))<> 1*(MID(B1,11,2)),DAY(DATE(1*(MID(B1,7,4)),1*(MID(B1,11,2)), 1*(MID(B1,13,2))))<>1*(MID(B1,13,2))),"月日错误",""),IF(LEN(B1)=15,IF(OR(MONTH(DATE(1*(MID(B1,7,2))+1900,1 *(MID(B1,9,2)),1*(MID(B1,11,2))))<>1*(MID(B1,9,2)),DAY(DATE (1*(MID(B1,7,2))+1900,1*(MID(B1,9,2)),1*(MID(B1,11,2))))<>1 *(MID(B1,11,2))),"月日错误",""))),"身份证位数不对")&IF(AND(LEN(B1)=18,1*MID(B1,7,4)>YEAR(TODAY())-6),"年份错误","")以下是一位热心网友提供的通用公式:(很不错哦^_^)假设C2为身份证号,输入公式=IF(LEN(C2)=15,19&MID(C2,7,6),MID(C2,7,8))这是获得出生日期=IF(MOD(IF(LEN(C2)=15,MID(C2,15,1),MID(C2,17,1)),2)=1,"男","女")这是区分性别Excel表中身份证号码提取出生年月,性别,年龄的使用技巧1.Excel表中用身份证号码中取其中的号码用:MID(文本,开始字符,所取字符数);2.15位身份证号从第7位到第12位是出生年月日,年份用的是2位数。

用VBA构建身份证验证函数

用VBA构建身份证验证函数

用VBA构建身份证验证函数同学们在用VBA构建用户管理系统时,需要收集用户信息,在采集用户信息时,经常会遇到身份证信息输入混乱的情况,有的用户胡乱输入、有的输入明显错误,如何对身份证信息进行校验,规范输入信息呢?本节深入探讨用VBA代码进行身份证校验。

身份证号码的编码规则身份证号码共18位,由17位本体码和1位校验码组成。

1.前6位是地址码,表示登记户口时所在地的行政区划代码,依照《中华人民共和国行政区划代码》国家标准(GB/T2260)的规定执行;2.7到14位是出生年月日,采用YYYYMMDD格式;3.15到17位是顺序码,表示在同一地址码所标识的区域范围内,对同年、同月、同日出生的人编订的顺序号,顺序码的奇数分配给男性,偶数分配给女性,即第17位奇数表示男性,偶数表示女性;4.第18位是校验码,采用ISO 7064:1983, MOD 11-2校验字符系统。

一代身份证与二代身份证的区别在于:1.一代身份证是15位,二代身份证是18位;2.一代身份证出生年月日采用YYMMDD格式,二代身份证出生年月日采用YYYYMMDD格式;3.一代身份证无校验码,二代身份证有校验码。

1.区划代码校验首先,把从网上下载的行政区划代码放入名为“区划代码”的工作表中,此步骤主要是校验用户输入的前6位是否在区划代码中找到。

代码如下:arr = Worksheets("区划代码").Range("a1", Worksheets("区划代码").Range("a" & Rows.Count).End(xlUp))AreaCode = Mid(MyId, 1, 6) '提取身份证前6位IsCorrect = FalseFor i = 1 To UBound(arr)If CStr(arr(i, 1)) = AreaCode ThenIsCorrect = TrueExit ForEnd IfNextIf IsCorrect = False ThenIdCardCheck = "区划代码错误"Exit FunctionEnd If2.身份证的长度验证身份证字符长度应为18位或15位,其他长度的不符合要求If Not (Len(MyId) = 18 Or Len(MyId) = 15) ThenIdCardCheck = "身份信息位数不符合要求"Exit FunctionEnd If3.验证日期字符串是否合法(1)验证身份证信息中除最后一位是否含有字符,如果含有字符,说明不合法;(2)验证日期格式是否合法。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

提取身份证的出生年月日的VBA
方法一:使用VBA建立自定义函数
在EXCEL中建立模块,输入下列代码,则在单元格中就可以使用自定义函数XB(),则就可以根据身份份号码得出性别,使用自定义函数CS(),则就可以根据身份份号码得出出生日期。

'根据身份证号码求出生日期与性别
Function xb(Number)
If Len(Number) = 15 Then
se = Val(Right(Number, 1))
Select Case se
Case 0, 2, 4, 6, 8
xb = "女"
Case 1, 3, 5, 7, 9
xb = "男"
End Select
End If
If Len(Number) = 18 Then
se = Val(Mid(Number, 17, 1))
Select Case se
Case 0, 2, 4, 6, 8
xb = "女"
Case 1, 3, 5, 7, 9
xb = "男"
End Select
End If
End Function
Function cs(Number) As Date
If Len(Number) = 15 Then cs = "19" + Mid(Number, 7, 2) + "-" + Mid(Number, 9, 2) + "-" + Mid(Number, 11, 2)
If Len(Number) = 18 Then cs = Mid(Number, 7, 4) + "-" + Mid(Number, 11, 2) + "-" + Mid(Number, 13, 2)
End Function
方法二:使用函数
=IF(LEN(C2)=15,concatenate("19",MID(C2,7,2),"-",MID(C2,9,2),"-",MID(C 2,11,2)),if(len(c2)<>18,"身份证错误",concatenate(MID(C2,7,4),"-",MID(C2,11,2),"-",MID(C2,13,2)))

=IF(LEN(C2)=15,"19"&MID(C2,7,2)&"-"&MID(C2,9,2)&"-"&MID(C2,11,2),I F(LEN(C2)<>18,"身份证错误",MID(C2,7,4)&"-"&MID(C2,11,2)&"-"&MID(C2,13,2)))
“性别”的方法与出生年月大同小异。

=IF(LEN(C2)=15,IF(MOD(MID(C2,15,1),2)<>0,"男","女"),IF(LEN(C2)=18,IF(MOD(MID(C2,17,1),2)<>0,"男","女"),""))

=IF(LEN(C2)=15,IF(MOD(VALUE(RIGHT(C2,3)),2)=0,"女","男"),IF(LEN(C2)=18,IF(MOD(VALUE(MID(C2,15,3)),2)=0,"女","男"),""))
说明:函数concatenater()的功能:
将两个或多个文本字符串合并为一个文本字符串。

语法:CONCATENATE (text1,text2,...)
Text1, text2, ... 为2 到255 个将要合并成单个文本项的文本项。

这些文本项可以为文本字符串、数字或对单个单元格的引用。

注解:您也可使用连接符号(&) 计算运算符代替CONCATENATE 函数来连接文本项。

例如=A1&B1 与=CONCATENATE(A1,B1) 返回相同的值。

相关文档
最新文档