我有一个包含日期的数据集。 为了报告目的,我需要按周数进行拆分。 到目前为止,我有:
startDate变量,包含03/01/2015(从电子表格中的数据填充)
<link href="https://cdnjs.cloudflare.com/ajax/libs/tippy.js/3.1.3/tippy.css" rel="stylesheet"/>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/tippy.js/3.1.3/tippy.min.js"></script>
<input autocomplete="off" type="text" id="mobilenumber" onkeyup="validateIndianMobile(this);">
这给了我startWeek的第一周
但是我知道需要知道日期在第一周有多远。 因此,在此示例中,由于日期是1月3日,因此它包含第1周的3天
意思是我要汇总的报告只会在3天(而不是整周)内报告
到目前为止,我唯一想到的方法是计算日期是一年中的哪一天,并使用MOD计算(基本上除以7,其余是到星期几)< / p>
startDay = Day(startDate)
startMonth = Month(startDate)
startYear = Year(startDate)
startWeek = Application.WorksheetFunction.WeekNum(DateSerial(startYear, startMonth, startDay))
这确实有效,但是我想知道是否有比此更好的解决方案。
答案 0 :(得分:1)
您可以使用循环来确定startDate
星期数更改前多少天:
Public Sub FindDaysInWeekNo()
Dim startDate As Date
startDate = DateSerial(2015, 1, 3)
Dim startWeek As Integer
startWeek = Application.WorksheetFunction.WeekNum(startDate)
Dim i As Integer
Do While startWeek = Application.WorksheetFunction.WeekNum(DateAdd("d", -i, startDate))
i = i + 1
Loop
Debug.Print i '= 3rd day in this week number
End Sub
下表显示了我与其他建议公式的比较,以及为什么我认为(参考=WEEKNUM
)计算正确。
请注意,如果您假设1月1日至7月1日(第1天至7天),则不能使用WeekNum
函数,因为这会给您带来不同的结果(请参见上表,请注意,根据WeekNum
函数,第一周只有6天。)此外,您也无法命名本周号(因为每个人都称其为周号被定义为https://en.wikipedia.org/wiki/Week#Week_numbering)。
相反,您将需要使用...
Public Function AlternativeWeekNum(startDate As Date) As Integer
AlternativeWeekNum = WorksheetFunction.Days(startDate, DateSerial(Year(startDate), 1, 1)) \ 7 + 1 'note that this no normal division but a integer division and uses a backslash instead
End Function
以其他方式计算周数,然后…
Public Function AlternativeWeekNumDay(startDate As Date) As Integer
AlternativeWeekNumDay = WorksheetFunction.Days(startDate, DateSerial(Year(startDate), 1, 1)) Mod 7 + 1
End Function
计算另一周中的日期。
答案 1 :(得分:0)
您可以为此使用Weekday()
函数:
=WEEKDAY(B4;2)
第二个参数提到您希望如何对天进行计数(从星期日或星期一开始,从0或1开始计数,...)。
答案 2 :(得分:-1)
https://www.example.com/property/villa-alexia/BC-1414?tes=dfgdf&fcb=5&show_pinned_search=1
http://www.example.com/property/hyat-doral/HA-4509801?show_pinned_search=1
https://www.example.com/property/villa-alexia/BC-1414?tes=dfgdf&fcb=5&show_pinned_search=1
http://www.example.com/property/hyat-doral/HA-4509801?show_pinned_search=1
http://www.example.com/property/hyat-doral/HA-4509801?show_pinned_search=1
https://www.example.com/property/villa-alexia/BC-1414?tes=dfgdf&fcb=5&show_pinned_search=1
只要取正的dayOfWeek = (8 + Weekday(startDate) - Weekday(DateSerial(startYear, 1, 1))) mod 7
mod 7
到当前年份与每年1月1日这一周的日期之差即可。