观看视频更直观

我们建立信息表时不仅要输入性别、生日和年龄等信息,往往也需要输入身份证号码,而身份证号码中包含有籍贯、性别、生日和年龄等信息,从身份证号码中提取上述信息可以减少输入工作量,提高工作效率。利用Excel中的内置函数可以完成,但略显烦琐,要用到MID 函数、TEXT函数、、IF函数、ISEVEN函数(或ISODD函数或MOD函数)、DATEDIF函数、TODAY函数,很多人难以灵活使用。

我利用VBA在Excel中自定义了一个IDinfo函数,一个函数就能完成从身份证号码中提取出性别、生日与年龄信息,还自动甄别身份证号码输入正误,特别实用。

一、插入模块并复制粘贴代码

打开Excel后新建一个工作簿,右击"sheet1工作表标签,在弹出的快捷菜单中选择"查看代码"命令,打开VBA窗口,单击"插入"菜单→"模块"命令,插入一个模块,选中其中的"模块1",将下面的代码复制到其中即可。

Public Function IDInfo(strID As String, Optional bType As Byte = 1)

Application.ScreenUpdating = False

Dim i As Byte, s As String

If Len(strID) <> 18 Then

IDInfo = "身份证号码错误"

Exit Function

'若文本长度不等于18,返回"错误"并退出函数

End If

For i = 1 To 17

If Asc(Mid(strID, i, 1)) < 48 Or Asc(Mid(strID, i, 1)) > 57 Then

IDInfo = "身份证号码有误"

Exit Function

'若1至17位不是数字,返回"错误"并退出函数

End If

Next

For i = 1 To 17

a = Val(Mid(strID, i, 1)) '从左至右依次取得各位上的数字

w = (2 ^ (18 - i)) Mod 11 '计算加权因子

k = k + a * w '累计计算加权因子与数字的乘积和

Next i

k = k Mod 11 '求除以11的余数

s = Mid("10X98765432", k + 1, 1)

If s <> Right(strID, 1) Then

IDInfo = "身份证号码错误"

Exit Function

'若身份证号码校验错误,返回"错误"并退出函数

End If

Select Case bType

Case 1 '获取性别

If Val(Mid(strID, 17, 1)) Mod 2 = 0 Then

IDInfo = "女" '偶数性别为女

Else

IDInfo = "男" '奇数性别为男

End If

Case 2 '获取生日

Dim iDate As Date

iDate = WorksheetFunction.Text(Mid(strID, 7, 8), "#-00-00")

IDInfo = Format(iDate, "Long Date")

Case 3 '获取年龄

IDInfo = Format(Now, "yyyy") - Val(Mid(strID, 7, 4))

If Val(Mid(strID, 7, 4)) = 0 Then IDInfo = ""

End Select

End Function

二、IDinfo自定义函数的使用

1、函数语法:IDInfo(strID,[ bType])

strID:必需参数,代表身份证号码或对身份证号码的引用。

bType:可选参数,表示获取信息的类型,1或省略表示获取性别,2表示要获取生日,3表示要获取年龄。

2、使用范例

⑴A列存储身份证号码,其中A2为正确身份证号码,其中均为杜撰的错误身份证号码。

⑵在B2单元格内输入"=IDinfo($A2, COLUMN(A1))",拖曳B2填充柄到D2单元格,再拖曳至所需目标处,如图中D2单元格。注意:为了能正确拖曳复制公式,第1个参数要用混合引用,列锁定行相对;第2个参数使用COLUMN函数也是为了方便拖曳,COLUMN函数返回列的列标,如COLUMN(A1)就是返回1即A列的列标,公式拖曳到C2、D2时,COLUMN(A1)就相应变成了COLUMN(B1)、COLUMN(C1),它们分别返回2和3,如果你不理解COLUMN函数就直接输入参数1、2、3也行,数据较少也不麻烦。

