Comparar fechas guardadas en un array con macro excel

Quisiera poder comparar el valor de una fecha de la columna A con todas las fechas de la columna B para eso se me ocurrio guardar los valores de la columna B en un arreglo, ahora quisera poder comparar el valorfecha con todas las fechas del arreglo para encontrar la fecha menor más cercana como semuestra en la imagen y guardar esta fecha encontrada en una variable.

¿Cómo puedo hacer esta comparacion?

u = Cells(Rows.Count, 1).End(xlUp).Row

Dim savefechas

savefechas = Range(“b1", Range(“b1").End(xlDown))

For i = 1To u
valorfecha = Cells(i + 1, 1)
Next

2 Respuestas

Respuesta
1

Paula,

A ver si entiendo y las demas fecha como seria por elijes

¿Seria con todas las fechas de la columna A?

Es decir buscar la fecha mas cercana a cada fecha de la columna A en B

Y guandarla en una variable

Si asi seria buscar la fecha menor más cercana a cada fecha de la columna A en B y guardarla en una variable 

Si asi seria, buscar la fecha menor mas cercana a cada fecha de la columna A en B y guardarla en una variable, para despues realizar una operacion

Paula,

Para empezar tendrias que ordenas las fechas de forma acendente las dos columna

Y luego corer la macro

Estos seria asi

Sub Macro ()
For Each celda In Range("b2:b13")
If celda = "" Then Exit Sub
variable = Application.WorksheetFunction.VLookup(celda, Range("c2:c31"), 1, True)
MsgBox variable
Next
end sub

En mi ejemplo te la puse a que el resultado salga en mesaje

NO OLVIDE VALORA 
Respuesta
2

Hol Paula:

Si cada fecha de la columna A tiene una fecha menor en la columna B, entonces una variable no es suficiente para todas las fechas.

Ya que mencionas el arreglo. En la siguiente propuesta, cargo las fechas de la columna A en el arreglo "a", las fechas de la columna B en el arreglo "b". Realiza las comparaciones y para cada fecha de la columna A se almacena su menor fecha de la columna B dentro del arreglo "c".

Con el resultado en el arreglo "c", puedes poner el resultado, por ejemplo, en la columna C.

Sub Comparar_fechas()
  Dim a As Variant, b As Variant, c As Variant
  Dim i As Long, j As Long, nMin As Variant
  a = Range("A1", Range("A" & Rows.Count).End(3)).Value2
  b = Range("B1", Range("B" & Rows.Count).End(3)).Value2
  ReDim c(1 To UBound(a), 1 To 1)
  For i = 1 To UBound(a)
    nMin = 0
    For j = 1 To UBound(b)
      If b(j, 1) < a(i, 1) And b(j, 1) > nMin Then
        nMin = b(j, 1)
      End If
    Next
    c(i, 1) = IIf(nMin = 0, "", nMin)
  Next
  Range("C1").Resize(UBound(c)).Value = c
End Sub

S a l u d o s. Dante Amor

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas