需要将日期更改为当前工作周(1-52),但是如果该日期是星期三-VBA中的星期六,请跳至下一周

时间:2019-05-28 22:54:48

标签: excel vba date

我在用VBA编写代码时遇到麻烦,这使我可以输入任何给定的日期,然后获得当前工作周的输出。我需要限制一下,如果日期是星期天到星期二,它将保留当前的工作日和年号,但是如果日期是星期三到星期六,那么将显示下一个工作周和年号。例如,我希望输入(5/28/19)的输出为201922或输入(5/29/19)的输出为201923,即使在技术上相同的工作周中也是如此。

在深入探讨之前,我确实有一个工作功能可以提供年份和工作周,但是我正在尝试调整该功能或添加一个单独的功能,该功能将根据给定的下一个工作周进行更改日期。

我是VBA的新手,但最近几天尝试进行一些研究。我以为我可以以某种方式输入日期,然后有两个输出,其中一个是年份和工作周,然后另一个是与该日期关联的数字(1代表星期日,2代表星期一,依此类推) 。我试图创建一个if if语句,该语句表示如果与该日期关联的数字是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 :(得分:0)

这如何:

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

WeekNum返回星期几,其中13表示从星期三开始。

enter image description here


VBA

 wkcd = Year(Range("A1")) & Format(Application.WeekNum(Range("A1")),"00")