Excel将所有日期放在单元格的范围内

时间:2012-02-26 23:01:24

标签: excel date excel-2011

我不知道这是否是正确的问题,但我看到其他人在这里问过Excel问题。

如何让Excel将所有月份和年份放在两个日期范围之间。

例如我的日期范围是2004年3月 - 2008年12月,所以Excel应该返回

March 2004
April 2004
May 2004
...
November 2008
December 2008

列中的每个单元格都应包含两个日期之间的所有月份/年份。

由于

2 个答案:

答案 0 :(得分:3)

在Windows Excel 2010中,您只需在单元格中键入“March 2004”并根据需要向下拖动,它将按月递增。对我而言,它将格式更改为“Mar-2004”,但您可以使用自定义格式“mmmm yyyy”格式化单元格,以获得上面的确切格式。要执行自定义格式,只需右键单击带有日期的单元格...哦等等,您可以右键单击吗?因此,选择Format Cells对话框,选择Number选项卡,然后选择列表底部的Custom,并在顶部附近的“Type”框中键入格式。

或者你想要比这更自动化的东西吗?

答案 1 :(得分:1)

道格的解决方案无疑是获得一个月的最简单方法。但是,如果您需要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