5

我想做的是让你有一个随机日期列表,它永远不会相同,所以它必须是一个通用公式,但是你得到任何日期,一年中的任何日期,然后每个星期四是一个开始新的一周。对于每个日期,您设置的日期等于星期四,它大于前一个并且小于星期四。

举例说明,因为我含糊不清,假设您得到 2012 年 6 月 24 日。6 月 24 日大于 2012 年 6 月 21 日(上一个星期四),小于 2012 年 6 月 28 日,即下一个星期四。这意味着它应该在其旁边的列中生成 2012 年 6 月 28 日的值。

这有什么意义吗?根据您获得的任何日期值,您计算它应该生成哪个星期四日期?有什么办法可以在excel中做到这一点?

4

4 回答 4

14

此公式将为您提供 A1 中日期之后的星期四

=A1+7-WEEKDAY(A1+2)

如果 A1 是星期四,则返回该日期,如果 A1 是星期四,则应为 A1+7,则更改为该版本

=A1+8-WEEKDAY(A1+3)

于 2012-06-29T10:02:51.033 回答
3
=IF(WEEKDAY(A1) < 5, A1+5-WEEKDAY(A1), A1+5+7-WEEKDAY(A1))

将从 Excel 中单元格 A1 中给出的日期开始给您下一个星期四。如果输入日期是星期四,它将给出下一个星期四。

如果要在给定星期四时显示输入 Thursday,而不是显示下一个星期四,请在条件中使用 <=。

于 2012-06-29T02:20:25.860 回答
0

我知道这个问题已经得到了完美的回答,但是我只想分享一些代码,这些代码可能会帮助任何正在寻找比“星期四”或“星期二”更强大的东西的人。而是想向函数传递一个日期和日期名称,并取回下一个发生的日期。它是一个两部分功能

    Function nextDateofDay(ByVal xdate As Date, ByVal dayOfWeek As String) As 
     Date
      dow = findWeekDayNum(dayOfWeek)
      nextDayofWeek = xdate + 7 - Weekday(xdate + 7 - dow)

     End Function



     Function findWeekDayNum(ByVal dayName As String)
        dayName = Trim(UCase(dayName))
        daysOfWeek = Array("SUNDAY", "MONDAY", "TUESDAY", "WEDNESDAY", 
                            "THURSDAY", "FRIDAY", "SATURDAY")
        'Need to find the day of week of that name, so looping through array
        For j = LBound(daysOfWeek) To UBound(daysOfWeek)
             If daysOfWeek(j) = dayName Then
                 findWeekDayNum = j + 1 ' need to add one cause array index 
                     'starts at 1
                 Exit Function
              End If
        Next j

     End Function

然后如何使用一个将简单地使用该功能

   sub test()
       currentDate = now() ' or can be a date from a cell
       dayDesired = "MONDAY" ' or can also be from a cell
       nextDate = nextDateofDay(currentDate,dayDesired)
       debug.print(nextDate)
   end sub 
于 2021-02-24T15:08:46.970 回答
-1

对于新的 Java 8 Time API,您可以使用以下代码。您需要DayOfWeek.THURSDAY在下面的代码中更改等。

LocalDate date1=LocalDate.now();
// This will give you int value of Day(for eg. Friday) and the date you want to check for

int duration=DayOfWeek.WEDNESDAY.getValue()-date1.getDayOfWeek().getValue();
System.out.println("duration "+duration);
if(date1.getDayOfWeek().equals(DayOfWeek.WEDNESDAY)) {
    System.out.println("Wednesday");
} else {
    date1=date1.plusDays(7).minusDays(7-  duration); 
}
// it will first give next day of week then minus the duration from 7.

System.out.println("new date1 "+date1);
于 2020-04-21T13:33:17.993 回答