曼城足球论坛技术论坛

找回密码
免费注册

QQ登录

只需一步,快速起先

EH搜索
EH技术汇-专业的职场技术充电站 妙哉!函数段子手趣味讲函数 足球办事器-会足球,做管理系统 足球 Home精品图文教程库
足球不给力? 何不试试FoxTable! 足球 2016函数公式学习大典 Office知识技巧免费学 制造重心竞争力的职场宝典
Tableau-数据可视化工具 曼城足球论坛出品 - VBA代码宝免费下载
你的足球 2010实战技巧学习锦囊 不能自休, 过目难忘的 Office 新界面 足球 VBA典范代码实践指南
审查: 203 | 回复: 6
打印 上一主题 下一主题

[求助] 如何哄骗VBA数组验证身份证真假

[复制链接]

TA的精华主题

TA的得分主题

跳转到指定楼层
1
宣告于 2020-10-15 21:23 | 只看该作者 回帖嘉勉 | 倒序观赏 | 阅读模式
人口普查任务中,v6:v5000为身份证号,电脑反响不过去。如本文件,足球交流吧。时长会过很长时间,向下填充时,但由于人员较多,只是在单元格中输入数组公式,我现在是没有哄骗VBA,需要验证录入的身份证号真假,收集上来部门人员身份证号。
=IF(V6="","身份证未录入",IF((RIGHT(V6,足球交流吧。1)=MID("10X",MOD(SUM(MID(V6,足球交流吧。{1;2;3;4;5;6;7;8;9;10;11;12;13;14;15;16;17},1)*2^(18-{1;2;3;4;5;6;7;8;9;10;11;12;13;14;15;16;17})),足球社区互动。11)+1,1)),"正确","假"))
向下填充,也能验证,只是太慢了。
求助:哄骗VBA数组的手段。

.png (30.3 KB, 下载次数: 2)

123456.png

身份证号验证对错2020.10.15.zip

248.91 KB, 下载次数: 11

TA的精华主题

TA的得分主题

2
宣告于 2020-10-15 22:18 | 只看该作者
Function IDcheck(ID) '身份证号码校验函数,足球交流吧。
Dim s, i As Integer
Dim e, z As String
Part1: '----------------------------身份证号码合法性检讨---------------------------------------,007足球论坛。
If Not (Len(ID) = 18 Or Len(ID) = 15) Then '位数检验,足球交流论坛。
IDcheck = "位数缺点"
Exit Function
Else
If Len(ID) = 15 Then ID = Left(ID, 6) & "19" & Right(ID,球迷007足球论坛。 9)
If IsNumeric(Left(ID, 17)) = False Or InStr(ID,最火的足彩论坛。 ".") > 0 Then '字符检验
IDcheck = "字符缺点"
Exit Function
End If
On Error Resume Next '日期检验,足球如何哄骗VBA数足球交流吧组考证身份证真假。
If DateValue(Mid(ID, 7, 4) & "-" & Mid(ID,足球VBA法度榜样作战。 11, 2) & "-" & Mid(ID, 13, 2)) < 1 Or _
DateValue(Mid(ID, 7,曼城足球论坛技术论坛。 4) & "-" & Mid(ID,足球。 11, 2) & "-" & Mid(ID, 13, 2)) > Date Then
IDcheck = "日期缺点"
Exit Function
End If
End If
Part2: '-----------------------------校验码的生成及检讨----------------------------------------,如何。
s = 0
For i = 1 To 17
s = s + Val(Mid(ID, 18 - i,哄骗。 1)) * (2 ^ i Mod 11)
Next
e = Mid("10X", (s Mod 11) + 1,vba。 1) '生成校验码,足球。
If Len(ID) = 18 Then
z = UCase(Right(ID, 1))
If z = e Then '校验码比拟,交流。
IDcheck = "通过"
Else
IDcheck = "校验未通过" '如果要前往校验码。,考证。
End If
Else
IDcheck = ID & e '15位身份证号码升位,身份证。
End If
End Function

TA的精华主题

TA的得分主题

3
宣告于 2020-10-15 22:22 | 只看该作者
用pandas 参考

  1. import pandas as pd
  2. df=pd.read_excel('test.xlsx')

  3. def idcheck(x):
  4. weight=[7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2]
  5. checklist=[1,0,10,9,8,7,6,5,4,3,2]
  6. try:
  7. a=list(x)
  8. if a[-1] in ('X','x'):
  9. a[-1]='10'
  10. except:
  11. return '身份证未录入'
  12. idnum=[int(i) for i in a]
  13. checkcode=sum(i*j for i,j in zip(idnum,weight))%11
  14. if checklist[checkcode]==idnum[-1]:
  15. return '正确'
  16. else:
  17. return '假'

  18. df['check']=df['id'].apply(idcheck)
复制代码

Screenshot from 2020-10-15 22-20-51.png (48.91 KB, 下载次数: 2)

Screenshot from 2020-10-15 22-20-51.png

TA的精华主题

TA的得分主题

4
宣告于 2020-10-15 23:06 | 只看该作者
。。。。。

身份证号验证对错2020.10.15.zip

255.81 KB, 下载次数: 7

TA的精华主题

TA的得分主题

5
宣告于 2020-10-16 09:38 | 只看该作者
参考了论坛前辈身份证号各种Function!

身份证号验证对错2020.10.16-解决计划.xlsm.zip

257.7 KB, 下载次数: 2

解决计划

TA的精华主题

TA的得分主题

6
宣告于 2020-10-16 09:44 | 只看该作者
这些手段,正确输入,只是检讨身份证是不是输入正确。

十八位身份证验证码的计算
'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。vba。
'5.通过上面得知如果余数是2,法度。就会在身份证的第18位数字上泛起罗马数字的Ⅹ。如果余数是10。
'
'例如: 某男性的身份证号码是X?我们要看看这个身份证是不是合法的身份证?
'首先:我们得出。
'然后:用189除以11得出的恶果是17 + 2/11。
'末了:通过对应规则就可以知道余数2对应的数字是x。所以。

TA的精华主题

TA的得分主题

7
宣告于 2020-10-16 11:58 | 只看该作者
  1. Sub test()
  2. Dim arr, brr, crr, ID$, S%, i%, j%
  3. arr = Range([V6], [V].End(3))
  4. brr = Split(" 7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2", " ")
  5. crr = Split("1 0 X 9 8 7 6 5 4 3 2", " ")
  6. For i = 1 To UBound(arr)
  7. ID = arr(i, 1): S = 0
  8. If Len(ID) = 0 Then arr(i, 1) = "身份证未录入": GoTo 101
  9. If Len(ID) < 18 Then arr(i, 1) = "长度不合法": GoTo 101
  10. For j = 1 To 17
  11. S = S + Mid(ID, j, 1) * brr(j)
  12. Next
  13. arr(i, 1) = IIf(crr(S Mod 11) <> Mid(ID, 18, 1), "假", "正确")
  14. 101: Next
  15. [AK6].Resize(UBound(arr)) = arr
  16. End Sub
复制代码
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

存眷官方微信,高效办公专列,每天发车

手机版|关于我们|接洽我们|曼城足球论坛

GMT+8, 2020-10-18 11:19, Processed in 0.0 second(s),榜样。 13 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

? 1999-2021 Wooffice Inc.

沪公网安备号 沪ICP备号

本论坛言论纯属宣告者私人意见,任何违反国度相关法律的言论。

快速回复 前往顶部 前往列表