我正在想办法算出一个月内星期一的总数,然后乘以工作时间。
这是我的示例代码,它的工作,但它计数错误的输出:
If UCase(val) Like "EVERY MONDAY" Then
Dim numString As Integer
Dim strDays() As String
Dim wordCount As Long
numString = 2
strDays = VBA.Split(val, " ")
wordCount = UBound(strDays)
strWhEveryDay = ThisWorkbook.Sheets("Input").Cells(X, 4).Value
strWhEveryDay = strWhEveryDay * var_month
Debug.Print "Every = " & strWhEveryDay
说明:
- 这取决于用户是否喜欢在文本框中输入。然而,计算取决于用户在文本框中输入的日期。
- 我有文本框,这是目标月份,用户输入的日期格式如下:
- 2023年1月或2月**
- 我有这样一张table:
将此文本放入表格中,从B列第2行开始:
**every Monday**
将此文本放入表格D列第4行:
**1.2**
- 我所需要的只是根据给定的月份和年份获得所有星期一的总数。一旦我将文本从"每个星期一"更改为"每个星期二",则"每个星期一"表中的天数计算将进行调整或自动知道计算天数的起止位置:
- 预期计算示例:* * 每个星期一**(2023年1月= 5天)* 1.2因此,预期结果将为5。
- 注意:**使用Debug. Print查看结果或输出
2条答案
按热度按时间50few1ms1#
所以,使用networkdays.intl(),就像我在评论中建议的:
显示的结果为5,经检查是正确的,单元格A3:A33使用了长日期格式。
所以乘以1.2就是:
和5 * 1.2 = 6
此外,字符串“0111111”可以放在单元格F5中并引用,这样更容易编辑。
klr1opcd2#
我所知道的识别一周中任何一天的最简单的方法如下:
“2”表示计算工作日,从“星期一”开始为1,“星期二”为2,...
所以,如果你想知道你的约会是不是星期一,你可以用这个公式:
使用标准的
IF
-子句可以很容易地将其转换为VBA。