Kathy necesita una fórmula que cambie cualquier fecha dentro del mes actual al último día del mes anterior. También señala que sería útil tener una macro VBA que pudiera hacer esto con las fechas en un rango de celdas seleccionadas.

En realidad, existen varios enfoques de fórmulas diferentes que puede utilizar para obtener la fecha deseada. Estos dos son los más cortos y fáciles de usar:

=A1-DAY(A1)

=EOMONTH(A1,-1)

El primero funciona porque el «día 0» del mes actual siempre se considera el último día del mes anterior. Por lo tanto, si la fecha en la celda A1 es el 25/9/20, terminará restando 25 (el valor del DÍA) de ese día, dando una fecha del 0/9/20 o 31/8/20.

La segunda fórmula funciona debido a la inclusión del segundo parámetro para la función EOMONTH. Este parámetro se utiliza para indicar cuántos meses en el pasado (negativo) o futuro (positivo) se debe calcular el final del mes.

En cualquier caso, es posible que deba formatear la celda que contiene la fórmula como una fecha. Si no lo hace, lo que ve puede ser el número de serie subyacente que utiliza Excel para calcular las fechas.

Si desea una macro que realmente convierta las fechas en un rango seleccionado en el último día del mes anterior, lo siguiente será suficiente.

Sub LastDayPreviousMonth()

Dim rCell As Range

For Each rCell In Selection         If IsDate(rCell) And Not rCell.HasFormula Then             rCell.Value = WorksheetFunction.EoMonth(rCell.Value, -1)

End If     Next rCell End Sub

La macro recorre cada celda del rango seleccionado y comprueba si contiene una fecha y no es una fórmula. (En otras palabras, si la fecha en una celda es el resultado de una fórmula, la fórmula no cambia.)

La función EOMONTH se utiliza, como se describió anteriormente, para calcular la fecha deseada.

Cabe mencionar que el enfoque macro también convertirá fechas textuales. Por ejemplo, si una celda contiene, como texto, la fecha «15/6/20»,

entonces la macro lo cambiará a 5/30/20. Una vez que la fecha ajustada se vuelve a introducir en la celda, se mostrará como un número de serie de fecha / hora, no como texto.

_Nota: _

Si desea saber cómo usar las macros descritas en esta página (o en cualquier otra página de los sitios ExcelTips), he preparado una página especial que incluye información útil.

link: / excelribbon-ExcelTipsMacros [Haga clic aquí para abrir esa página especial en una nueva pestaña del navegador].

ExcelTips es su fuente de formación rentable en Microsoft Excel.

Este consejo (13304) se aplica a Microsoft Excel 2007, 2010, 2013, 2016, 2019 y Excel en Office 365.