求excel函数高手,设置日期按月递增
在A1中,输入任一日期,在B1到B12中,自动带出后一年的日期,月份增加,日数不变,但遇到月底有月大和月小,甚至2月份如何写判断?要求1:B1开始月份递增至B122:B1...
在A1中,输入任一日期,在B1到B12中,自动带出后一年的日期,月份增加,日数不变,但遇到月底有月大和月小,甚至2月份如何写判断?要求 1:B1开始月份递增至B12 2:B1的日数比A1的日数小1,B2至B12的日都和B1一样(例:若A1是2017年12月20日,则B2为 2018年1月19日,后面分别为2月19日、3月19日……12月19) 3:如图,若A1中输入日期为2017年12月1日,B2为2017年12月31日,后面若月份为2,则显示2月28日,若月份为1、3、5、7、8、10、12则日显示为31,其他显示为30
展开
3个回答
展开全部
这还是用VBA处理比较好办,函数太绕了。代码已发
Private Sub Worksheet_Change(ByVal Target As Range)
Dim myer%, mmon%, mday%, myd%, x%
Dim mdate As Date, arr(1 To 12, 1 To 1)
If Target.Address = "$A$2" Then
mdate = Target.Value
mday = Day(mdate)
mmon = Month(mdate)
myer = Year(mdate)
For x = 1 To 12
If mday = 1 Then
myd = Day(DateSerial(myer, mmon + x, 0))
arr(x, 1) = DateSerial(myer, mmon + x - 1, myd)
Else
myd = Day(DateSerial(myer, mmon + x + 1, 0))
If myd < mday Then
arr(x, 1) = DateSerial(myer, mmon + x, myd)
Else
arr(x, 1) = DateSerial(myer, mmon + x, mday - 1)
End If
End If
Next x
Range("B2").Resize(12, 1) = arr
End If
End Sub
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
B1
=DATE(YEAR(A$1),MONTH(A$1)+ROW(A1),0)
下拉
=DATE(YEAR(A$1),MONTH(A$1)+ROW(A1),0)
下拉
追问
你说的只是A1的日数值等于1日时是对的
但若A1的日数是等于20日,就要求B1到B12,都是日数值都是19,又怎么做呢???
如何做条件判断呢??
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询