Notifications
Clear all

Índice corresp

5 Posts
3 Usuários
2 Reactions
1,746 Visualizações
(@payzzanno)
Posts: 0
New Member
Topic starter
 

Bom dia a todos.

Por gentileza, eu gostaria, se possível, da ajuda dos senhores.

Estou tentando atribuir a função (índice corresp) no script abaixo. Não sei onde estou errando.

Será que os senhores poderiam me ajudar

Abaixo o código. 

Sub IndiceCorresp()
  Dim Linha As Double
  Dim QtdLinha As Double
  Dim Estoque As Double
  Linha = 1
  With ActiveSheet
   Do
     Linha = Linha + 1
     QtdLinha = WorksheetFunction.CountA(ActiveSheet.Range("A:A"))
     Estoque = WorksheetFunction.Index(Plan3("a:z"), WorksheetFunction.Match(Plan3("a:a"), 0, 2), .Cells(Linha, 1).Value)

    .Cells(Linha, 2).Value = Estoque

    Loop Until QtdLinha = Linha
  End With
End Sub 

Com a fórmula fica assim. 

=SE(ÉERROS(ÍNDICE(Plan3!A:G;CORRESP(A2;Plan3!A:A;0);2));0;ÍNDICE(Plan3!A:G;CORRESP(A2;Plan3!A:A;0);2))

Mas, eu gostaria de fosse feito de acordo com o preenchimento da coluna (A) como está no código.

Apenas, não estou vendo o que estou fazendo de errado.

Desde já agradeço a todos.

 

 

 

 

 

 
Postado : 01/11/2020 7:58 pm
(@anderson)
Posts: 0
New Member
 

Nunca crie um tópico sem anexar arquivo de exemplo.

Este vídeo explica o uso das funções INDEX, MATCH:

https://youtu.be/TsHHG4zz8b

 

Este vídeo explica como tratar erro com a função MATCH:

 

https://youtu.be/qSEjhOKIq4c

 

 

Sub IndiceCorresp()
Planilha2.Select
Dim Linha As Double
Dim QtdLinha As Double
Dim Estoque As Double
Linha = 1
With ActiveSheet
Do
Linha = Linha + 1
QtdLinha = WorksheetFunction.CountA(ActiveSheet.Range("A:A"))

If Not IsError(Application.Match(.Cells(Linha, 1), Plan3.Columns(1), 0)) Then

Estoque = WorksheetFunction.Index(Plan3.Range("a:z"), WorksheetFunction.Match(.Cells(Linha, 1), Plan3.Columns(1), 0), 2)
Else

Estoque = 0

End If
.Cells(Linha, 2).Value = Estoque

Loop Until QtdLinha = Linha
End With
End Sub

 

 

Quando se usa ActiveSheet, é necessário ter certeza de que a planilha desejada está ativa no momento da execução do código. Por isso, usei Planilha2.Select logo no início do código.

 

O exemplo abaixo já está funcionando, basta você alterar as colunas de acordo com seu arquivo:

 

Sub IndiceCorresp()
Planilha2.Select
Dim Linha As Double
Dim QtdLinha As Double
Dim Estoque As Double
Linha = 1
With ActiveSheet
Do
Linha = Linha + 1
QtdLinha = WorksheetFunction.CountA(ActiveSheet.Range("A:A"))
Estoque = WorksheetFunction.Index(Plan3.Range("a:z"), WorksheetFunction.Match(.Cells(Linha, 1), Plan3.Columns(1), 0), 2)

.Cells(Linha, 2).Value = Estoque

Loop Until QtdLinha = Linha
End With
End Sub

 

 

Este post foi modificado 4 anos atrás 9 vezes por Anderson
 
Postado : 02/11/2020 9:48 am
PAYZZANNO reacted
(@edsonbr)
Posts: 0
New Member
 

Bem vindo ao fórum Planilhando, @payzzanno!

Como essa é sua primeira atividade conosco, sugerimos que, ao postar uma dúvida, anexe também seu aquivo com a dúvida já no layout definitivo e descaracterizando informações confidenciais, caso existam, mas mantendo a estrutura. Mostre no arquivo, mesmo que manualmente, como ficaria o resultado esperado. Isso certamente agiliza a resposta.

 
Postado : 03/11/2020 8:04 am
(@payzzanno)
Posts: 0
New Member
Topic starter
 

Obrigado @anderson.

Não observei o detalhe anteriormente.

Agradeço mais uma vez.

Acertou na mosca.


 

 
Postado : 03/11/2020 8:54 am
(@payzzanno)
Posts: 0
New Member
Topic starter
 

Prezado @edsonbr peço desculpas por minha falta de atenção em relação as regras.

Serei mais atento pára não cometer tal imprudência.

Obrigado.

 

 

 
Postado : 03/11/2020 8:57 am
EdsonBR reacted