Macro vba excel hallar dato de la celda superior con condición

Intento crear una macro para calcular la columna D, es decir que me ponga en la línea que corresponde a una compra, el dato de la columna C inmediatamente anterior que corresponde a una venta . Hasta ahora esto siempre lo hago así para hacer referencia a celdas anteriores:

If cells(i, "A").value = cells(i-1, "A") 

 cells(j, "D") = cells(j-1, "C")

end if

Pero este caso es distinto, porque no siempre lo que figura automáticamente anterior es una venta. ¿Alguna sugerencia? Gracias!

Respuesta
1

Prueba la siguiente:

Sub Hallar_Valor_Venta()
  Dim a As Variant, b As Variant
  Dim i As Long, j As Long
  '
  a = Range("A2:C" & Range("A" & Rows.Count).End(3).Row)
  ReDim b(1 To UBound(a), 1 To 1)
  '
  For i = UBound(a) To 1 Step -1
    If LCase(a(i, 2)) = LCase("compra") Then
      For j = i - 1 To 1 Step -1
        If a(j, 1) = a(i, 1) Then
          If LCase(a(j, 2)) = LCase("venta") Then
            b(i, 1) = a(j, 3)
            Exit For
          End If
        Else
          Exit For
        End If
      Next
    End If
  Next
  Range("D2").Resize(UBound(b)).Value = b
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas