Skip to content

Instantly share code, notes, and snippets.

@Dalboz
Last active September 6, 2024 16:36
Show Gist options
  • Save Dalboz/fbc3b814e1a3993c3e9d38d576b70133 to your computer and use it in GitHub Desktop.
Save Dalboz/fbc3b814e1a3993c3e9d38d576b70133 to your computer and use it in GitHub Desktop.
Ruptura para el rango de fechas seleccionadas
Function SplitYear01(fechainicio As Date, fechaFin As Date) As Variant
Dim fechaActualInicio As Date
Dim fechaActualFin As Date
Dim finAnoFiscal As Date
Dim umatriz As Collection
Dim tupla() As Variant
Dim i As Integer
Dim count As Integer
' Crear una colección para almacenar las tuplas
Set umatriz = New Collection
' Iniciar la fecha actual como la fecha de inicio
fechaActualInicio = fechainicio
' Ciclo mientras la fecha actual esté antes o igual a la fecha final
Do While fechaActualInicio <= fechaFin
' Calcular el fin del año fiscal de la fecha de inicio actual
If Month(fechaActualInicio) >= 10 Then
finAnoFiscal = DateSerial(Year(fechaActualInicio) + 1, 9, 30)
Else
finAnoFiscal = DateSerial(Year(fechaActualInicio), 9, 30)
End If
' La fecha final del rango actual será el menor entre el fin del año fiscal o la fecha final del rango
If finAnoFiscal < fechaFin Then
fechaActualFin = finAnoFiscal
Else
fechaActualFin = fechaFin
End If
' Almacenar la tupla (fecha de inicio y fecha de fin) en la colección
umatriz.Add Array(Format(fechaActualInicio, "dd/mm/yyyy"), Format(fechaActualFin, "dd/mm/yyyy"))
' Mover la fecha de inicio al siguiente día del año fiscal
fechaActualInicio = DateAdd("d", 1, finAnoFiscal)
Loop
' Convertir la colección en una matriz bidimensional
count = umatriz.count
ReDim tupla(1 To count, 1 To 2)
For i = 1 To count
tupla(i, 1) = umatriz(i)(0)
tupla(i, 2) = umatriz(i)(1)
Next i
' Devolver la matriz bidimensional
SplitYear01 = tupla
' Limpiar la colección
Set umatriz = Nothing
End Function
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment