目前,在我的Excel中,有一个年份和月份的字符串写为yyyymm。 例如:201706
现在我想将其转换为另一个工作表中的月末日期。例如:20170630
现在的问题是,如何告诉Excel根据字符串中的月份值自动创建日期?
我打算使用if语句根据字符串后面的结束值声明每个月。 (即:如果2017 06 ,日期= 20170630)
但后来我认为在二月的闰年不会工作。除此之外还有其他方法吗?
答案 0 :(得分:3)
试试这个
dtmDate = 201706 (or put there value from cell)
dhLastDayInMonth = DateSerial(Left(dtmDate, 4), Right(dtmDate, 2) + 1, 0)
答案 1 :(得分:2)
解决问题的最简单方法是不使用vba makro。使用Date
,Left
和Right
以及EOMonth
函数,您可以将字符串转换为如下例所示的日期。
使用它你甚至不需要vba:
=EOMONTH(DATE(LEFT(A1;4);RIGHT(A1;2);1);0)
(例如,如果日期字符串在A1中)
查看this页面以获取有关此功能的更多详细信息
答案 2 :(得分:1)
我经常使用下一个月的第一天(总是第一天)并减去日期的1来进行一些解决方法。不幸的是,这只适用于Date-Values:
试试这个:
Sub LastDayOfMonth()
strInput = "201711"
y = Left(strInput, 4)
m = Right(strInput, 2)
dat = DateSerial(y, m + 1, 1) - 1
End Sub
答案 3 :(得分:1)
Dim dLast As Date
dLast = DateAdd("d", -1, CDate("1/" & Format(Date, "mm/yyyy")))
如果您将日期放在单元格A1中,则通过messageBox:
MsgBox Format([eomonth(A1,6)], "dd/mm/yyyy")