在Excel 2010中将文本转换为date

我想使用VBA代码来将我的数据(date)从文本转换为date。

For Each c In Range("B4:B" & Range("B" & Rows.Count).End(xlUp).Row) c.Value = DateValue(c.Value) Next c 

这段代码不适用于两者之间的空白单元格。 显示运行时错误(数据types错误)。 而这个代码:

  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显示为空值。

当粘贴新数据时,将所有文本转换为给定范围内的date的基本思想。

请提出build议。 谢谢

你也可以试试这个: 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 

这是一个两行代码(这不需要循环)

 Sub Sample() [A1:A20].NumberFormat = "DD/MM/YYYY" [A1:A20] = [index(IF(A1:A20="","",DATEVALUE(A1:A20)),)] End Sub 

在这里输入图像说明

我假设范围是从A1:A20请按适用更改。

如果你想了解这个代码的作用,那么看看我在这里给出的解释

这是INDEX=IF(A1="","",DATEVALUE(A1))

从我能收集到的信息来看,你有一系列希望转化为date的数据的单元格,但该范围内的一些单元格是空白的? 你想用空白单元格做什么?

如果你想忽略它们,只需添加一个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