Opsss....
Enquanto eu fazia em VB, o Franco fez via fórmula, que ficou muito bom por sinal.
Segue abaixo a macro. Para inserir a macro:
- Entre na planilha
- Tecle ALT+F11
- Deve abrir a tela de desenvolvimento
- Manu INSERIR e depois MÓDULO
- Copie e cole a macro abaixo na tela grande em branco
Código: Selecionar todosSub Compara()
Set Digi = Range("F4:H4") 'Faixa de digitação
Set Posi = Range("B3:D7") 'Faixa de posições
Set Codi = Range("A3:A7") 'Faixa de códigos
Set Msgs = Range("J4:J" & 4 + 2 + Codi.Rows.Count) 'Faixa de mensagens
Msg = "A faixa de códigos deve conter apenas 1 coluna, e ter a mesma quantidade " & _
"de linhas que tem a faixa de posições, ou seja, " & Posi.Rows.Count & "."
If Codi.Columns.Count <> 1 Or Codi.Rows.Count <> Posi.Rows.Count Then MsgBox Msg: GoTo Fim
Msg = "A faixa de mensagens deve ter no mínimo a mesma quantidade de linhas " & _
"que a quantidade de códigos, ou seja, " & Codi.Rows.Count & "."
If Codi.Columns.Count <> 1 Or Codi.Rows.Count <> Posi.Rows.Count Then MsgBox Msg: GoTo Fim
Qtd = Application.WorksheetFunction.CountA(Digi)
If Qtd = 0 Then Qtd = 2E+22
Dim Cont(): ReDim Cont(0 To Posi.Rows.Count)
For Each CelA In Posi
For Each CelB In Digi
If CelA.Value = CelB.Value Then _
Cont(CelA.Row - Posi.Row + 1) = Cont(CelA.Row - Posi.Row + 1) + 1: Exit for
Next
Next
Msgs.ClearContents
Lin = 1
Cont(0) = 0
For Idx = 1 To UBound(Cont)
If Cont(Idx) >= Qtd Then
Lin = Lin + 1: Cont(0) = Cont(0) + 1
Msgs.Item(Lin).Value = "Sequencia " & Codi.Item(Idx).Value
End If
Next
If Cont(0) = 0 Then Msgs.Item(1).Value = "Sem registros" _
Else Msgs.Item(1).Value = "Encontrado " & Cont(0) & " registros:"
Fim:
Set Digi = Nothing
Set Posi = Nothing
Set Codi = Nothing
Set Msgs = Nothing
End Sub
Procurei deixar a definição das faixas todas no início pra facilitar caso prefira mudar isso.
Insira na planilha um botão de acionamento, ou coloque na execução automática:
- Na tela de desenvolvimento, na coluna da esquerda, dê um duplo-clique sobre o nome da planilha.
- Copie a macro abaixo para área grande em branco.
Código: Selecionar todosPrivate Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("F4:H4")) Is Nothing Then Call Compara
End Sub
Jimmy San Juan
Nas mensagens que te ajudaram de alguma forma, dê seu LIKE: clique no "positivo" (ícone OBRIGADO).
Se o problema está encerrado, por favor, clique em MARCAR RESOLVIDO.