如何处理数组及工作表中时间格式:移除冒号并转为数字格式?
时间格式转换与冒号移除解决方案
一、将「HH:MM AM/PM」格式转换为无冒号数字(避免识别为小数)
公式实现
用SUBSTITUTE+VALUE组合处理,先剥离AM/PM、移除冒号,再转为整数类型:
=VALUE(SUBSTITUTE(LEFT(A1,LEN(A1)-3),":",""))
- 逻辑:
LEFT(A1,LEN(A1)-3)去掉字符串末尾的AM/PM;SUBSTITUTE(..., ":", "")移除时间中的冒号;VALUE(...)将处理后的文本转为整数,彻底避免被识别为小数。
VBA实现
针对数组遍历场景,统一适配单/双位数小时,强制转为数值:
Dim NewTime As Variant ' 假设NewTime已读入原始时间数据 Dim i As Long For i = LBound(NewTime) To UBound(NewTime) Dim timeStr As String ' 剥离AM/PM(不区分大小写) timeStr = Trim(Left(NewTime(i), InStr(1, NewTime(i), " ", vbTextCompare) - 1)) ' 移除冒号并转为长整数 NewTime(i) = CLng(Replace(timeStr, ":", "")) Next i ' 将处理后的数组写入目标工作表 Sheets("工作表2").Range("A1").Resize(UBound(NewTime)).Value = NewTime
- 优势:无需区分单/双位数小时,自动适配所有情况;
CLng强制转为整数,彻底解决小数识别问题。
二、移除数组/范围中「HH:MM」格式时间的冒号
公式批量处理
直接在目标单元格使用SUBSTITUTE函数,下拉填充即可:
=SUBSTITUTE(A1, ":", "")
若需转为数值类型,叠加VALUE:
=VALUE(SUBSTITUTE(A1, ":", ""))
VBA数组处理
针对批量数据,读入数组后批量替换,效率更高:
' 读取原始HH:MM数据到数组 Dim timeArr As Variant timeArr = Sheets("工作表1").Range("A1:A100").Value ' 按需调整范围 Dim i As Long For i = LBound(timeArr) To UBound(timeArr) ' 移除冒号,如需转数值则用CLng包裹 timeArr(i, 1) = Replace(timeArr(i, 1), ":", "") Next i ' 写入目标工作表 Sheets("工作表2").Range("A1").Resize(UBound(timeArr)).Value = timeArr
内容的提问来源于stack exchange,提问作者Ryan
相关产品推荐
相关产品推荐

