1
resposta

tentando acessar uma célula de outra aba

Bom dia! Fiz esse curso para me ajudar a resolver uma questão, porém ainda não consegui. Se alguém puder, qualquer ajuda é bem vinda.

Tenho uma aba da planilha com uma coluna "nomes" e outra aba com 2 colunas: "nomes" e "sobrenomes".

Eu quero acessar uma célula de outra aba da planilha, e quero que, se o valor dessa célula for igual ao valor da outra, eu acesso a coluna do lado. Ou seja, se o nome da aba1 for igual ao nome na aba2, eu quero acessar o sobrenome.

Eu fiz esse For Each pensando: Para cada nome da Aba1 (que começa na linha 3, coluna 1 e vai até o fim); SE o valor nome na Aba1 for igual ao valor nome na Aba2, então o nome na Aba1 recebe o sobrenome (do mesmo nome) que está na aba2.

Sei que é um pouco confuso. Porém, o erro está batendo nessa primeira linha do for each, não sei se é erro de sintaxe ou algo do tipo.

For Each nome In Sheets("Aba1").Range(Selection.Cells(3, 1), Selection.End(xlDown))
    If StrComp([nome].Cells(nome.Row, 1).Value, [nomeAba2].Cells(Cél.Row - 1, 1).Value, vbTextCompare) = 0 Then
        alocar.nome = [nome].Cells(nome.Row, 2).Value
    End If
Next

Agradeço desde já!

1 resposta

Boa tarde Emanuelle, pelo que entendi, uma fórmula de ÍNDICE e CORRESP te atenderia. Caso queiras implementar a fórmula em macro VBA, segue o código, bastando copiá-lo no VBA e ajustar o range das linhas e colunas à tua planilha, se necessário. No caso de ele não encontrar o nome da Aba1 na Aba2, deixa o campo sobrenome vazio. Espero ter ajudado:

Application.Goto (ActiveWorkbook.Sheets("Aba2").Range("a3")) Selection.End(xlDown).Select

Application.Goto (ActiveWorkbook.Sheets("Aba1").Range("a3"))

Do While ActiveCell <> ""

    ActiveCell.Offset(0, 1).FormulaR1C1 = _
    "=IF(ISNA(INDEX('Aba2'!R3C2:R1048576C2,MATCH(RC[-1],'Aba2'!R3C1:R1048576C1,0))),"""",INDEX('Aba2'!R3C2:R1048576C2,MATCH(RC[-1],'Aba2'!R3C1:R1048576C1,0)))"
    ActiveCell.Offset(1, 0).Select
Loop

End Sub