excel怎么用vba判断生日信息与身份证是否相符

发布网友 发布时间:2022-04-22 23:05

我来回答

3个回答

热心网友 时间:2023-09-24 04:03

因为你提供的信息较少,因而设定了几个假设:

1、身份证号位于A列,生日信息位于B列;

2、第一行作为标题行;

3、生日信息按照“yyyy-mm-dd"格式填写。

如下图:

下面是操作工程:

1、打开vba编辑器<若是已经添加了vba菜单可以直接点击打开,或是通过点击工具栏”工具“》宏》vba编辑器打开,或者同时按下快捷键alt+F11>;

2、输入以下代码:<注意后面的注释>

Sub 身份信息核对()
Dim i!, j!, x$, sfzh$: i = 2
Do Until Cells(i, 1) = "" ‘一直运行本代码直到第一列数据为空时结束
    If Len(Cells(i, 1)) = 15 Then ' 当身份证号为15位时转为18位
        x = "19"
    Else
        x = ""
    End If
        sfzh = Mid(Cells(i, 1), 1, 6) & x & Mid(Cells(i, 1), 7, 13)
        If Mid(sfzh, 7, 4) <> Left(Cells(i, 2), 4) Or Mid(sfzh, 11, 2) <> Mid(Cells(i, 2), 6, 2) Or _
            Mid(sfzh, 13, 2) <> Mid(Cells(i, 2), 9, 2) Then '对身份证号与生日信息的年、月、日分别对比判断是否一致,不一致提示错误。
            j = j + 1
            Cells(i, 3) = "信息有错误"
        Else
            Cells(i, 3) = ""
        End If
    i = i + 1
Loop
If j = 0 Then
MsgBox "未检测到错误信息!"
Else
MsgBox "检测到" & j & "条错误信息!" '信息框显示错误信息的有关情况
End If
End Sub

3、运行本代码以验证效果。<可以点击运行按钮(vba编辑器工具栏内的三角符号),或者在sheet中插入按钮(如下图)>

(1)插入文本框(绘图工具菜单内)

(2)指定宏

(3)然后该按钮就可以运行该宏代码了

附:示例

 

 

热心网友 时间:2023-09-24 04:03

Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
Dim i As Long
If Target.Column = 3 Then
For i = Target.Row To Target.Row + Target.Rows.Count - 1
Range("D" & i) = Mid(Range("C" & i), 7, 8)
If Mid(Range("C" & i), 17, 1) Mod 2 = 0 Then Range("E" & i) = "女" Else Range("E" & i) = "男"
Next
End If
End Sub以上只适用18位身份证,15位的自己发挥一下

热心网友 时间:2023-09-24 04:04

从身份证号码中提取生日,参照公式=TEXT(MID(B2,7,8),"0-00-00"),如下图:

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com