Utilizar función consultarv en macro pero evaluando dos o más criterios

Actualmente tengo una macro que me evalúa si una celda no se encuentra vacía, a partir de allí, en la celda del lado derecho, va a aplicar la función consultarv, buscando el valor que se encuentra en dos columnas a la izquierda en una matriz llamada matriz127 que tengo creada en otra hoja del mismo libro, dicha matriz tiene 4 columnas y 100 filas. La primera columna tiene el CÓDIGO, la cual logro consultar sin problema. El problema radica en que por cada CÓDIGO existente, existen 3 posibles PRECIOS, y de la manera siguiente solo logro consultar uno solo, es decir el que esta en la columna 2.

Sub Buscar()
    Sheets("Comerciales"). Activate
    Range("G2"). Activate
        Do While Not IsEmpty(ActiveCell)
            ActiveCell.Offset(0, 1).FormulaR1C1 = "=VLOOKUP(RC[-2],matriz127,2,FALSE)"
            ActiveCell.Offset(1, 0).Activate
        Loop
    Fila_Final = Range("H" & Cells.Rows.Count).End(xlUp).Row
    Range("H2:H" & Fila_Final).Select
    Selection.NumberFormat = "0.00"
End Sub

En Excel lo he logrado, usando lo siguiente:

=SI($J$7=1;(CONSULTAV($I$7;matriz127;2;FALSO));SI($J$7=2;(CONSULTAV($I$7;matriz127;3;FALSO));SI($J$7=3;(CONSULTAV($I$7;matriz127;4;FALSO)))))

Es decir, no se anidar los if en la macro...

1 Respuesta

Respuesta
1

Escribir funciones en VBA es muy fácil.

Debes escribirla en la celda que la necesitas, en este caso utilicé G2, como normalmente escribimos cualquier fórmula.

Cuando la tengas, encendé la grabadora de macros, seleccioná la celda con la fórmula, colocá el cursor en la barra de fórmulas y presioná Enter.

Detené la grabadora y en un módulo tendrás el código.

En este caso, para G2 resultó con estas referencias:

    ActiveCell.FormulaR1C1 = _
        "=IF(R7C10=1,(VLOOKUP(R7C9,matriz127,2,FALSE)),IF(R7C10=2,(VLOOKUP(R7C9,matriz127,3,FALSE)),IF(R7C10=3,(VLOOKUP(R7C9,matriz127,4,FALSE)))))"

Si esto resolvió tu consulta no olvides valorarla, sino comentame tu dificultad.

Sdos

En efecto, tal cual como la colocaste funciona... pero, estás especificando manualmente las celdas. Intenté reemplazando por ejemplo, lo que colocaste "=IF(R7C10=1,..." por "=IF(RC[-2]=1... y no me funciona. ¿Alguna sugerencia?

Si, debes colocar las referencias según dónde coloques la fórmula.

Pasame la fórmula en Excel para la primer celda y te ajusto.

Sdos!

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas