我不知道这是否是提问的正确位置,但我在此处看到其他人询问Excel问题。Excel将单元格中的所有日期放在一个范围内
我怎样才能让Excel把两个日期范围之间的所有月份和年份。
例如像我的日期范围为2004年3月 - 2008年12月,这样的Excel应该返回
March 2004
April 2004
May 2004
...
November 2008
December 2008
每个单元在一列应该有两个日期之间的所有的月/年。
感谢
我不知道这是否是提问的正确位置,但我在此处看到其他人询问Excel问题。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”格式化单元格以获得上述确切格式。要执行自定义格式,只需右键单击包含日期的单元格......哦,等等,您可以右键单击吗?因此,获取Format Cells对话框,选择Number选项卡,然后选择列表底部的Custom,然后在顶部附近的“Type”框中输入格式。
还是你想要比这更自动的东西?
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
我只在Mac上完成VBA,它只是一个测试,看看如何轻松地移植代码。很多东西都起作用,有些需要摆弄。 – 2012-02-27 00:02:58
对不起,但我不明白对Mac的引用。 – 2012-02-27 00:27:27
因为问题标记为Excel 2011. – 2012-02-27 01:22:29