我想使用VBA代码将我的数据(日期)从文本转换为日期。
For Each c In Range("B4:B" & Range("B" & Rows.Count).End(xlUp).Row)
c.Value = DateValue(c.Value)
Next c
此代码不适用于其间的空白单元格。显示运行时错误(数据类型错误)。 这段代码:
For Each c In Range("B4:B" & Range("B" & Rows.Count).End(xlUp).Row)
c.Value = CDate(c.Value)
Next c
显示空值的12.00.00 AM。
在粘贴新数据时,将所有文本转换为给定范围内的日期的基本思路。
请提出建议。感谢
答案 0 :(得分:1)
您也可以尝试这样做:Isdate函数检查值是否为date。
For Each c In Range("B4:B" & Range("B" & Rows.Count).End(xlUp).Row)
if Isdate(c.value) then
c.Value = CDate(c.Value)
Else End if
Next c
答案 1 :(得分:1)
这是一个双行代码(这不需要循环)
Sub Sample()
[A1:A20].NumberFormat = "DD/MM/YYYY"
[A1:A20] = [index(IF(A1:A20="","",DATEVALUE(A1:A20)),)]
End Sub
我假设范围来自A1:A20
请根据需要进行更改。
如果您想了解此代码的作用,请参阅我给出的解释Here
这是INDEX
和=IF(A1="","",DATEVALUE(A1))
答案 2 :(得分:0)
根据我的收集情况,您有一系列包含您希望转换为日期的数据的单元格,但该范围内的某些单元格是空白的?你想用空白单元做什么?
如果你想忽略它们,只需添加一个IF语句来满足它们
For Each c In Range("B4:B" & Range("B" & Rows.Count).End(xlUp).Row)
If c.Value <> "" Then
c.Value = DateValue(c.Value)
End If
Next c