这篇文章上次修改于 285 天前,可能其部分内容已经发生变化,如有疑问可询问作者。

今天上班的时候,有同事问我有没有什么方法批量处理一些 Excel 的表格数据。她告诉我,这个表格内容主要记录的是员工的入职时间,此前填表的人写年份只写了两位数,现在想改成四位数。但是这个表格的行数实在是太多了,一行一行手动改可以说是非常麻烦且费时费力。

既然自己之前是做 WPS 软件测试的,那肯定是对一些 API 有所认识的。于是我就花了半个小时左右的时间尝试了一下下,写了个这样的小程序。判断下单元格数值大小,按照条件给单元格内容的开头添加指定的内容就可以了!

源数据处理后
87.091987.09
92.081992.08
19941994
85.091985.09
07.082007.08
08.082008.08
//
09.072009.07
01.122001.12
14.012014.01
07.032007.03
20182018
//
12.032012.03
17.082017.08

逻辑非常简单,首先跳过内容为 / 的单元格,其次跳过出现仅年份,无月份(例如:2010、1998)的单元格,再最后分别检查该单元格值的内容应该是属于哪个年代,大于 20(今年是 2020,不可能有人 2021 入职。公司是 1955 成立的,也没可能出现 1920 年入职的)的情况下就肯定是 2000 年前的,反之就是 2000 年及以后的。

For 循环后面的 526 即为行数,Cells 里面的 1 即为列数(分别对应 Excel 里 A、B、C 这样的顺序)

For i = 1 To 526
    If ActiveSheet.Rows(i).Cells(1).Value = "/" Then
    
    ElseIf ActiveSheet.Rows(i).Cells(1).Value > 1900 Then
    
    Else
        If ActiveSheet.Rows(i).Cells(1).Value > 20 Then
            ActiveSheet.Rows(i).Cells(1).Value = "19" & ActiveSheet.Rows(i).Cells(1).Value
        Else
            ActiveSheet.Rows(i).Cells(1).Value = "20" & ActiveSheet.Rows(i).Cells(1).Value
        End If
    End If
Next i

使用方法很简单,首先点击【文件】菜单 -> 点击【选项】按钮 -> 切换到【自定义功能区】Tab 页 -> 在【主选项卡】下勾选【开发工具】-> 点击【确定】-> 之后切换到【开发工具】选项卡 -> 点击【宏】-> 输入任意名称 -> 点击【创建】打开 VBA 窗口 -> 在代码区域粘贴内容进行修改 -> 点击顶上的【运行】按钮即可。