语言建立一个学生籍贯管理簿_编写一个Excel自定义函数,身份证信息提取如探囊取物...相关推荐

  1. python设计一个学生类求最高分_设计一个学生类班级类

    第一题 设计一个学生类 属性:姓名.学号.年龄.成绩 设计一个班级类要求:实现向班级中添加学生.删除学生.查看学生.按照指定条件排序 属性:班级代号,所有学生 需要使用 calss, __int__, ...

  2. Java编写学生类student程序_编写一个JAVA程序片断定义一个表示学生的类student.docx...

    编写一个JAVA程序片断 定义一个表示学生的类student,包括域"学号","班级","姓名","性别"," ...

  3. 用java输入学生姓名查询成绩_编写一个Java程序,提示用户输入学生数量,学生姓名和他们的成绩,并按照成绩的降序打印学生姓名...

    importjava.util.Scanner;publicclassmyclass{publicstaticvoidmain(String[]args){Scannerinput=newScanne ...

  4. c语言课程设计学生籍贯信息记录簿,C语言课程设计 学生籍贯信息记录簿设计.doc...

    C语言与程序设计课程设计 学生籍贯信息记录簿设计 学 院 信息工程 班 级 物联1301班 学 号 131408119 姓 名 滕玲 一.设计目的 该软件主要是编辑一个学生籍贯信息记录簿记录每个学生信 ...

  5. C语言课程设计学生籍贯信息,C语言课程设计 学生籍贯信息记录簿设计.doc

    C语言与程序设计课程设计 学生籍贯信息记录簿设计 学 院 信息工程 班 级 物联1301班 学 号 131408119 姓 名 滕玲 一.设计目的 该软件主要是编辑一个学生籍贯信息记录簿记录每个学生信 ...

  6. c语言程序设计学籍信息,C语言程序设计报告——学生学籍管理(报告).doc

    C语言程序设计报告--学生学籍管理(报告) 软件设计报告 题 目: 学生学籍管理系统 院系名称:专业名称:班 级: 班内序号:学生姓名 :指导教师:时间: 一.课程设计目的 1.通过本课程设计,强化上 ...

  7. C语言课程设计学生籍贯信息,学生籍贯信息记录簿_C语言课程设计.doc

    学生籍贯信息记录簿_C语言课程设计 程序设计 课程设计报告 课题名称: 学生籍贯信息记录簿 专业 计算机科学与技术(软件工程)学生姓名 班级学号指导教师完成日期 一 课程设计的目的---------- ...

  8. 编程实现一个学生成绩管理的简单功能 JAVA

    1.编程实现一个学生成绩管理的简单功能 能描述学生的姓名.学号.成绩(单科).能显示学生的个人信息. 能描述教师的姓名.工号,能对学生成绩进行设置.修改.查询. 能描述教务的姓名.工号,能对学生信息进 ...

  9. excel自定义函数的注释_打印Excel注释的自定义列表

    excel自定义函数的注释 If you've added comments to an Excel worksheet, you have a couple of built-in options ...

最新文章

  1. ORACLE建视图 授权的 例子
  2. Hessian(C#)介绍及使用说明
  3. Keepalived - Keepalived 实现 tomcat双机热备
  4. mysql opaq数据库_MySql数据库
  5. Tomcat源码调试环境搭建
  6. java 进制转换 十进制转二,八,十六进制
  7. ffmpeg调用directshow camera 并sdl渲染
  8. css样式,后代选择器
  9. Dynamic Web 2021Crack版,文档扫描和图像捕获
  10. 电脑没声音怎么调出来?让电脑重新“开口说话”,黑客仅用了2招
  11. 计算机组成原理浮点运算方法,计算机组成原理第二章 第11讲 浮点运算方法和浮点运算器.ppt...
  12. AIC,AIB,同德显卡五兄弟,
  13. Spark3 读写 S3 Parquet, Hive, Hudi
  14. 如何在Linux系统服务器中重命名目录
  15. (二)C++头文件与类的声明
  16. 使用Python和BitTorrentSync定期给Kindle推送电子书
  17. 各种ADSL MODEM端口影射
  18. Intellij Idea:禁忌,请勿手残
  19. 诚邀您体验人工智能AI
  20. python中的True 和 False详解

热门文章

  1. vlc 缓冲大小 设置_用libvlc 播放指定缓冲区中的视频流
  2. 正则不能输入特殊字符_正则表达式语法学习和在线练习
  3. 用python分析小说_用Python对哈利波特系列小说进行情感分析
  4. python计算precision,recall,f1-score
  5. Android之ViewDragHelper
  6. 小甲鱼 OllyDbg 教程系列 (六) :PJ 软件功能限制(不修改jnz的非爆破方法)
  7. supervisor安装和配置
  8. Self Encapsulate Field(自封装字段)
  9. C++学习之路 | PTA乙级—— 1031 查验身份证 (15 分)(精简)
  10. jmeter里的连接数_Jmeter之连接问题