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

现有业务需求如下:
简历文件夹内存放有多份Word格式的个人求职简历。作为公司HR,需要对所有投递简历的人员进行平均年龄统计。
具体统计逻辑是从每份简历中提取应聘人员的出生年月,用当前年份减去出生年份,核算出单个人的年龄;汇总所有简历对应的人员年龄,再除以简历总人数,即可得出所有应聘者的平均年龄。
简历样式如下所示,但是出生年月的信息并不一定在固定的位置。

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


测试代码:
Option ExplicitSub GetAverageAge()Dim wdcx As ObjectSet wdcx = CreateObject("word.application")Dim ss As Stringss = Dir(ThisWorkbook.Path & "\简历\")DoDim wd As ObjectSet wd = wdcx.documents.Open(ThisWorkbook.Path & "\简历\" & ss)wdcx.Visible = TrueWith wd.tables(1).RangeDim i As LongFor i = 1 To .Cells.CountDim t As String, y As String, j As Integer, h As Integer, xx As Integer, s As Longt = .Cells(i).RangeIf t Like "*出生年月*" Theny = Left(.Cells(i + 1).Range, Len(.Cells(i + 1).Range) - 1)j = Year(Date)h = VBA.Year(y)xx = j - hs = s + xxExit ForEnd IfNext iEnd Withwd.Savewd.CloseDim n As Longn = n + 1ss = DirLoop Until ss = ""wdcx.QuitSet wdcx = NothingSet wd = NothingMsgBox "平均年龄是" & VBA.Round(s / n, 0) & "岁"End Sub
运行结果:

我们进行数据验算:张三出生日期为 2001 年 4 月 5 日,按统计口径计为 25 岁;李四出生日期为 2022 年9 月 21 日,计为 24 岁;王五出生日期为 2023 年 10 月 9 日,计为 23 岁。经核算,整体平均年龄为 24 岁,计算结果无误。
这里我们重点说明一下第21行代码,也就是提取“出生年月”的那行代码。为什么要用i+1,因为关键字“出生年月”在i单元格的话,那么i+1就是出生年月。
那后面为什么又要减1呢?Word 单元格最后会带一个看不见的结束符号,必须去掉才能正常转日期。
然后说一下26行代码,不要这行也是可行的。之所以加上这行,是为了提高效率,也就是说,只要我们匹配到了出生年月,就退出循环,没有必要再去往下匹配其他的单元格,况且再去遍历其他的单元格也没有任何意义。
需要说明的是,本次统计并未采用周岁计算标准。本示例主要用于演示整体解决思路,为后续处理同类业务需求提供参考方法。
今天的分享就到这儿啦,非常感谢您对“Python SQL审天下”公众号的关注和点赞。如果您觉得我的公众号能给您带来一丝丝的收获,请多多转发给您的朋友圈,让更多的人看到并了解。也许您不经意间的点赞和转发,会给他人带来独特的体验和感受。
夜雨聆风