【问题标题】:VBA macro date formatVBA 宏日期格式
【发布时间】:2019-03-10 02:21:52
【问题描述】:

我的 VBA 宏中的日期格式有问题。 我正在尝试创建宏来分析我从一个看起来像这样的机器人获得的数据日志。

Counter_Red,"04/03/2019 12:54:19",3,1,43528537722.5347

在开始时,我需要将数据拆分为单独的列,然后才能对其进行分析。 当我使用 excel 工具将文本拆分为列时,它工作正常,并且我得到了格式为 day.month.year 的预期结果。

04.3.2019  12:54:19

我创建了宏来为我进行拆分。

 Selection.TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, _
    TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, _
    Semicolon:=False, Comma:=True, Space:=False, Other:=False, FieldInfo _
    :=Array(Array(1, 1), Array(2, 4), Array(3, 1), Array(4, 1), Array(5, 1)),   _
    TrailingMinusNumbers:=True

但是当我使用 VBA 宏来执行此操作时,它总是会更改日期和月份,因此生成的格式为月.日.年。

3.4.2019  12:54:19

谁能告诉我如何修复它,以便我的宏会给我正确的日期格式 day.month.year?

【问题讨论】:

  • 你是否厌倦了设置excel列的格式?
  • 我不认为日期改变了,它只是被格式化了。我猜04/03/2019is mm/dd/yyyy 格式和3.4.2019 is d.m.yyyy 格式。您可以通过显式格式检查这两个日期Format(date,"yyyy-mm-dd")它们应该相同,格式相同。
  • 通常,确保日期是您认为的日期的最佳方法是使用dd-mmm-yyyy 格式(或实际拼写月份的任何其他格式)。 04.3.2019 可能看起来如你所愿(虽然我认为奇怪的是3 之前没有前导零)但不是你所期望的。
  • 非常感谢。格式的显式更改奏效了。

标签: excel vba


【解决方案1】:

J,他们是对的(上图)。就个人而言,如果是 small 的数据量,我会使用 Split 函数将其放入一个 Array 中,然后从那里修改并输出。确实,工作表函数总是比使用数组(尤其是动态数组)更快,并且消耗更少的资源,但也许:

Option Explicit

Function MakeDates()

Dim cellData As String
Dim arr_data() As String
Dim intArr As Integer

cellData = ActiveCell.Value

arr_data = Split(cellData, ",")

For intArr = 0 To UBound(arr_data) - 1
    'getting rid of double-quotes
    arr_data(intArr) = Replace(arr_data(intArr), """", "")
    'formatting date if applicable
    If IsDate(arr_data(intArr)) Then: _
    arr_data(intArr) = Format(arr_data(intArr), "dd-m-yyyy")
    'placing data on Sheet
    ActiveCell.Offset(0, intArr).Value = arr_data(intArr)
Next

End Function

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-11-17
    • 2015-08-31
    • 1970-01-01
    • 1970-01-01
    • 2016-10-27
    • 1970-01-01
    • 2018-01-28
    • 2023-03-20
    相关资源
    最近更新 更多