Как я могу получить номер недели ISO некоторой даты в VBScript или VBA?
Номер недели ISO в VBScript или VBA
Ответы (2)
Во-первых, обратите внимание, что:
- Важно указать неделю год вместе с номером недели, поскольку год даты может быть другим.
- Несколько компонентов Windows содержат ошибку, обнаруженную в последний понедельник нескольких лет.
По моему опыту, самый простой, понятный и надежный способ вычислить это:
Sub WeekNum(someDate, isoWeekYear, isoWeekNumber, isoWeekDay)
Dim nearestThursday
isoWeekDay = WeekDay(someDate, vbMonday)
nearestThursday = DateAdd("d", 4 - Int(isoWeekDay), someDate)
isoWeekYear = Year(nearestThursday)
isoWeekNumber = Int((nearestThursday - DateSerial(isoWeekYear, 1, 1)) / 7) + 1
End Sub
Это также возвращает день недели ISO, начиная с 1 для понедельника.
person
Michel de Ruiter
schedule
26.01.2016
Я предполагаю, что это был вопрос с самостоятельным ответом, это нормально, ТАК поощряет их, но, пожалуйста, улучшите вопрос, он нуждается в небольшом дополнении и в идеале должен показать некоторую попытку решить проблему (даже если у вас, очевидно, уже есть решение ).
- person user692942; 26.01.2016
@Lankymart Я не могу представить, какие изменения улучшат вопрос. ИМХО понятно, конкретно, нетривиально и полезно как есть. Поскольку я нигде больше не нашел ответа на этот вопрос, я подумал, что должен поделиться этим «каноническим» ответом.
- person Michel de Ruiter; 27.01.2016
Достаточно справедливо, просто обычно такой вопрос считается некачественным, как определено в Как спросить
- person user692942; 27.01.2016
Введите любую дату в ячейку A1, затем запустите следующий код...
Range("A2").FormulaR1C1 = "=INT((R1C-DATE(YEAR(R1C-WEEKDAY(R1C-1)+4),1,3)+WEEKDAY(DATE(YEAR(R1C-WEEKDAY(R1C-1)+4),1,3))+5)/7)"
person
Herry Markowitz
schedule
26.01.2016
Отлично подходит для Excel! Но я также думал об Access и Word.
- person Michel de Ruiter; 26.01.2016
Где в вопросе упоминается Excel? По общему признанию, это плохой вопрос, но все же.
- person user692942; 26.01.2016
Это код для получения текущей недели: iThisWeek = DatePart(ww, Date) _ Дата обмена по вашей ячейке или переменной, неделю которой вы хотите узнать.
- person Kathara; 26.01.2016
@Lankymart Херри воспринял VBA как подсказку для Excel.
- person Michel de Ruiter; 27.01.2016