我想要做的是你有一个随机日期列表,它永远不会是相同的所以它必须是一个通用的公式,但你得到任何日期,一年中的任何日期,然后每个星期四是开始新的一周。对于每个日期,您将日期设置为等于星期四,它大于前一个日期并且小于星期四。
示例澄清因为我模糊,说你到2012年6月24日。6月24日大于2012年6月21日(上周四),不到2012年6月28日,是下一个星期四。这意味着它应该在2012年6月28日的旁边的列中生成值。
这有什么意义吗?根据您获得的任何日期值,您可以计算它应该生成哪个星期四的日期?有什么办法在excel中做到这一点吗?
答案 0 :(得分:12)
此公式将为您提供A1日期后的星期四
=A1+7-WEEKDAY(A1+2)
如果A1是星期四,则返回该日期,如果A1为星期四,则应为A1 + 7,然后更改为此版本
=A1+8-WEEKDAY(A1+3)
答案 1 :(得分:1)
=IF(WEEKDAY(A1) < 5, A1+5-WEEKDAY(A1), A1+5+7-WEEKDAY(A1))
将在Excel的Cell A1中给出的下一个星期四给你。如果输入日期是星期四,它将在下周四给出。
如果您希望在星期四给出周四时显示输入,而不是显示下周四,则在条件中使用&lt; =。
答案 2 :(得分:0)
对于新的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);
答案 3 :(得分: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