【问题标题】:VBA - Replace Date and Time as Day of Week and AM/PMVBA - 将日期和时间替换为星期几和 AM/PM
【发布时间】:2018-05-14 15:25:35
【问题描述】:

我想知道是否有办法将第一部分的 mm/dd/yyyy hh:mm 更改为周一、周二、周三等,第二部分为上午或下午。例如,"12/26/2016 7:29" 在单独的单元格中为 "Monday",在另一个单独的单元格中为 "AM"

我不确定使用Replace 函数是否有用,或者是否还有其他更有用的方法。提前致谢。

【问题讨论】:

  • 另一个单元格中dddd和AM/PM`的自定义数字格式。
  • @Jeeped - 那么,将单元格复制到另外两个单元格中并更改格式?
  • @ACohen 我相信是这样,第二列的格式应该是AM/PM
  • 或在其他单元格中使用公式 TEXT() 并使用正确的格式字符串。
  • 12/26/2016 7:29 在 A1 中将 =a1 在 B1 中,cnf (ctrl+1) 为 dddd。在 C1 中,=a1 和 cnf 为 AM/PM

标签: vba excel date time


【解决方案1】:

A1 中有数据,在 B1 中输入:

=TEXT(A1,"dddd")

并在 C1 中输入:

=RIGHT(TEXT(A1-ROUNDDOWN(A1,0),"[$-F400]h:mm:ss AM/PM"),2)

编辑#1:

这里有一些 UDF() 可以做同样的事情:

Public Function DayOfWeek(r As Range) As String
    Dim d As Date
    d = r.Value
    DayOfWeek = Format(d, "dddd")
End Function

Public Function PreOrPostNoon(r As Range) As String
    Dim d As Date
    d = r.Value
    PreOrPostNoon = Right(Format(d, "[$-F400]h:mm:ss AM/PM"), 2)
End Function

【讨论】:

  • 我使用的是 VBA 格式,所以这看起来会有些不同,对吗?
  • @ACohen 你需要 VBA UDF() 吗??
  • 是的,非常感谢
  • @ACohen 查看我的EDIT#1
【解决方案2】:

您的每个要求都可以通过自定义数字格式来满足。

在 A1 中使用 12/26/2016 7:29=a1 在 B1 中并使用 cnf (ctrl+1) 作为 dddd。在C1中使用相同的=a1公式,使用AM/PM的cnf

对于 VBA,使用 .NumberFormat 属性。

range("b1:c1").value = range("a1").value
range("b1").numberformat = "dddd"
range("c1").numberformat = "AM/PM"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-02-25
    • 2021-03-19
    • 2020-12-14
    • 2021-02-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多