如何在VBA中获取日期对应的星期数字(周一为1周日为7)
在VBA中获取周一为1的星期数字的简便方法
嘿,这个需求完全不用绕弯子遍历星期名称列表,有好几款直接的实现方式,给你整理两个最实用的:
方案1:用Weekday函数(首推!)
VBA自带的Weekday函数本身就支持自定义一周的起始日,完美匹配你的规则:
Dim dayNumber As Integer dayNumber = Weekday(Date, vbMonday) ' 周一返回1,周二返回2……周日返回7
这里的vbMonday是VBA内置的常量,专门用来指定“周一为一周第一天”。如果以后需要调整起始日,还有vbSunday(默认规则,周日=1)、vbTuesday等常量可选,非常灵活。
方案2:通过Format函数做转换
要是你更倾向于用Format函数,也可以对它的默认返回值做个小调整:
默认情况下,Format(Date, "w")会返回周日=1、周一=2……周六=7的数字,我们只需要简单转换就能适配你的规则:
Dim dayNumber As Integer ' 写法1:用IIf判断周日的情况 dayNumber = IIf(Format(Date, "w") = 1, 7, Format(Date, "w") - 1) ' 写法2:用取模运算更简洁 dayNumber = (Format(Date, "w") + 5) Mod 7 + 1
对比下来,Weekday函数是最直观、最容易维护的方案,推荐优先使用它哦。
内容的提问来源于stack exchange,提问作者Jonathan
相关产品推荐
相关产品推荐

