Excel VBA. Función Index/Match en macro

Estoy intentando llevarme a Visual Basic la función INDICE / MATCH de Excel:

Sería así y me funciona correctamente arrastrando la fórmula al resto de la columna (como en la img que adjunto).

=INDICE(Tablas!$N$6:$Q$8;COINCIDIR(A2;Tablas!$O$6:$O$8;1);4)

Adjunto el fichero de ejemplo donde uso esa fórmula y también el comienzo de una macro donde he intentado traducir lo mismo en código para que salga automáticamente en la columna B (Valor 2). Pero se me para en Match y no termino de sacar cómo ponerle la referencia para que recorra el rango de toda la columna.

¿Alguien qué me pueda echar un cable?

Mil gracias!

1 respuesta

Respuesta
1

Tu fórmula es equivalente a BuscarV:

=BUSCARV(A2;Tablas!$O$6:$Q$8;3;1)

Si quieres el código para poner todas las fórmulas en la columna B hasta donde la columna A tenga datos:

Sub Formula1()
  With Range("B2:B" & Range("A" & Rows.Count).End(3).Row)
    .Formula = "=VLOOKUP(A2,Tablas!$O$6:$Q$8,3,1)"
  End With
End Sub

Si quieres reemplazar las fórmulas por los resultados:

Sub Formula1()
  With Range("B2:B" & Range("A" & Rows.Count).End(3).Row)
    .Formula = "=VLOOKUP(A2,Tablas!$O$6:$Q$8,3,1)"
    .Value = .Value
  End With
End Sub

Prueba y me comentas.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas