Valor de meses entre dos fechas

Tengo un problema con las fechas, se calcular la diferencia entre dos fechas pero lo que necesito es saber los meses, me explico, tengo una fecha de baja de un trabajador, por ejemplo el 15/01/15 y su fecha de alta es el 28/02/15, el total de días es restando las fechas pero lo que necesito es que me diga, del mes de Enero 16 días y del mes de Febrero 28 días.

2 respuestas

Respuesta
1

¿Y si tienes por ejemplo del 15/01/15 al 20/07/15 quieres que te diga cuánto días son de cada mes?

¿Quieres el resultado en una sola celda?

Escribe el resultado que esperas del ejemplo que yo puse, para entender cuál es el resultado que quieres.

Buenas noches, perdona por la tardanza, efectivamente las fechas pueden ser hasta en años distintos. Imagínate una baja grave y que este hospitalizado 8 meses y que empieza el 30 de Enero y termina el 3 de Octubre. Necesitaría que empezara: 2 días de Enero (30 y 31), 28 de febrero, ... y así hasta Octubre. O empieza el 15 de Diciembre del 2014 y termina el 5 de Marzo del 2015. No es necesario en una sola celda. Muchas gracias.

Te anexo la macro para calcular los días por mes

La idea es que pongas tu fecha inicial y final en 2 celdas (B2 y C2), el resultado de la macro te lo pondrá en la colunna "D":



Sub CalcularDiasxMes()
'Por.Dante Amor
    Application.ScreenUpdating = False
    meses = Array("", "Enero", "Febrero", "Marzo", "Abril", "Mayo", "Junio", _
                  "Julio", "Agosto", "Septiembre", "Octubre", "Noviembre", "Diciembre")
    Range("D:E").ClearContents
    j = 2
    [D1] = "Días por Mes"
    For i = [B2] To [c2]
        Cells(j, "E") = i
        j = j + 1
    Next
    ant = Month([E2])
    an2 = Year([E2])
    dias = 0
    j = 2
    For i = 2 To Range("E" & Rows.Count).End(xlUp).Row + 1
        If Month(Cells(i, "E")) = ant And _
           Year(Cells(i, "E")) = an2 Then
            dias = dias + 1
        Else
            Cells(j, "D") = dias & " dias de " & meses(ant) & " del año " & an2
            dias = 1
            j = j + 1
        End If
        ant = Month(Cells(i, "E"))
        an2 = Year(Cells(i, "E"))
    Next
    Range("E:E").ClearContents
End Sub

Sigue las Instrucciones para un botón y ejecutar la macro

  1. Abre tu libro de Excel
  2. Para abrir Vba-macros y poder pegar la macro, Presiona Alt + F11
  3. En el menú elige Insertar / Módulo
  4. En el panel del lado derecho copia la macro
  5. Ahora para crear un botón, puedes hacer lo siguiente:
  6. Inserta una imagen en tu libro, elige del menú Insertar / Imagen / Autoformas
  7. Elige una imagen y con el Mouse, dentro de tu hoja, presiona click y arrastra el Mouse para hacer grande la imagen.
  8. Una vez que insertaste la imagen en tu hoja, dale click derecho dentro de la imagen y selecciona: Tamaño y Propiedades. En la ventana que se abre selecciona la pestaña: Propiedades. Desmarca la opción “Imprimir Objeto”. Presiona “Cerrar”
  9. Vuelve a presionar click derecho dentro de la imagen y ahora selecciona: Asignar macro. Selecciona: CalcularDiasxMes
  10. Aceptar.
  11. Para ejecutarla dale click a la imagen.

También te anexo mi archivo para que lo descargues y revises el resultado.

https://www.dropbox.com/s/f5bcjijito73bey/calcular%20dias%20por%20mes.xlsm?dl=0 


Saludos. Dante Amor

Respuesta
1

A partir de la versión Excel 2007 contamos con una función llamada Fin. Mes que nos da el nro del último día del mes.

Entonces la fórmula sería así para fechas ubicadas en A1:B1

=FIN.MES(A1;0)-A1-DIA(B1)

Estoy utilizando pto y coma como separador .

Si el tema queda resuelto no olvides valorar la respuesta. Sino comenta tu caso con más detalles.

Se deslizó un pequeño error, la fórmula es sumando los días de febrero.

 =FIN.MES(A1;0)-A1+DIA(B1)

Ahora, la pregunta es: ¿Necesitas qué te diga cuántos días hay de cada mes? Y si tenés más de un mes entre ambas fechas, ¿necesitas el total de días por cada mes?

Sdos!

Buenas noches, perdona por la tardanza, efectivamente las fechas pueden ser hasta en años distintos. Imagínate una baja grave y que este hospitalizado 8 meses y que empieza el 30 de Enero y termina el 3 de Octubre. Necesitaría que empezara: 2 días de Enero (30 y 31), 28 de febrero, ... y así hasta Octubre. Muchas gracias.

Claro, ¿pero necesitas la cantidad de días separado por mes?, para este caso serían 10 celdas (2 de enero, 28 de febrero, 31 de marzo... hasta 3 de octubre).

Sdos!

Gracias, si tienen que salir en varias celdas que se le va a hacer, luego ¿podría usar la función concatenar?

Te dejo las fórmulas necesarias. Tendrás que llenarlas hacia abajo o a derecha, según cómo armes tu tabla.

Por ahora los días van en una col y el texto en otra, como para poder sumarlos... pero bien podés concatenar en otra col todo junto.

Estando los datos en B2:C2, los nombres de los meses en col K1:K12, las fórmulas van en estas celdas:

D2     =FIN.MES(B2;0)-B2+1

D3 hacia abajo hasta que te devuelva 0

=SI(Y(MES($C$2)=MES(FIN.MES($B$2;FILA()-2));AÑO($C$2)=AÑO(FIN.MES($B$2;FILA()-2)));DIA($C$2);SI(FIN.MES($B$2;FILA()-2)>$C$2;0;FIN.MES($B$2;FILA()-2)-FIN.MES($B$2;FILA()-3)))

E2  hacia abajo hasta que en col D devuelva 0:

=" días de " & INDIRECTO("K" & MES(J2)) & " del año " & AÑO(J2)

J2 hacia abajo hasta que en col D devuelva 0:

=SI(D2=0;0;FIN.MES($B$2;FILA()-2))

Si no se leen bien las fórmulas, podés solicitarme el libro al correo que aparece en mi sitio que dejo al pie.

Por supuesto que los rangos auxiliares podés colocarlos en otras ubicaciones dependiendo de cómo ordenes tu hoja.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas