Cómo convertir una fórmula de Excel en código macro vba

Cómo convertir una fórmula de Excel en código macro vba

¿Cómo convierto lo siguiente en código macro vba? =ÍNDICE(CLASIFICACIÓN,COINCIDENCIA(VERDADERO,ES NÚMERO(BUSCAR(NOMBRES,O12)),0))

Tengo una columna (O) en la Hoja1 en la que es necesario buscarla. Tengo dos columnas en la hoja2 que está definida con un nombre (Nombres y Clasificación). Cuando se encuentra un nombre en la columna O de la Hoja 1, la Columna P tiene el valor correspondiente de la clasificación de la Hoja 2

Hoja 1 Columna O el nombre de nuestro cliente es John Doe

Hoja 2 Nombre Clasificación John Doe Clase A

La columna P de la Hoja 1 tendrá el valor Clase A

¡Por favor ayuda!

Respuesta1

Dado que los datos de muestra no están disponibles, supongo que

  • Sheet 1Columna O, Nombres en los que se buscará O2:O10.
  • Sheet 2tiene Clasification & Names, están Named rangeen A2:A10& B2:B10.
  • Necesita resultados en el rango P2:P10en Sheet1.

Primero, me gustaría sugerir cómo asignar una fórmula de Excel al código VBA.

Range("P2").FormulaArray = "=IFERROR(INDEX(Clasification,MATCH(TRUE,ISNUMBER(SEARCH(Names,O2)),0)),""No Found"")"

NÓTESE BIENNecesita una fórmula de matriz (CSE) para que .FormulaArrayse haya utilizado.


Pero dado que Named Rangees necesario declararlo mientras se usa con VBA Macro, me gustaría recomendarle el siguiente código para usarlo como Standard Module.

Sub Formula()

Dim Clasification As Range
Dim Names As Range


 Set Clasification = Sheets("Sheet2").Range("A2:A10")
 Set Names = Sheets("Sheet2").Range("B2:B10")


Range("P2").FormulaArray = "=IFERROR(INDEX(Clasification,MATCH(TRUE,ISNUMBER(SEARCH(Names,O2)),0)),""No Found"")"
Range("P2:P10").FillDown
End Sub

Ajuste las referencias de celda y los rangos con nombre en el código según sea necesario.

información relacionada