乐于分享
好东西不私藏

批量提取WORD简历中的出生年月信息,计算平均年龄

批量提取WORD简历中的出生年月信息,计算平均年龄

现有业务需求如下:

简历文件夹内存放有多份Word格式的个人求职简历。作为公司HR,需要对所有投递简历的人员进行平均年龄统计。

具体统计逻辑是从每份简历中提取应聘人员的出生年月,用当前年份减去出生年份,核算出单个人的年龄;汇总所有简历对应的人员年龄,再除以简历总人数,即可得出所有应聘者的平均年龄。

简历样式如下所示,但是出生年月的信息并不一定在固定的位置。

下面的两份简历,我就只给出表头信息。

测试代码:

Option ExplicitSub GetAverageAge()    Dim wdcx As Object    Set wdcx = CreateObject("word.application")    Dim ss As String    ss = Dir(ThisWorkbook.Path & "\简历\")    Do        Dim wd As Object        Set wd = wdcx.documents.Open(ThisWorkbook.Path & "\简历\" & ss)        wdcx.Visible = True        With wd.tables(1).Range            Dim i As Long            For i = 1 To .Cells.Count                Dim t As String, y As String, j As Integer, h As Integer, xx As Integer, s As Long                t = .Cells(i).Range                If t Like "*出生年月*" Then                    y = Left(.Cells(i + 1).Range, Len(.Cells(i + 1).Range- 1)                    j = Year(Date)                    h = VBA.Year(y)                    xx = j - h                    s = s + xx                    Exit For                End If            Next i        End With        wd.Save        wd.Close        Dim n As Long        n = n + 1        ss = Dir    Loop Until ss = ""    wdcx.Quit    Set wdcx = Nothing    Set wd = Nothing    MsgBox "平均年龄是" & VBA.Round(s / n, 0& "岁"End Sub

运行结果:

我们进行数据验算:张三出生日期为 2001  4  5 日,按统计口径计为 25 岁;李四出生日期为 2022  21 日,计为 24 岁;王五出生日期为 2023  10  9 日,计为 23 岁。经核算,整体平均年龄为 24 岁,计算结果无误。

这里我们重点说明一下第21行代码,也就是提取“出生年月”的那行代码。为什么要用i+1,因为关键字“出生年月”在i单元格的话,那么i+1就是出生年月。

那后面为什么又要减1呢?Word 单元格最后会带一个看不见的结束符号,必须去掉才能正常转日期。

然后说一下26代码,不要这行也是可行的。之所以加上这行,是为了提高效率,也就是说,只要我们匹配到了出生年月,就退出循环,没有必要再去往下匹配其他的单元格,况且再去遍历其他的单元格也没有任何意义。

需要说明的是,本次统计并未采用周岁计算标准。本示例主要用于演示整体解决思路,为后续处理同类业务需求提供参考方法。

今天的分享就到这儿啦,非常感谢您对“Python SQL审天下公众号的关注和点赞。如果您觉得我的公众号能给您带来一丝丝的收获,请多多转发给您的朋友圈,让更多的人看到并了解。也许您不经意间的点赞和转发,会给他人带来独特的体验和感受。