Excel Coloque todas las dates en un range en celdas

No sé si este es el lugar correcto para preguntar esto, pero vi a otros haciendo preguntas de Excel aquí.

¿Cómo puedo hacer que Excel ponga todos los meses y años entre dos intervalos de dates?

Como por ejemplo, mi range de dates es de marzo de 2004 a diciembre de 2008, por lo que Excel debe devolver

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

Cada celda en una columna debe tener todos los meses / años entre dos dates.

Gracias

En Windows Excel 2010 puede simplemente escribir "marzo de 2004" en una celda y arrastrar hacia abajo tanto como sea necesario y boostá en un mes. Para mí cambió el formatting para que pareciera "Mar-2004", pero luego puede formatear las celdas con un formatting personalizado de "mmmm aaaa" para get el formatting exacto anterior. Para hacer un formatting personalizado, simplemente haga clic con el button derecho en las celdas con las dates … ¡oh, espera !, ¿puede hacer clic derecho? Por lo tanto, obtenga el cuadro de dialog Formato de celdas, elija la pestaña Número, luego Personalizado en la parte inferior de la list y escriba el formatting en el cuadro "Tipo" cerca de la parte superior.

¿O querías algo más automatizado que esto?

La solución de Doug es, sin duda, la forma más fácil de get una columna de meses. Sin embargo, si desea una solución de VBA, hay una a continuación. No dices por qué no puedes codificar esa rutina tú mismo. Decidí que era más fácil codificar la rutina que preguntar lo que no sabías. Pregunta si no entiendes lo que está haciendo este código.

 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