【问题标题】:If Date & Time changes with certain criteria & time如果日期和时间随着某些标准和时间而改变
【发布时间】:2018-11-02 01:27:33
【问题描述】:

我真的对这个查询摸不着头脑。

如果可能,我需要更新带有特定时间戳的单元格。

星期六、星期日和星期一我希望日期回退到星期五 @ 12:00:00

但是,如果单元格 A1 位于周二、周三、周四、周五。我想使用以下标准/例外将日期和时间设为 -24 小时

另一个问题 如果单元格 A1 具有/包含 >12:00:00 的时间戳,则将日期/时间回溯到前一天 @ 12:00:00

如果单元格 A1 具有/包含

我正在努力实现的示例。

示例 A 降落在 星期六 如果单元格 A1 = 3/11/2018 @ 15:00:00,则回退到 2/11/2018 @ 12:00:00(星期五)

示例 B 降落在 星期日 如果单元格 A1 = 4/11/2018 @ 15:00:00,则回退到 2/11/2018 @ 12:00:00(星期五)

示例 C 降落在 星期四 但在 12:00:00 之后 如果单元格 A1 = 8/11/2018 @ 15:00:00,则回退到 7/11/2018 @ 12:00:00

示例 D 降落在 星期四 但在 12:00:00 之前 如果单元格 A1 = 8/11/2018 @ 07:30:00,则回退到 7/11/2018 @ 10:00:00

这有意义吗?我正在尝试为我的团队自动执行截止时间表,而不是过多地使用 excel。

问候 JW

【问题讨论】:

    标签: excel date datetime


    【解决方案1】:

    非 VBA 选项:

    =IF(WEEKDAY(A2,16)<4,INT(A2-WEEKDAY(A2,16))+0.5,IF((A2-INT(A2))>0.5,INT(A2)-0.5,INT(A2)-1+TIMEVALUE("10:00:00")))

    【讨论】:

    • 嗨@O.PAL,你的回复对我有最大的帮助,但是我有一个小故障..见下面的屏幕转储
    • 如何添加屏幕转储?
    • 原来我无法添加屏幕转储。我遇到的问题是我目前的日期是 24/11/2018 08:00:00(星期六),但它只回滚到 23/11/2018 @ 12:00,我认为应该是 10:00 :00
    • 您好,您特别指出:Saturday, Sunday & Monday I want to have the dates fall back to Friday @ 12:00:00,所以我将其用作规则。
    • 感谢 O.PAL,非常感谢您的帮助。增加额外的条件,如果周六 12:00 之前然后回滚到周五 @ 10:00am 是多么困难
    【解决方案2】:

    我认为这符合您描述的逻辑,但与您期望看到的结果相差甚远。也许将其用作样板,看看我的理解或您的示例(或两者)可能在哪里偏离:

    Function FunWithDates(InputDate As Double) As Date
    
      Dim dow As Integer
      Dim dateOnly As Long
      Dim timeOnly As Double
    
      dateOnly = int (InputDate)
      remainder = InputDate - dateOnly
      dow = Weekday(InputDate)
    
      If dow = 7 Then  ' Saturday
        FunWithDates = dateOnly - 0.5
      ElseIf dow = 1 Then ' Sunday
        FunWithDates = dateOnly - 1.5
      ElseIf dow = 2 Then ' Monday
        FunWithDates = dateOnly - 2.5
      ElseIf remainder > 0.5 Then
        FunWithDates = dateOnly - 0.5
      ElseIf remainder < 0.5 Then
        FunWithDates = dateOnly - 1 + (10 / 24)
      End If
    
    End Function
    

    【讨论】:

    • 编码的一个问题是,当您将Double 转换为Long 数据类型时,该值是四舍五入的,而不是截断的。你没有考虑到这一点。因此,当时间 >= 12:00 时您的错误
    • @RonRosenfeld——我不知道。感谢指正; VBA 在我的工具列表中很远,所以我显然不太了解它
    猜你喜欢
    • 1970-01-01
    • 2019-09-15
    • 1970-01-01
    • 1970-01-01
    • 2021-07-30
    • 2016-05-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多