Необходимо изменить дату на текущую рабочую неделю (1-52), но перейти к следующей неделе, если день ср. - сб. В VBA - PullRequest
0 голосов
/ 29 мая 2019

У меня проблемы с написанием кода на VBA, который позволил бы мне вводить любую заданную дату, а затем выводить текущую рабочую неделю.Мне нужно ограничение: если с воскресенья по вторник будет сохранена текущая рабочая неделя и год, но если будет среда со субботы, то будет показана следующая рабочая неделя и год.Например, я ищу ввод (28.05.19) и вывод 201922 или ввод (29.05.19) с 201923, хотя технически это та же рабочая неделя.

Прежде чем углубляться в детали, у меня есть рабочая функция, которая предоставляет год и рабочую неделю, но я пытаюсь адаптировать эту функцию или добавить отдельную функцию, которая будет изменяться на следующую рабочую неделю в соответствии с заданнымdate.

Я новичок в VBA, но в последние несколько дней пытался провести небольшое исследование.Я думал, что мог бы как-то иметь один ввод даты, а затем два вывода, где один будет годом и рабочей неделей, а другой будет числом, связанным с этой датой (1 для воскресенья, 2 для понедельника и т. Д.),Я попытался создать оператор if then, который говорит, что если число, связанное с этой датой, равно 1, 2 или 3, то рабочая неделя останется прежней.Если бы это был какой-то другой номер, то 1 был бы добавлен к той рабочей неделе, чтобы он перешел к следующей.У меня проблемы с попыткой сделать два выхода и подключить их, если это имеет смысл.

Это код, который я пытался создать, но постоянно терпел неудачу при создании.Функция, которая дает правильную рабочую неделю (без адаптации рабочей недели на основе дня недели): WWV1

Function WWV2(WeekdayName As Integer)


Dim WWV1 As Integer

If WeekdayName(Date) = 1 Or 2 Or 3 Then WWV1 = WWV1

Else: WWV1 = WWV1 + 1


End Function

Это дает ячейке #NUM!когда я использую функцию в этой ячейке, что я предполагаю, потому что мне нужно как-то соединить две функции.

1 Ответ

0 голосов
/ 29 мая 2019

как насчет этого:

=YEAR(A1) & TEXT(WEEKNUM(A1,13),"00")

WeekNum возвращает номер недели с 13, говоря, что оно начинается в среду:

enter image description here


VBA

 wkcd = Year(Range("A1")) & Format(Application.WeekNum(Range("A1")),"00")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...