Cálculo de días entre dos fechas concidionado por el año

Tengo dos columnas con dos fechas (Inicio y Final) y una tercera columna con el numero de días entre ambas. Necesito saber el número de días que caen por mes y por año en una tabla.

Datos Iniciales

Fecha Inicial            Fecha Final               Dias

18/03/2019             20/05/2019               63

20/05/2019            15/07/2019                56  

18/05/2020            14/07/2020                57

14/07/2020            15/09/2020                63 

15/11/2021            13/01/2022                59

13/01/2022            10/03/2022                 56 

Según los datos anteriores necesito la siguente tabla:

                                   2019                  2020             2021                 2022

Enero                        nº dias            nº dias           nº dias               nº dias

Febrero                    nº dias            nº dias           nº dias               nº dias

Marzo ...                  nº dias            nº dias           nº dias               nº dias

Diciembre               nº dias            nº dias           nº dias               nº dias

Respuesta
1

Visita:

Cursos de Excel y Macros

---------------------

Considero que le falta sumar 1 a cada uno de tus resultados.

Por ejemplo de fecha inicial 31-03-2022 a fecha final 31-03-2022 (inicio y fin en el mismo día), el resultado según tu ejemplo es 0 días. ¿Pero debería ser 1 día?

Si el resultado es 1 día, entonces ejecuta la macro, pon tus datos como se muestra en la siguiente imagen:

https://www.mrexcel.com/board/attachments/1674483309497-png.83498/?hash=9c3184b903990d685019d491ffe58b03

Macro:

Sub SumaDias()
'Por Dante Amor
  Dim i As Long, j As Long, k As Long, m As Long
  Dim nmin As Long, nmax As Long, cols As Long
  nmin = Year(WorksheetFunction.Min(Range("A:A")))
  nmax = Year(WorksheetFunction.Max(Range("A:A")))
  cols = nmax - nmin + 1
  ReDim b(1 To 12, 1 To cols)
  For i = 2 To Range("A" & Rows.Count).End(3).Row
    For j = Range("A" & i).Value To Range("B" & i).Value
      k = Year(j) - nmin + 1
      m = Month(j)
      b(m, k) = b(m, k) + 1
    Next
  Next
  Range("G2").Resize(12, cols).Value = b
End Sub

------------------

Recomendaciones:

Curso de macros. Consejos para empezar a programar. - YouTube

Curso de excel. Consejos y trucos de excel para mejorar la presentación de tus datos. - YouTube

Sal u dos Dante Amor

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas