【发布时间】:2020-03-31 00:28:32
【问题描述】:
我正在使用从文本文件导入的数据在 Excel 中使用 VBA 处理数字。时间戳数据的格式为“dd-mmm-yyyy hh:mm:ss.000”,整列的数字格式设置为“dd-mmm-yyyy hh:mm:ss.000”。导入后,导入的列与文本文件完全匹配(例如,16-Mar-2020 16:10:15.175)。
作为数字运算的一部分,我将导入的列读入一个名为 timestamp 的变体数组:
Dim timestamp As Variant
timestamp = Range(.Cells(1, Timestamp_Column), .Cells(NumRows, Timestamp_Column))
当我使用断点检查数据时,它被格式化为日期,但没有可见的时间戳。格式为:#16-Mar-20 4:10:15 PM#
然后我将其粘贴到与原始数据具有相同数字格式的目标工作表中:
Private Function FillColumnData(theArray As Variant, transpose As Boolean, _
sheetname As String, destCol As Integer) As Variant
Dim destColRange As Range
Dim tempArray as Variant
Dim maxrow As Long
maxrow = NumRows()
' Transpose the array?
If (transpose) Then
tempArray = TransposeArray(theArray) ' Transpose the array
Else
tempArray = theArray ' The timestamp array is not transposed
End If
With Sheets(sheetname)
Set destColRange = .Columns(destCol)
Set destColRange = destColRange.resize(maxrow, 1)
destColRange.value = tempArray
End With
生成的列是完整的并且与原始列数据匹配,除了所有毫秒值都是 0:例如 original = "16-Mar-2020 16:10:15.175";复制 =“2020 年 3 月 16 日 16:10:15.000”。
将数组粘贴回目标工作表时我可以强制执行什么操作吗?
提前感谢您的帮助!
【问题讨论】:
标签: arrays excel vba datetime milliseconds