语言建立一个学生籍贯管理簿_编写一个Excel自定义函数,身份证信息提取如探囊取物...
观看视频更直观
我们建立信息表时不仅要输入性别、生日和年龄等信息,往往也需要输入身份证号码,而身份证号码中包含有籍贯、性别、生日和年龄等信息,从身份证号码中提取上述信息可以减少输入工作量,提高工作效率。利用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自定义函数,身份证信息提取如探囊取物...相关推荐
- python设计一个学生类求最高分_设计一个学生类班级类
第一题 设计一个学生类 属性:姓名.学号.年龄.成绩 设计一个班级类要求:实现向班级中添加学生.删除学生.查看学生.按照指定条件排序 属性:班级代号,所有学生 需要使用 calss, __int__, ...
- Java编写学生类student程序_编写一个JAVA程序片断定义一个表示学生的类student.docx...
编写一个JAVA程序片断 定义一个表示学生的类student,包括域"学号","班级","姓名","性别"," ...
- 用java输入学生姓名查询成绩_编写一个Java程序,提示用户输入学生数量,学生姓名和他们的成绩,并按照成绩的降序打印学生姓名...
importjava.util.Scanner;publicclassmyclass{publicstaticvoidmain(String[]args){Scannerinput=newScanne ...
- c语言课程设计学生籍贯信息记录簿,C语言课程设计 学生籍贯信息记录簿设计.doc...
C语言与程序设计课程设计 学生籍贯信息记录簿设计 学 院 信息工程 班 级 物联1301班 学 号 131408119 姓 名 滕玲 一.设计目的 该软件主要是编辑一个学生籍贯信息记录簿记录每个学生信 ...
- C语言课程设计学生籍贯信息,C语言课程设计 学生籍贯信息记录簿设计.doc
C语言与程序设计课程设计 学生籍贯信息记录簿设计 学 院 信息工程 班 级 物联1301班 学 号 131408119 姓 名 滕玲 一.设计目的 该软件主要是编辑一个学生籍贯信息记录簿记录每个学生信 ...
- c语言程序设计学籍信息,C语言程序设计报告——学生学籍管理(报告).doc
C语言程序设计报告--学生学籍管理(报告) 软件设计报告 题 目: 学生学籍管理系统 院系名称:专业名称:班 级: 班内序号:学生姓名 :指导教师:时间: 一.课程设计目的 1.通过本课程设计,强化上 ...
- C语言课程设计学生籍贯信息,学生籍贯信息记录簿_C语言课程设计.doc
学生籍贯信息记录簿_C语言课程设计 程序设计 课程设计报告 课题名称: 学生籍贯信息记录簿 专业 计算机科学与技术(软件工程)学生姓名 班级学号指导教师完成日期 一 课程设计的目的---------- ...
- 编程实现一个学生成绩管理的简单功能 JAVA
1.编程实现一个学生成绩管理的简单功能 能描述学生的姓名.学号.成绩(单科).能显示学生的个人信息. 能描述教师的姓名.工号,能对学生成绩进行设置.修改.查询. 能描述教务的姓名.工号,能对学生信息进 ...
- excel自定义函数的注释_打印Excel注释的自定义列表
excel自定义函数的注释 If you've added comments to an Excel worksheet, you have a couple of built-in options ...
最新文章
- ORACLE建视图 授权的 例子
- Hessian(C#)介绍及使用说明
- Keepalived - Keepalived 实现 tomcat双机热备
- mysql opaq数据库_MySql数据库
- Tomcat源码调试环境搭建
- java 进制转换 十进制转二,八,十六进制
- ffmpeg调用directshow camera 并sdl渲染
- css样式,后代选择器
- Dynamic Web 2021Crack版,文档扫描和图像捕获
- 电脑没声音怎么调出来?让电脑重新“开口说话”,黑客仅用了2招
- 计算机组成原理浮点运算方法,计算机组成原理第二章 第11讲 浮点运算方法和浮点运算器.ppt...
- AIC,AIB,同德显卡五兄弟,
- Spark3 读写 S3 Parquet, Hive, Hudi
- 如何在Linux系统服务器中重命名目录
- (二)C++头文件与类的声明
- 使用Python和BitTorrentSync定期给Kindle推送电子书
- 各种ADSL MODEM端口影射
- Intellij Idea:禁忌,请勿手残
- 诚邀您体验人工智能AI
- python中的True 和 False详解
热门文章
- vlc 缓冲大小 设置_用libvlc 播放指定缓冲区中的视频流
- 正则不能输入特殊字符_正则表达式语法学习和在线练习
- 用python分析小说_用Python对哈利波特系列小说进行情感分析
- python计算precision,recall,f1-score
- Android之ViewDragHelper
- 小甲鱼 OllyDbg 教程系列 (六) :PJ 软件功能限制(不修改jnz的非爆破方法)
- supervisor安装和配置
- Self Encapsulate Field(自封装字段)
- C++学习之路 | PTA乙级—— 1031 查验身份证 (15 分)(精简)
- jmeter里的连接数_Jmeter之连接问题