我有一个excel工作表,其中一个列与日期和日期混合,这些日期和日期已作为文本复制到其中(见下文)。
我不设法将文本类型转换为日期类型,我需要通过VBA来将它添加到一些自动化的工作中。有办法做到这一点吗?
我注意到excel正在寻找这样的格式: 03/09/2016 23:39:57,它不喜欢3/21/16 11:07:22 PM,显然这是我的情况:)我运行的每一个外观(明显的数据错配),在下面的图像中口语列是"C“
thx :)
发布于 2016-03-23 16:41:52
假设非常糟糕的日期是MM/DD/YYYY,那么您可以使用我为您编写的以下代码:
Sub main()
Dim celda As Range
Dim s_date As String
Dim s_time As String
Dim validate_date As String
Dim valid_date As String
Dim date_arr() As String
Dim rango As Range
Dim limit As Long
limit = Columns("B").Find("", Cells(Rows.Count, "B")).Row - 1
Set rango = ActiveSheet.Range("B2:B" & limit)
' works only for date values, another value would return non expected values
For Each celda In rango
validate_date = Left(celda.Value, 1)
If validate_date <> "" Then
If Not celda.Rows.Hidden Then
If validate_date <> "0" Then
s_date = Trim(Mid(celda.Value, 1, InStr(1, celda.Value, " ") - 1))
s_time = Trim(Mid(celda.Value, InStr(1, celda.Value, " "), Len(celda.Value) - InStr(1, celda.Value, " ")))
date_arr = Split(s_date, "/")
valid_date = date_arr(1)
valid_date = valid_date & "/0" & date_arr(0)
valid_date = valid_date & "/" & date_arr(2)
valid_date = valid_date & " " & s_time
celda.Offset(0, 1).Value = CDate(valid_date)
End If
End If
End If
Next celda
End Sub为了使用这段代码,您应该从目标右侧插入一个空列。其次,应该选择整个C列并运行宏。
编辑1.确定,此宏自动选择列B.选择列日期现在不需要.
发布于 2016-03-23 16:04:23
Excel已根据Windows区域设置短日期格式解析了日期。那些它不能解析的(在month>12中)它所留下的文本。由于文本文件中的日期格式与Windows区域设置中的日期格式最初有差异,因此许多以日期(或未格式化数字)形式出现的日期可能被错误地转换。
你有几个选择:
Import上的Get External Data选项卡From Text选项对文本文件进行From Text。这将打开文本导入向导,并允许您指定要导入的数据的日期格式。这可能是两个最简单的选择。第一种方法可以通过VBA实现自动化。第二个,没那么多。
https://stackoverflow.com/questions/36182159
复制相似问题