【问题标题】:Find the next Wednesday寻找下周三
【发布时间】:2019-12-27 10:41:50
【问题描述】:

我正在尝试显示即将到来的第一个星期三的日期,以显示每周活动的开始时间。

如果是 2019 年 12 月 15 日星期日,那么它将在 2019 年 12 月 18 日星期三返回。

如果是 2019 年 12 月 16 日星期一,那么它将在 2019 年 12 月 18 日星期三返回。

如果是 2019 年 12 月 18 日星期三,那么它将在 2019 年 12 月 25 日星期三返回。

我试过这个功能:

=TODAY()+(7-(WEEKDAY(TODAY(),3)-2))

(为了测试,我将 TODAY() 替换为 A1,其中 A1 是自定义日期:=A1+(7-(WEEKDAY(A1,3)-2))

但在周一和周二,它会返回下周的周三,而不是本周的。

所以我这样解决了:

=IF((WEEKDAY(TODAY(),3)-2)<0, TODAY()-(WEEKDAY(TODAY(),3)-2), TODAY()+(7-(WEEKDAY(TODAY(),3)-2)))

(测试函数:=IF((WEEKDAY(A1,3)-2)&lt;0, A1-(WEEKDAY(A1,3)-2), A1+(7-(WEEKDAY(A1,3)-2)))

但这给我留下了一个大块的 IF 函数。

由于我试图将日期作为变量保留在更复杂的公式中使用,有没有办法在不使用复杂 IF 的情况下更轻松地调整第一个函数?

【问题讨论】:

    标签: date if-statement google-sheets google-sheets-formula array-formulas


    【解决方案1】:

    你可以试试:

    = A1 + 8 - WEEKDAY(A1 + 4)
    

    假设您不想使用if 语句。

    【讨论】:

      【解决方案2】:
      =A1+8-WEEKDAY(A1-3)
      

      算法

      • 在原始日期的基础上增加一周 + 一天,因此我们从一周后开始
      • 减去我们感兴趣的工作日的工作日编号
        • 为此,我们使用MOD(8,7) 代替8,尽管我们可以使用8
        • 工作日(星期三)= 4
        • 所以8-4 --1-4 --> -3

      =A1+8-WEEKDAY(A1+4)
      

      在这种情况下也可以。

      【讨论】:

        【解决方案3】:

        已经有两个非常有用的答案,但这里还有一个简单地使用 return_type 参数的替代方案:

        =A1+8-WEEKDAY(A1,13)

        13 = 数字 1(星期三)到 7(星期二)

        【讨论】:

          【解决方案4】:

          尝试:

          =ARRAYFORMULA(TO_DATE(FILTER(ROW(INDIRECT(VALUE(TODAY()+6)&":"&VALUE(TODAY()))), 
           TEXT(ROW(INDIRECT(VALUE(TODAY()+6)&":"&VALUE(TODAY()))), "ddd")="WED")))
          

          真正的 ArrayFormula 应该是:

          =ARRAYFORMULA(QUERY(TO_DATE(TRANSPOSE(SPLIT(TEXTJOIN(" ", 1, 
           IFNA(A2:A+ROW(INDIRECT("A2:A"&COUNTA(A2:A)+1))^0*COLUMN(A:G)^1)), " "))), 
           "where dayofweek(Col1) = 4", 0))
          


          或更短:

          =ARRAYFORMULA(QUERY(ROW(A1:A6)+TODAY(), 
           "where dayofweek(Col1)=4"))
          


          或更短的数组公式:

          =ARRAYFORMULA(A3:A5+8-WEEKDAY(A3:A5-3))
          

          【讨论】:

            猜你喜欢
            • 2012-10-19
            • 2011-02-19
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2015-01-29
            • 1970-01-01
            相关资源
            最近更新 更多