【问题标题】:How can I replace part of a timestamp如何替换部分时间戳
【发布时间】:2020-05-19 00:45:30
【问题描述】:

在 VBA Excel 中,我想将 H:m:s 部分中包含 00:00:00 的时间戳替换为值 00:00:01。使用的时间戳的完整格式是 yyyy-mm-dd hh:mm:ss。

当我尝试使用简单的查找和替换时,它不起作用。我认为因为格式是时间戳,因此它不会将其识别为字符串。

【问题讨论】:

  • 请确保在查找替换选项中未选中匹配整个单元格内容。
  • 将 H:m:s 部分中包含 00:00:00 的时间戳替换为值 00:00:01 不确定您的意思。可以举个例子吗?
  • 任何包含 00:00:00 的时间戳我想用相同的日期替换,但将时间更改为 00:00:01

标签: excel vba replace timestamp


【解决方案1】:

如果这些不是 String 数据类型,而是按照您描述的格式格式化的实际数值,您可以检查:

每个公式:

IF(HOUR(A1)+MINUTE(A1)+SECOND(A1)=0,A1+1/86400,A1)

或者:

IF(INT(A1)=A1,A1+1/86400,A1)

每个代码:

If Hour([A1]) + Minute([A1]) + Second([A1]) = 0 Then Range("A1").Value = [A1+1/86400]

或者:

If Int([A1]) = [A1] Then Range("A1").Value = [A1+1/86400]

在上面,将 [A1] 更改为保存日期时间值的变量,并创建一个明确的 Range 引用。

【讨论】:

  • 我认为这为我指明了正确的方向。然而,我现在创建的输出是#NAME?知道如何解决这个问题吗?谢谢
  • @AnoukMaaskant,我猜你是荷兰人?然后使用对应的荷兰语:=ALS(UUR(A1)+MINUUT(A1)+SECONDE(A1)=0;A1+1/86400;A1) =)。此外,如果这有帮助,请不要忘记点击答案左侧的复选标记来接受答案。
  • 或:=ALS(INTEGER(A1)=A1;A1+1/86400;A1)
  • @AnoukMaaskant,你运气好吗?如果这回答了你的问题。您应该通过单击答案左侧的复选标记来接受它。
  • 不幸的是,没有。我的 Excel 是英文的,所以更改公式名称没有帮助。然而,我现在将结束这个话题,因为我已经从 VBA 转移到另一个解决方案。感谢您的帮助。
【解决方案2】:

你要改变单元格的格式,excel中的value是一样的。

选择要以某种方式显示的单元格,进入格式 -> 自定义 ->

类型:

hh:mm:ss

【讨论】:

    猜你喜欢
    • 2020-07-04
    • 2020-09-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-06
    • 1970-01-01
    • 2017-11-04
    相关资源
    最近更新 更多