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 1
ColunaO
, Nomes a serem pesquisadosO2:O10
.Sheet 2
temClasification
&Names
, estãoNamed range
emA2:A10
&B2:B10
.- Você precisa de resultados no intervalo
P2:P10
emSheet1
.
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 .FormulaArray
seja 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.