下面介绍这个小助手的两种制作方法(两种制作方法适合不同性质的学校使用,同时也适合不同阶段查错时使用)。
方法一:新建一个工作薄(使用2010版以下的电子表格),建立两个工作表:“检查”、“字典”。在“字典”工作表里,完成如下操作:
1.在第一、二行的“CD”列下方设置一个命令按钮(方法:点击“视图”菜单下“工具栏”中的“控件工具箱”,打开“控件工具箱”后,点击工具箱左边第一个 “设计模式”图标,再点击左数第六个“命令按钮”图标,在C列和D列下方拖曳鼠标画出“命令按钮”)。右击“命令按钮”选择“属性”,在“属性”窗口修改“Caption”右侧内容为“获取行政区划码”。
2.双击“获取行政区划码”命令按钮,在打开的代码窗口中,输入以下代码(加粗代码不用输入):
Private Sub CommandButton1_Click()
Dim m, n, i, j, rows_zdsj, rows_xssj, rows_a As Integer
Dim Msg_hk, name_str As String
Dim find_qh As Boolean
Msg_hk = "没有找到户籍所在地的人员有:" Chr(13)
Msg_hk = Msg_hk "行 姓名 身份证号码 " Chr(13)
Range("A3:J10000").Delete
MsgBox "选择含有字典的学生数据模板文件", vbInformation, "提醒"
Dim tmpFileName As String, FileNumber As Integer
Dim myWorkbook, heWorkBook As Workbook, tmpFileList, tmpFileIndex As Long
tmpFileList = Application.GetOpenFilename("Data File(*.xls),*.xls", , "选择文件", , MultiSelect:=False)
If VarType(tmpFileList) = vbBoolean Then
Exit Sub
Else
Application.ScreenUpdating = False
Application.StatusBar = "数据处理中,请稍等..."
Application.DisplayAlerts = False
Set myWorkbook = Workbooks(1)
Set heWorkBook = Workbooks.Open(tmpFileList, 0, vbReadOnly)
rows_zdsj = heWorkBook.Worksheets("字典").[A65536].End(xlUp).Row
rows_xssj = heWorkBook.Worksheets("学生基础信息").[A65536].End(xlUp).Row
heWorkBook.Worksheets("字典").Range("A1:A" rows_zdsj).Copy myWorkbook.Worksheets("字典").Range("A3")
heWorkBook.Worksheets("学生基础信息").Range("A3:E" rows_xssj).Copy myWorkbook.Worksheets("检查").Range("A3")
heWorkBook.Close
Columns("A:C").Select
Selection.NumberFormatLocal = "@"
Range("A3").Select
Columns("A:A").ColumnWidth = 48
Columns("B:B").ColumnWidth = 40
Columns("C:C").ColumnWidth = 13
Range("B3") = "行政区域名称" Range("C3") = "行政区划码"
Range("A3:C3").Interior.ColorIndex = 37
j = 4
name_str1 = ""
Do While j = [A65536].End(xlUp).Row
name_d = InStr(Range("A" j), "(")
name_str2 = Range("A" j)
Range("B" j) = Left(name_str2, name_d - 1)
name_str1 = Right(Range("A" j), 13)
j = j + 1
Loop
i = 37
name_str = ""
Do While i = Worksheets("字典").[A65536].End(xlUp).Row
If Right(Range("C" i), 10) = "0000000000" Then
name_str = Range("B" i)
Else
If Right(Range("C" i), 8) "00000000" Then
Range("B" i) = name_str Range("B" i)
End If
End If
i = i + 1
Loop
Range("A3").Select
Worksheets("检查").Activate
With Worksheets("检查")
.Range("F3") = "户口所在地"
.Range("A3:F3").Interior.ColorIndex = 35
.Columns("D:D").ColumnWidth = 12
.Columns("E:E").ColumnWidth = 30
.Columns("F:F").ColumnWidth = 40
rows_a = .[A65536].End(xlUp).Row
For m = 4 To rows_a
find_qh = False
n = 2
Do While Not (find_qh) And n = Worksheets("字典").[A65536].End(xlUp).Row
If Left(.Range("E" m), 6) "000000" = Worksheets("字典").Range("C" n) Then
find_qh = True
.Range("F" m) = Worksheets("字典").Range("B" n)
Else
n = n + 1
End If
If find_qh = True Then GoTo line1
Loop
If Not (find_qh) Then
Msg_hk = Msg_hk m " " .Range("A" m) " " .Range("E" m) Chr(13)
.Range("A" m ":E" m).Interior.ColorIndex = 33
End If
line1:
Next m
End With
MsgBox Msg_hk
End If
Application.StatusBar = False
Application.DisplayAlerts = True
End Sub
点击工具箱第一个“退出设计模式”图标。完成“字典”的代码录制。
3. 点击“获取行政区划码”命令按钮,即可一键完成行政区划码的检查与户口所在地信息的录入(前提是学生的姓名、身份证号信息已全部录入,并已点击“批量自动生成”按钮生成行政区划码)。
执行结果说明:如果姓名等字段以蓝色背景显示,同时“户口所在地”为空,说明该生自动生成的行政区划码是错误的。可根据该生学籍档案信息录入“户口所在地”,最后把全部的户口所在地信息重新复制到数据模板中,同时到“字典”中查询错误信息对应的正确行政区划码进行数据模板中区划码的修改。
此方法适合录入身份证信息后使用(尤其适合县级校或初次录入基本信息时使用)。因为它不仅可以检查出错误的行政区划码,还可以减少我们录入户口所在地时的文本信息录入量。
方法二:新建一个工作薄(使用2010版以下的电子表格),建立两个工作表:“检查”、“字典”
一、“字典”工作表的建立
Private Sub CommandButton1_Click()
Dim i, j, rows_zdsj, rows_xssj, rows_a As Integer
Dim find_qh As Boolean
MsgBox "选择含有字典的学生数据模板文件", vbInformation, "提醒"
Dim tmpFileName As String, FileNumber As Integer, c As Range
Dim myWorkbook, heWorkBook As Workbook, tmpFileList, tmpFileIndex As Long
tmpFileList = Application.GetOpenFilename("Data File(*.xls),*.xls", , "选择文件", , MultiSelect:=False)
If VarType(tmpFileList) = vbBoolean Then
Exit Sub
Else
Application.ScreenUpdating = False
Application.StatusBar = "数据处理中,请稍等..."
Application.DisplayAlerts = False
Set myWorkbook = Workbooks(1)
Set heWorkBook = Workbooks.Open(tmpFileList, 0, vbReadOnly)
rows_zdsj = heWorkBook.Worksheets("字典").[A65536].End(xlUp).Row
heWorkBook.Worksheets("字典").Range("A1:A" rows_zdsj).Copy myWorkbook.Worksheets("字典").Range("A3")
heWorkBook.Close
Columns("A:C").Select
Selection.NumberFormatLocal = "@"
Range("A3").Select
Columns("A:A").ColumnWidth = 48
Columns("B:B").ColumnWidth = 40
Columns("C:C").ColumnWidth = 13
Range("B3") = "行政区域名称"
Range("C3") = "行政区划码"
Range("A3:C3").Interior.ColorIndex = 37
j = 4
name_str1 = ""
Do While j = [A65536].End(xlUp).Row
name_d = InStr(Range("A" j), "(")
name_str2 = Range("A" j)
Range("B" j) = Left(name_str2, name_d - 1)
name_str1 = Right(Range("A" j), 13)
j = j + 1
Loop
i = 37
name_str = ""
Do While i = Worksheets("字典").[A65536].End(xlUp).Row
If Right(Range("C" i), 10) = "0000000000" Then
name_str = Range("B" i)
Else
If Right(Range("C" i), 8) "00000000" Then
Range("B" i) = name_str Range("B" i)
End If
End If
i = i + 1
Loop
Range("A3").Select
End If
Application.StatusBar = False
Application.DisplayAlerts = True
End Sub
点击工具箱第一个“退出设计模式”图标。完成“字典”的代码录制。
3. 点击“获取行政区划码”命令按钮,在“字典”工作表中创建行政区划码查询信息(此命令执行一次即可)。
二、“检查”工作表的建立
Dim m, n, rows_adsj, rows_xssj, rows_a As Integer
Dim find_qh As Boolean
Range("A3:J10000").Delete
MsgBox "选择已录完信息的学生数据模板文件", vbInformation, "提醒"
Dim tmpFileName As String, FileNumber As Integer, c As Range
Dim myWorkbook, heWorkBook As Workbook, tmpFileList, tmpFileIndex As Long
tmpFileList = Application.GetOpenFilename("Data File(*.xls),*.xls", , "选择文件", , MultiSelect:=False)
If VarType(tmpFileList) = vbBoolean Then
Exit Sub
Else
Application.ScreenUpdating = False
Application.StatusBar = "数据处理中,请稍等..."
Application.DisplayAlerts = False
Set myWorkbook = Workbooks(1)
Set heWorkBook = Workbooks.Open(tmpFileList, 0, vbReadOnly)
rows_xssj = heWorkBook.Worksheets("学生基础信息").[A65536].End(xlUp).Row
heWorkBook.Worksheets("学生基础信息").Range("A3:E" rows_xssj).Copy myWorkbook.Worksheets("检查").Range("A3")
heWorkBook.Worksheets("学生基础信息").Range("R3:R" rows_xssj).Copy myWorkbook.Worksheets("检查").Range("F3")
heWorkBook.Close
Range("A3").Select
Worksheets("检查").Activate
With Worksheets("检查")
.Range("F3") = "行政区划码 "
.Range("A3:F3").Interior.ColorIndex = 35
.Columns("D:D").ColumnWidth = 12
.Columns("E:E").ColumnWidth = 30
.Columns("F:F").ColumnWidth = 30
rows_a = .[A65536].End(xlUp).Row
For m = 4 To rows_a
find_qh = False
n = 2
Do While Not (find_qh) And n = Worksheets("字典").[A65536].End(xlUp).Row
If Range("F" m) = Worksheets("字典").Range("C" n) Then
find_qh = True
Else
n = n + 1
End If
If find_qh=True Then Goto line1
Loop
If Not (find_qh) Then
Range("G" m) = "错误"
End If
Line1:
Next m
End With
End If
Application.StatusBar = False
Application.DisplayAlerts = True
End Sub
点击工具箱第一个“退出设计模式”图标。完成“检查”的代码录制。
3. 点击“开始检查”命令按钮,选择数据模板文件(该模板中已录完新生身份证信息),即可检查出错误的行政区划码,对出现“错误”的行政区划码进行修改后即可上传。
4. 多次点击“开始检查”命令按钮,即可完成对多个新生模板信息的区划码检查。
执行结果说明:错误的行政区划码以蓝色背景显示其姓名等信息,同时“行政区划码”字段后方显示“错误”两字。
此方法尤其适合省(地市州)校对所属各县市校上报的数据进行二次检查使用,当然它也适合录完信息后对行政区划码的第二次查错使用。
两种查错方法的区别:方法一是根据身份证号来检查区划码的错误,方法二是对已录入的区划码来检查错误。各位老师可根据自己的需要来选择使用哪种方法查错。建议实际使用时,在录入新生的姓名和身份证号后,可用方法一来检查区划码的错误与户口所在地的输入。在录完全部信息后,用方法二再次重查一下是否有错误的区划码。两次查过后,相信不会再有错误的区划码。