如何使用Excel VBA彻底删除日期时间数据中的时间部分

原始带时间的日期数据示例

预期仅保留日期的效果
解决方案
实现原理
Excel中日期时间本质为数值格式,整数部分对应日期,小数部分对应时间,对日期数值取整即可彻底删除时间部分,处理后单元格存储的就是纯日期整数,编辑栏查看时也不会显示时间信息。
VBA代码实现
版本1:小数据量适用(单元格遍历处理)
Sub 批量去除A列时间() Dim targetRng As Range, cell As Range ' 定位A列有数据的区域 Set targetRng = Intersect(Columns("A"), ActiveSheet.UsedRange) Application.ScreenUpdating = False For Each cell In targetRng ' 仅处理合法的日期格式单元格 If IsDate(cell.Value) Then ' 取整删除时间部分 cell.Value = Int(cell.Value) End If Next ' 设置日期显示格式 Columns("A").NumberFormat = "mm/dd/yyyy" Application.ScreenUpdating = True End Sub
版本2:大数据量适用(数组处理,运行效率更高)
Sub 批量去除A列时间_高效版() Dim targetRng As Range, dataArr As Variant, i As Long Set targetRng = Intersect(Columns("A"), ActiveSheet.UsedRange) ' 将区域数据读入数组处理 dataArr = targetRng.Value Application.ScreenUpdating = False For i = 1 To UBound(dataArr, 1) If IsDate(dataArr(i, 1)) Then dataArr(i, 1) = Int(dataArr(i, 1)) End If Next ' 处理完写回单元格 targetRng.Value = dataArr Columns("A").NumberFormat = "mm/dd/yyyy" Application.ScreenUpdating = True End Sub
注意事项
- 处理前建议提前备份原数据,避免操作失误丢失信息
- 如果A列第一行为不需要处理的表头,将循环起始值从
1改为2即可
内容的提问来源于stack exchange,提问作者JackeyOL
相关产品推荐
相关产品推荐

