【问题标题】:Need to change date into current work week (1-52), but skip to the next week if the day is Wed - Sat in VBA需要将日期更改为当前工作周(1-52),但如果当天是周三 - 周六在 VBA 中跳到下周
【发布时间】:2019-05-29 09:42:07
【问题描述】:

我在用 VBA 编写代码时遇到了问题,该代码允许我输入任何给定的日期,然后输出当前工作周的输出。我需要限制日期是否为周日至周二,它将保留当前的工作周和年份,但如果日期是周三至周六,则将显示下一个工作周和年份。例如,我希望输入 (5/28/19) 并且输出为 201922 或输入 (5/29/19) 输出为 201923,即使它在技术上是相同的工作周。

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

我是 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!当我在该单元格中使用该函数时,我认为这是因为我需要以某种方式连接这两个函数。

【问题讨论】:

    标签: excel vba date


    【解决方案1】:

    这个怎么样:

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

    WeekNum 返回星期数,13 表示它从星期三开始:


    VBA

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

    【讨论】:

    • 这绝对有效,但你知道我如何在 VBA 中生成它吗?
    猜你喜欢
    • 1970-01-01
    • 2022-01-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多