我不知道这是否是问这个问题的正确地方,但我看到其他人在这里问 Excel 问题。
如何让 Excel 将所有月份和年份放在两个日期范围之间。
例如,我的日期范围是 2004 年 3 月 - 2008 年 12 月,所以 Excel 应该返回
March 2004
April 2004
May 2004
...
November 2008
December 2008
列中的每个单元格都应包含两个日期之间的所有月份/年份。
谢谢
我不知道这是否是问这个问题的正确地方,但我看到其他人在这里问 Excel 问题。
如何让 Excel 将所有月份和年份放在两个日期范围之间。
例如,我的日期范围是 2004 年 3 月 - 2008 年 12 月,所以 Excel 应该返回
March 2004
April 2004
May 2004
...
November 2008
December 2008
列中的每个单元格都应包含两个日期之间的所有月份/年份。
谢谢
在 Windows Excel 2010 中,您只需在单元格中键入“2004 年 3 月”并根据需要向下拖动,它将按月递增。对我来说,它将格式更改为“Mar-2004”,但您可以使用自定义格式“mmmm yyyy”来格式化单元格以获得上面的确切格式。要进行自定义格式,只需右键单击带有日期的单元格...哦等等,您可以右键单击吗?因此,获取“设置单元格格式”对话框,选择“数字”选项卡,然后在列表底部选择“自定义”,然后在顶部附近的“类型”框中键入格式。
还是您想要比这更自动化的东西?
Doug 的解决方案无疑是获得一列月数的最简单方法。但是,如果您想要 VBA 解决方案,下面有一个。你没有说为什么你不能自己编写这样的例程。我认为编写例程代码比询问您不知道的内容更容易。问你是否不明白这段代码在做什么。
Option Explicit
Sub TestDataRange()
Call OutputDateRange("Sheet1", 2, 2, DateValue("1 Mar 2004"), _
DateValue("1 Apr 2008"))
End Sub
Sub OutputDateRange(ByVal WShtName As String, ByVal RowTop As Long, _
ByVal Col As Long, ByVal DateFirst As Date, _
ByVal DateLast As Date)
Dim DateCrnt As Date
DateCrnt = DateFirst
With Sheets(WShtName)
Do While True
With .Cells(RowTop, Col)
.Value = DateCrnt
.NumberFormat = "mmmm yyyy"
End With
DateCrnt = DateAdd("m", 1, DateCrnt)
If DateCrnt > DateLast Then
Exit Do
End If
RowTop = RowTop + 1
Loop
End With
End Sub