Ocupo programar en VBA de Excel una macro utilizando la fórmula Lookup

Ocupo que el primer argumento de la fórmula sea un valor en una variable, en mi caso definí la variable "consecutivo"

Dim Consecutivo As Range
Set Consecutivo = ActiveCell

Y posteriormente defino en otra celda la formula

ActiveCell.FormulaR1C1 = _
        "=+VLOOKUP(consecutivo,'[PRUEBA Matriz de registro de pruebas y evaluaciones.xls]Matriz'!C3:C48,6,FALSE)"

Sin embargo con esta sintaxis no toma el valor de la variable consecutivo, sino que escribe literal la palabra.

1 respuesta

Respuesta
3

La macro funcionaría así:

Sub vl()
'Por.Dante Amor
    Set Consecutivo = ActiveCell
    ActiveCell.FormulaR1C1 = _
        "=+VLOOKUP(" & Consecutivo.Value & ",'[PRUEBA Matriz de registro de pruebas y evaluaciones.xls]Matriz'!C3:C48,6,FALSE)"
End Sub

Pero la fórmula no es funcional, ya que estás poniendo en la misma celda el valor a buscar y el resultado de la fórmula, esto no es posible.

Necesitas algo como esto,

Sub vl()
'Por.Dante Amor
    Set Consecutivo = Range("B3")
    ActiveCell = _
        "=VLOOKUP(" & Consecutivo.Address & ",'[PRUEBA Matriz de registro de pruebas y evaluaciones.xls]Matriz'!C3:H48,6,0)"
End Sub

Con esta macro lo que va a realizar es buscar el valor de la celda B3 y la fórmula la va a poner en la celda activa, por lo que la celda activa deberá ser otra celda diferente a la celda B3.

Cambia B3 por la celda que tiene el número que quieres buscar.

Otro problema con tu fórmula es que le estás indicando que te regrese la columna 6:

C3:C48, 6, FALSE

Pero solamente le estás indicando una columna, la columna C

C3:C48

Para que te regrese la columna 6, tienes que decirle que el rango de la matriz es desde la C hasta la H

C3:H48, 6,0)"

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas