Excel VBA查找,用字符串中的日期替换纪元时间戳
Posted
技术标签:
【中文标题】Excel VBA查找,用字符串中的日期替换纪元时间戳【英文标题】:Excel VBA to find, replace epoch timestamp with date in string 【发布时间】:2021-11-07 03:27:27 【问题描述】:提前感谢您提供的任何帮助。几天来,我一直在用户论坛上闲逛,完全被难住了。 (另外,我是一个几乎不会拼写“VBA”的新手,但我正在努力!)
我有一个 Excel 电子表格,其中包含用户 cmets 线程的单元格。每条评论前面都有一个 10 位的纪元时间戳。单元格如下所示:
-用户1:我喜欢馅饼。 -用户2:我喜欢 蛋糕。 -用户1:派比蛋糕好。
我想要一个宏,它可以在每个单元格中找到所有纪元时间戳,并将它们替换为人类可读的日期和时间。
我有一个函数可以将一个纪元字符串转换为 Excel 时间(但时间戳必须是单元格中的唯一数据,并且它将日期/时间放在相邻的单元格中)和另一个查找 regEx 字符串的宏并用其他东西代替它。我不知道如何组合它们。
我的历元转换函数是这样的:
Function ux2pst(uts)
ux2pst = Format(DateAdd("s", uts, "12/31/1969 16:00:00"), "MM/DD/YYYY HH:MM")
End Function
我的正则表达式查找/替换应该是这样的,但我不知道如何在 regEx.Replace 语句中包含转换代码:
Sub replaceEpoch()
Dim regEx As Object
Dim r As Range, rT As Range
Set r = Range("B2", Cells(Rows.Count, "B").End(xlUp))
Set regEx = CreateObject("VBScript.RegExp")
regEx.Pattern = "\d10"
regEx.Global = True
For Each rT In r
If rT.Value <> "" Then rT.Value = regEx.Replace(rT.Value, "CONVERTED DATE-TIME??")
Next rT
End Sub
我尝试了一些不同的方法,但都失败了。谁能指出我正确的方向?再次感谢。
【问题讨论】:
【参考方案1】:您需要遍历正则表达式找到的epoch
时间的所有匹配项,将它们传递给函数到ux2pst并用结果替换它们。
Option Explicit
Sub replaceEpoch()
Dim regEx As Object
Dim r As Range, rT As Range
Dim mtch As Object
Set r = Range("B2", Cells(Rows.Count, "B").End(xlUp))
Set regEx = CreateObject("VBScript.RegExp")
regEx.Pattern = "\d10"
regEx.Global = True
For Each rT In r
If rT.Value <> "" Then
For Each mtch In regEx.Execute(rT.Value)
rT.Value = Replace(rT.Value, mtch, ux2pst(mtch))
Next mtch
End If
Next rT
End Sub
Function ux2pst(uts)
ux2pst = Format(DateAdd("s", uts, "12/31/1969 16:00:00"), "MM/DD/YYYY HH:MM")
End Function
【讨论】:
以上是关于Excel VBA查找,用字符串中的日期替换纪元时间戳的主要内容,如果未能解决你的问题,请参考以下文章