我在网上查了一下,但似乎没有任何帮助我的情况:(
我基本上想从日期中提取周数。 我已使用以下代码从同一单元格中成功提取了年份的最后两位数字:
Right(Year(wbThis.Sheets("Availability").Range("C5").Value), 2)
(wb这被定义为工作簿)
但是,周数尚未出现给我。
所以你可以检查自己是否正确,wbThis工作簿的单元格C5中的日期是
2016-02-12 (YYYY-MM-DD)
这相当于Weeknumber 06.(如果它是6,我想要06,但我相信你可以解决这个问题:P)
非常感谢,最诚挚的问候。
(PS。请记住,细胞C5的公式表示2016-02-12 - 细胞实际上只显示12-feb。所以.Value将返回2016-02-12)
答案 0 :(得分:2)
如果周长为1,您可以在公式中使用WEEKNUM
函数以及IF
函数来连接前导0:
If Len(WorksheetFunction.WeekNum(wbThis.Sheets("Availability").Range("C5").Value))=1 Then
Debug.Print 0&WorksheetFunction.WeekNum(wbThis.Sheets("Availability").Range("C5").Value)
Else
Debug.Print WorksheetFunction.WeekNum(wbThis.Sheets("Availability").Range("C5").Value)
End if
答案 1 :(得分:1)
ww 数字格式掩码可用于检索WEEKNUM function的等效内容。
Debug.Print Format(ThisWorkbook.Sheets("Availability").Range("C5").Value, "ww")
Debug.Print Right("0" & Format(ThisWorkbook.Sheets("Availability").Range("C5").Value, "ww"), 2)
对于2016年3月1日,这将返回10.在ww格式掩码和WEEKNUM函数中,2016年2月12日我 7 而非 6 。如果你想返回 6 (或06),那么你将不得不使用ISOWEEKNUM function¹。
Debug.Print WorksheetFunction.IsoWeekNum(ThisWorkbook.Sheets("Availability").Range("C5").Value)
Debug.Print Right("0" & WorksheetFunction.IsoWeekNum(ThisWorkbook.Sheets("Availability").Range("C5").Value), 2)
¹ Excel 2013引入了ISOWEEKNUM function。早期版本不提供。
excel-2013