我想创建一个VBA宏,用正则表达式将工作表中的所有单元格替换为时间格式的文本字符串:
(1[0-2]|[1-9]):[0-5][0-9]:[0-5][0-9] [AP]M
使用单元格地址和工作表名称。我认为调用类似于:
Cells.Replace What:="1:23:45 AM",
Replacement:="=cell(""filename"")&cell(""Address"")", _
LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:= _
False, ReplaceFormat:=False
但我希望我可以将“What:=
”参数设置为正则表达式,或者至少限制在时间格式上。
我该如何做到这一点?
测试数据:请以CSV格式保存以下内容:
00:00,04:27,00:36,04:31,00:00
00:00,00:00,04:18,01:07,10:06
00:00,00:00,00:00,00:00,00:00
最终,该宏将删除所有零次,并用经过评估的公式静态文本替换其他时间=cell("filename")&"!"&cell("address")
对上述输入文件进行操作的结果(我将保存工作表为XLSX):
[ A ] [ B ] [ C ] [ D ] [ E ]
[1] 'Sheet1!$B$1 'Sheet1!$C$1 'Sheet1!$D$1
[2] 'Sheet1!$C$2 'Sheet1!$D$2 'Sheet1!$E$2
[3]
< p > < em >为了简洁起见,我省略了=cell("filename")
函数返回的目录和文件名,尽管上面的内容是我真正想要的。