Como converter uma fórmula do Excel em código macro VBA

Como converter uma fórmula do Excel em código macro VBA

Como faço para converter abaixo em código macro vba? =ÍNDICE(CLASSIFICAÇÃO,CORESP(VERDADEIRO,ÉNÚMERO(PESQUISA(NOMES,O12)),0))

Eu tenho uma coluna (O) na Planilha1 na qual ela precisa ser pesquisada. Tenho duas colunas na planilha2 definidas com um nome (Nomes e Classificação). Quando um nome é encontrado na Coluna O da Planilha1, a Coluna P terá o valor correspondente da classificação da Planilha2

Sheet1 Coluna O o nome do nosso cliente é John Doe

Classificação do nome da planilha 2 John Doe Classe A

Sheet1 Coluna P terá o valor Classe A

Por favor ajude!

Responder1

Como os dados de amostra não estão disponíveis, presumo que

  • Sheet 1Coluna O, Nomes a serem pesquisados O2:O10.
  • Sheet 2tem Clasification & Names, estão Named rangeem A2:A10& B2:B10.
  • Você precisa de resultados no intervalo P2:P10em Sheet1.

Agora, primeiro, gostaria de sugerir como atribuir a fórmula do Excel ao código VBA.

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

ObservaçãoVocê precisa de uma fórmula Array (CSE) para que .FormulaArrayseja usada.


Mas como Named Rangeé/são precisam ser declarados durante o uso com macro VBA, gostaria de recomendar o seguinte código para usar 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 as referências de células e intervalos nomeados no código conforme necessário.

informação relacionada