Saber cual es el primer día del mes actual en un historial Excel

Tengo un historial que se va actualizando diario con una macro. De este historial necesito un dato que serial la resta de un numero tomado el primer día del mes con un numero tomado del día actual.

La razón por la cual necesito una macro o función es porque al irse actualizando diario al terminar un mes y comenzar otro, necesito que la macro tomo el primer día siempre del mes actual.

Se como tomar el valor del numero del día actual pero no se como tomar el valor del primer día del mes. Me imagino que seria con una condicion If.

Respuesta
1

Prueba con la siguiente función personalizada descompone la fecha actual en mes y año y la concatena añadiendo el 1 para después convertirla a fecha, sin importar el valor del día el resultado sera el primer día de cada mes

Function primer_dia(fecha_actual As Date) As Date
mes = Month(fecha_actual)
years = Year(fecha_actual)
primer_dia = cdate("01/" & mes & "/" & years)
End Function

solo un detalle el resultado puede aparecer asi 43456 solo cambia el formato de la celda a fecha y queda listo.

Agradezco tu aporte, lamentablemente no me dio el resultado esperado.  Veras el motivo de saber el primer día del mes es para poder tomar un valor correspondiente a este que se encuentra en la columna siguiente. 

Es decir la macro buscaría el primer día de agosto (septiembre,  nov,  etc dependiendo del mes en que estemos)  en un rango de A1: A1000 (aquí se guardan los días del historial),  en la celda que lo encuentre que tome el valor de la celda que este a la derecha. 

De echo lo conseguí pero lo hice con una combinación de funciones Excel y macros que me quedo un poco largo el método.  Si hubiese una sola macro que lo hiciera me serviria. 

Saludos.. 

Esta macro toma la fecha actual y a partir de esta busca el primer día del mes actual y muestra el valor de la celda a la derecha, este seria el resultado de la macro.

esta es la macro 

Sub busca_fechas()
Set datos = Range("a1").CurrentRegion:   fecha = Date
mes = Month(fecha):  years = Year(fecha)
primer_dia = CDate("01/" & mes & "/" & years)
With datos
    fila = WorksheetFunction.Match(CLng(primer_dia), .Columns(1), 0)
    valor = MsgBox("Valor " & .Cells(fila, 2), vbInformation, "Aviso")
    .Rows(fila).Select
End With
End Sub

Gracias, La inserte en un nuevo modulo pero cuando la ejecuto me manda un mensaje de error:

No se puede obtener la propiedad Match de la clase worksheetFunction

La macro funciona leyendo datos desde la celda a1, si tus datos están en una celda diferenta como c2, b2, a3, te va a dar el error que mencionas, solo cambia la letra a1 de la primera línea de la macro por la primera celda donde comiencen tus datos, ya probé la macro y solo me da error cuando no encuentra datos.

por formula esta seria la que ocupas =+BUSCARV(FECHA(AÑO(HOY()),MES(HOY()),1),a1:b1000,2,1)

2 respuestas más de otros expertos

Respuesta

Esto te puede aportar algo más

https://youtu.be/DcKD75p7cP8

Respuesta

Puedes usar una función..

=FECHA(año(hoy()),mes(hoy()),1)

Eso es el 1ro del mes actual, según lo que marque el reloj de la PC

Y si quieres calcularlo dentro de una macro

Dateserial(year(now), month(now), 1)

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas