VBA Преобразование даты на номер недели

В VBA я хочу конвертировать дату как 03/11/2017 (DD / MM / YYYY) в номер недели для этой даты.

До сих пор у меня есть следующий код:

'geting the date out of the string HeadlineTemp = Mid(VRHeadline, InStr(VRHeadline, "[") + 1, 10) 'switch "." to "/" HeadlineTemp = Replace(HeadlineTemp, ".", "/") 'convert to a date FristVRFirstKW = CDate(HeadlineTemp) 

Теперь мне нужна функция для преобразования этой даты в номер недели года. Первый день недели – понедельник.

Чтобы сделать номер недели с понедельником в первый день, используйте следующее:

 WorksheetFunction.WeekNum(now,vbMonday) 

Будьте осторожны, когда дело доходит до недельных чисел, так как существуют разные определения. Определение Excel отличается от определения ISO. Чтобы получить использование идентификационного номера ISO (скопировано с http://www.rondebruin.nl/win/s8/win001.htm )

 Public Function IsoWeekNumber(d As Date) As Integer Dim d2 As Long d2 = DateSerial(Year(d - Weekday(d - 1) + 4), 1, 3) IsoWeekNumber = Int((d - d2 + Weekday(d2) + 5) / 7) End Function 

Используя VBA, чтобы преобразовать дату в isoWeeknumber, вам просто нужна функция DatePart (где DT – дата интереса):

 isoWeekNumber = DatePart("ww", DT, vbMonday, vbFirstFourDays) 

Если вы хотите использовать другие определения, чем указано в ISO 8601, FirstWeekOfYear некоторые другие параметры для FirstDayOfWeek и FirstWeekOfYear

WeekdayName( number, [abbreviate], [firstdayofweek] ) WeekdayName(2) Результат: 'Monday'

WeekdayName(2, TRUE) Результат: «Mon»

WeekdayName(2, TRUE, vbMonday) Результат: «Mon»

Итак, это моя последняя и отлично работающая версия

 Public Function IsoWeekNumber(d As Date) As String Dim kwtemp As String kwtemp = DatePart("ww", d, vbMonday, vbFirstFourDays) If Len(kwtemp) = 1 Then kwtemp = "0" & kwtemp IsoWeekNumber = kwtemp End Function If Application.International(xlMDY) = True Then HeadlineTemp = Mid(VRHeadline, InStr(VRHeadline, "[") + 1, 10) HeadlineTemp = Replace(HeadlineTemp, ".", "/") HeadlineTemp = Mid(HeadlineTemp, 4, 3) & Left(HeadlineTemp, 2) & Right(HeadlineTemp, 5) VRFirstKW = CDate(HeadlineTemp) HeadlineTempEndKW = Mid(VRHeadline, InStr(VRHeadline, "]") - 10, 10) HeadlineTempEndKW = Replace(HeadlineTempEndKW, ".", "/") HeadlineTempEndKW = Mid(HeadlineTempEndKW, 4, 3) & Left(HeadlineTempEndKW, 2) & Right(HeadlineTempEndKW, 5) VREndKW = CDate(HeadlineTempEndKW) VRKW = "KW" & IsoWeekNumber(VRFirstKW) & "-" & IsoWeekNumber(VREndKW) & "/" & Year(VREndKW) Else 'don't switch position of the month with days HeadlineTemp = Mid(VRHeadline, InStr(VRHeadline, "[") + 1, 10) HeadlineTemp = Replace(HeadlineTemp, ".", "/") VRFirstKW = CDate(HeadlineTemp) HeadlineTempEndKW = Mid(VRHeadline, InStr(VRHeadline, "]") - 10, 10) HeadlineTempEndKW = Replace(HeadlineTempEndKW, ".", "/") VREndKW = CDate(HeadlineTempEndKW) VRKW = "KW" & IsoWeekNumber(VRFirstKW) & "-" & IsoWeekNumber(VREndKW) & "/" & Year(VREndKW) 
  • PHPExcel - Получить дату с форсированным форматом
  • Проверка данных Excel
  • отправка электронной почты в код VBA
  • ВОЗВРАТИТЕ МЕЖДУ ДАННЫМ ДАННЫМ И НАЙДИТЕ КАЖДОЙ ДАТЫ
  • Расчет даты и времени Excel
  • Даты в Excel форматируются как ММ-ДД-ГГГГ, но Excel распознается как DD-MM-YYYY
  • Selenium Webdriver: поле Date заполняется переданной строкой, но позже изменяется на другую дату, как только фокус изменяется
  • Идентификатор соответствия, если идентификаторы совпадают, проверьте, существует ли определенная дата между датой начала и окончания
  • Excel-Formular - Получить последний рабочий день
  • Преобразовать короткую дату в длинную дату в всплывающем окне ввода
  • Суммирование на основе> = даты
  • Interesting Posts

    Как вставлять строки в столбцы из другого листа?

    Excel sumif только тогда, когда все являются непустыми ячейками

    Получите самые низкие значения больше нуля

    Использование xlsread в MATLAB для чтения числовых и строковых данных

    Функция Excel не работает, даже когда она использовалась несколько раз ранее в том же документе

    apache poi применяют один стиль к разным книгам

    Out range Ошибка при попытке скопировать лист

    как отправить группуSMS в php

    Ошибка синтаксиса VBA с использованием Dir, имеющего контент и подстановочные знаки

    Хотите, чтобы расширенный фильтр сортировки, который искал конкретную комбинацию букв в определенном столбце, независимо от его сообщений и предварительных писем

    как извлечь текст после определенного слова в Excel

    Скопируйте всю строку в другую таблицу excel, затем удалите только часть строки

    Как получить countifs для выбора всех непустых ячеек в Excel?

    Что я должен использовать для базы данных?

    Ожидаемый конец ошибки Statement для простой вставки формулы

    Давайте будем гением компьютера.