我使用此excel工作表功能从日期ex算起一周的范围(开始和结束)。 14.08.2020给我10.08-16.08。我试图将其转换为VBA功能,因为它将更易于使用,但是我全脑都停电了。你能告诉我我做错了什么吗?
Excel:
=TEXT(DATE(2020;1;1)+(WEEKNUM(D1;2)-1)*7-WEEKDAY(DATE(2020;1;1);2)+1;"DD.MM")&"-"&TEXT(DATE(2020;1;1)+(WEEKNUM(D1;2)-1)*7-WEEKDAY(DATE(2020;1;1);2)+7;"DD.MM")
VBA:
Function dog(x As String) As String
dog = WorksheetFunction.Text(DateSerial(2020, 1, 1) + (WorksheetFunction.WeekNum(A1, 2) - 1) * 7 - Weekday(DateSerial(2020, 1, 1), vbMonday) + 1, "DD.MM") & "-" & WorksheetFunction.Text(DateSerial(2020, 1, 1) + (WorksheetFunction.WeekNum(A1, 2) - 1) * 7 - Weekday(DateSerial(2020, 1, 1), vbMonday) + 7, "DD.MM")
End Function
(ARG)或(NAME?)都不起作用
答案 0 :(得分:0)
我建议您使用本机VBA功能:
Option Explicit
Function dog(x As Date) As String
Dim dStartOfWeek As Date 'a Monday
Dim dEndOfWeek As Date 'a Sunday
dStartOfWeek = x - Weekday(x) + 2
dEndOfWeek = dStartOfWeek + 6
dog = Format(dStartOfWeek, "dd.mm-") & Format(dEndOfWeek, "dd.mm")
End Function
您是否有某些理由宣布您的输入参数为字符串类型?
如果在工作表上出现#NAME?
错误,则可能没有将UDF放入常规模块,或者您有多个名为dog