excel - 编写 VBA 函数以查找句号。和周没有。13 期
问题描述
概述:我基本上想编写一个版本的 MONTH 函数来工作 13 个周期的工作年......
(免责声明:我是 VBA 的新手)将日期 dd/mm/yyyy 重新格式化为期间编号(1-13)和周编号(1-4)的最佳方法是什么?我已经使用了 WEEKNUM 函数来弄清楚它,但我似乎不太明白。我认为问题在于新年的开始(第 1 期,第 1 周)是在 12/30/18 并且在 excel 中,它将此日期视为第 5 周甚至第 6 周,通过它的测量方式。
星期从星期日开始,一年中的每个时期 (13) 有 4 周。到目前为止,我已经尝试过:
这个自写函数的基本部分只是让周数部分工作,它只给了我#value,但在 msgbox 中没有错误(如果它确实有效,我可能能够找出其余部分):
Function PeriodNum(serial_num As Date, number_periods As Integer, start_date As Date) Dim first_week As Integer Dim second_week As Integer Dim third_week As Integer Dim fourth_week As Integer Dim day As Integer first_week = 1 second_week = 2 third_week = 3 fourth_week = 4 day = serial_num If day >= start_date Or day <= start_date + 7 Then Selection.Value = first_week ElseIf day > start_date + 7 Or day <= start_date + 14 Then Selection.Value = second_week ElseIf day > start_date + 14 Or day <= start_date + 21 Then Selection.Value = third_week ElseIf day > start_date + 21 Or day <= start_date + 28 Then Selection.Value = fourth_week Else Selection.Value = "error" End If End Function
-我也尝试过使用 WEEKNUM 函数,但我不知道如何让它给我每个透视周期的数字 1-4
非常感谢你的帮助!非常感激
解决方案
1)根据VBA的代码规则有一个问题:
对于每个 Function PeriodNum(serial_num As Date, number_periods As Integer, start_date As Date) 定义,您还应该使用行:
周期数 = ...
通过这种方式,您从函数返回一个值(类似于 return x; 在其他语言中)
2) 使用 Selection 对象是不可预测的,并且可以在调用方法时更改您在 Excel 中处于活动状态的任何单元格。如果您使用计算方法,您应该使用类似的方法:
Function weekCompute(date1)
'...
weekCompute = "val1"
End Function
使用此函数,您可以使用此单元格公式:=weekCompute(A1)
推荐阅读
- arrays - 如何存储数组槽以在函数之间使用?
- kotlin - 测试肥皂消费者。'uri' 不能为空
- node.js - express-validator 电子邮件规范化
- javascript - React 编译页面后发生 CORS 错误,但在重新加载页面后它们消失了
- docker - docker 容器无法与同一网络上的其他容器通信
- c# - 从 ContentView(子视图)获取属性值到 ContentPage(父)
- google-drive-api - 使用 Colab 在 Google 云端硬盘上压缩和/或传输超大文件 (200+ GB)
- javascript - Chrome Inspect 在 JavaScript 控制台日志输出中重复的第一个数据
- c - 使用 raylib 渲染核 GUI 失败
- c - 即使我多次运行程序,如何只初始化一次双向链接列表?