【发布时间】:2017-09-20 17:01:31
【问题描述】:
我有一个具有 Unix 纪元时间的 CSV。虽然有使用公式将纪元时间转换为日期格式的示例,但我找不到任何将纪元时间的整列(大小可能不同)转换为yyyy-mm-dd 形式的 VBA 示例。我想在宏中做的是
Sub FormatTimeStamp()
Dim tbl As ListObject
Dim sht As Worksheet
For Each sht In ThisWorkbook.Worksheets
For Each tbl In sht.ListObjects
For Each dateCol In tbl.ListColumns
If InStr(dateCol.Name, "timestamp") > 0 Then
dateCol.DataBodyRange.NumberFormat = "yyyy-mm-dd"
End If
Next dateCol
Next tbl
Next sht
End Sub
- 获取工作簿中所有工作表的列表(活动工作表除外)
- 在每个工作表中,读取具有 Epoch Times 的列名(我可以参考 VBA 中的列名吗?)
- 使用
YYYY-MM-DD表单在其旁边创建一个新列(如何在纪元时间的左侧创建一个新列名) - 对于 Epoch 时间中的每个项目,在其自己的列中创建等效的
YYYY-MM-DD表单
【问题讨论】:
-
使用left\mid函数见例子stackoverflow.com/a/34741424/4539709
-
我查看了您分享的示例,但它没有从 yyyy-mm-dd 转换的纪元时间,而是从 yyyymmdd 到 yyyy/mm/dd 的转换。谢谢你的例子
-
我不相信你可以只用数字格式进行转换——现在的纪元时间大约是 1493016379,而 Excel 原始版本是 42849.69869。您必须对每个单元格进行某种计算并覆盖纪元时间值。这是您的预期吗?
-
是的,罗宾,我有几个工作表,其中有一个名为“时间戳”的列。此列时间戳中有纪元时间。我需要将纪元时间转换为 yyyy-mm-dd 并覆盖纪元时间,或者为纪元时间旁边的 yyyy-mm-dd 创建一个新列。我尝试使用数字格式设置它,但运行宏时没有任何反应
-
在
B1公式=(A1/86400)+25569上尝试这个公式公式,假设A1有纪元时间,然后将单元格格式设置为NumberFormat = "yyyy-mm-dd"
标签: excel vba date datetime epoch