首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >VBA -将混合行(数据类型明智)转换为日期

VBA -将混合行(数据类型明智)转换为日期
EN

Stack Overflow用户
提问于 2016-03-23 15:23:03
回答 2查看 197关注 0票数 0

我有一个excel工作表,其中一个列与日期和日期混合,这些日期和日期已作为文本复制到其中(见下文)。

我不设法将文本类型转换为日期类型,我需要通过VBA来将它添加到一些自动化的工作中。有办法做到这一点吗?

我注意到excel正在寻找这样的格式: 03/09/2016 23:39:57,它不喜欢3/21/16 11:07:22 PM,显然这是我的情况:)我运行的每一个外观(明显的数据错配),在下面的图像中口语列是"C“

thx :)

ExcelSheet坏日期格式

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-03-23 16:41:52

假设非常糟糕的日期是MM/DD/YYYY,那么您可以使用我为您编写的以下代码:

代码语言:javascript
复制
   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.选择列日期现在不需要.

票数 1
EN

Stack Overflow用户

发布于 2016-03-23 16:04:23

Excel已根据Windows区域设置短日期格式解析了日期。那些它不能解析的(在month>12中)它所留下的文本。由于文本文件中的日期格式与Windows区域设置中的日期格式最初有差异,因此许多以日期(或未格式化数字)形式出现的日期可能被错误地转换。

你有几个选择:

  1. 使用Import上的Get External Data选项卡From Text选项对文本文件进行From Text。这将打开文本导入向导,并允许您指定要导入的数据的日期格式。
  2. 更改Windows区域设置短日期格式以匹配文本文件中的设置。

这可能是两个最简单的选择。第一种方法可以通过VBA实现自动化。第二个,没那么多。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36182159

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档