如何使用vba将yyyymm数字string转换为结束月份date?
目前,在我的Excel中,有一个年份和月份的string写成yyyymm。 例如:201706
现在我想在另一个工作表中将其转换为月末date。 例如:20170630
现在的问题是,如何让Excel根据string中的月份值自动创build一天?
我打算使用if语句根据string后面的结尾值来申报每个月。 (即:如果2017年06月,date= 20170630)
但后来我觉得这个在二月份的闰年是行不通的。 除此之外还有另外一种方法吗?
尝试这个
dtmDate = 201706 (or put there value from cell) dhLastDayInMonth = DateSerial(Left(dtmDate, 4), Right(dtmDate, 2) + 1, 0)
解决你的问题最简单的方法是甚至不使用vba makro。 使用Date
, Left
和Right
以及EOMonth
函数,可以将string转换为如下例所示的date。
使用这个你甚至不需要vba:
=EOMONTH(DATE(LEFT(A1;4);RIGHT(A1;2);1);0)
(例如datestring在A1中)
看看这个页面来获得这个function的更多细节
我经常使用一个小的解决方法,在下个月的第一天(总是第一天)和减去date1。 不幸的是,只有date值的作品:
试试这个:
Sub LastDayOfMonth() strInput = "201711" y = Left(strInput, 4) m = Right(strInput, 2) dat = DateSerial(y, m + 1, 1) - 1 End Sub
Dim dLast As Date dLast = DateAdd("d", -1, CDate("1/" & Format(Date, "mm/yyyy")))
或者通过一个messageBox如果您将date放在单元格A1中:
MsgBox Format([eomonth(A1,6)], "dd/mm/yyyy")