这篇文章上次修改于 1167 天前,可能其部分内容已经发生变化,如有疑问可询问作者。
今天上班的时候,有同事问我有没有什么方法批量处理一些 Excel 的表格数据。她告诉我,这个表格内容主要记录的是员工的入职时间,此前填表的人写年份只写了两位数,现在想改成四位数。但是这个表格的行数实在是太多了,一行一行手动改可以说是非常麻烦且费时费力。
既然自己之前是做 WPS 软件测试的,那肯定是对一些 API 有所认识的。于是我就花了半个小时左右的时间尝试了一下下,写了个这样的小程序。判断下单元格数值大小,按照条件给单元格内容的开头添加指定的内容就可以了!
源数据 | 处理后 |
---|---|
87.09 | 1987.09 |
92.08 | 1992.08 |
1994 | 1994 |
85.09 | 1985.09 |
07.08 | 2007.08 |
08.08 | 2008.08 |
/ | / |
09.07 | 2009.07 |
01.12 | 2001.12 |
14.01 | 2014.01 |
07.03 | 2007.03 |
2018 | 2018 |
/ | / |
12.03 | 2012.03 |
17.08 | 2017.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 窗口 -> 在代码区域粘贴内容进行修改 -> 点击顶上的【运行】按钮即可。
已有 2 条评论
emmm这个其实可以用条件格式做输出,用
IF 这个函数即可完成你的需求
@小但 所以能说一下具体的操作方法吗?