Página 1 de 1

Conferência de resultados armazenando os iguais

Enviado: 17 Out 2019 às 13:37
por Aroldo78
Alguém aí pode me ajudar

Tenho uma planilha no Excel com os seguintes dados na aba plan1 tenho um conjunto de 10 números que vai da célula a1 até j1 estes resultados se estendem até a10000 : j10000, ou seja são 10 mil resultados de 10 números, aí na aba plan2 tenho 120 mil resultados de 10 números, que começa também na a1 até j1, e se estende até a120000 : j120000, eu quero fazer o seguinte vba que o Excel pegue na plan1 a célula a1 até j1 e confira na plan2 com a primeira célula a1 até j1, se todos os 10 resultados da plan1 coincidirem na mesma posição da plan2 ele armazene este número ou jogue para a plan3, ( neste caso se eles não coincidir com a linha 1, que então procure na linha 2 , linha 3, até a linha 120 mil, o resultado com 10 que coincidi, ou se nenhum coincidir,descartar este resultado ) ai fazer o mesmo com os resultados da linha 2 da plan1, então ir para linha3, e assim por diante até chegar na linha 10000. Entao depois disto, quero saber todos os resultados que coincidiram todos os 10 números na mesma posição, que eles possam ou ser exibidos ou aparecer na plan3.

Re: Conferência de resultados armazenando os iguais

Enviado: 17 Out 2019 às 17:09
por Jimmy
Aroldo,

Anexe uma pasta de trabalho com as 2 planilhas, mesmo que numa versão menor, para facilitar o desenvolvimento.

Quanto mais dados tiver, melhor, pois evita que seja usada uma solução que tem baixa performance. ZIP (ou RAR) se necessário.

Se esta mensagem colabora para a solução do problema, peço que dê um Like, clicando no botão com o "positivo", acima e a direita.

Jimmy San Juan

Conferência de resultados armazenando os iguais

Enviado: 17 Out 2019 às 22:20
por Aroldo78
anexei a pasta para vc dar uma olhada

Re: Conferência de resultados armazenando os iguais

Enviado: 19 Out 2019 às 07:21
por Jimmy
Bom dia Aroldo,

Já estou no final do desenvolvimento.

Uma questão: digamos que eu tenha uma determinada sequencia de 10 números, e ela aparece 2 vezes na planilha 1, e 5 vezes na 2.

Devemos formar um par com as 2 primeiras, e as demais apontamos como "sequencia repetida", ou formamos 2 pares, que é o possível de se formar (2 de cada planilha), e as 3 que sobram marcamos como repetidas? Como faremos?

Nas mensagens que colaboram para a solução do problema, peço que dê um Like, clicando no botão com o "positivo", acima e a direita.

Jimmy San Juan

Conferência de resultados armazenando os iguais

Enviado: 19 Out 2019 às 21:03
por Aroldo78
Pode apontar como sequência repetida
Jimmy escreveu:Aroldo,

Anexe uma pasta de trabalho com as 2 planilhas, mesmo que numa versão menor, para facilitar o desenvolvimento.

Quanto mais dados tiver, melhor, pois evita que seja usada uma solução que tem baixa performance. ZIP (ou RAR) se necessário.

Se esta mensagem colabora para a solução do problema, peço que dê um Like, clicando no botão com o "positivo", acima e a direita.

Jimmy San Juan
Anexei o arquivo para vc ver

Conferência de resultados armazenando os iguais

Enviado: 19 Out 2019 às 22:37
por Jimmy
Olá Aroldo,

Postei uma mensagem antes desta sua última. Acho que você não leu.

Nas mensagens que colaboram para a solução do problema, peço que dê um Like, clicando no botão com o "positivo", acima e a direita.

Jimmy San Juan

Re: Conferência de resultados armazenando os iguais

Enviado: 29 Out 2019 às 13:51
por Aroldo78
Boa tarde Jimmy alguma novidade sobre meu problema

Jimmy escreveu:Olá Aroldo,


Postei uma mensagem antes desta sua última. Acho que você não leu.

Nas mensagens que colaboram para a solução do problema, peço que dê um Like, clicando no botão com o "positivo", acima e a direita.

Jimmy San Juan

Re: Conferência de resultados armazenando os iguais

Enviado: 29 Out 2019 às 14:18
por Jimmy
Olá Aroldo,
Pode apontar como sequência repetida
Putz... desculpe. Só agora vi que você já havia respondido. Ainda bem que você deu uma cobrada.

Só dependia dessa resposta pra terminar. Ainda hoje te mando a solução.

Jimmy San Juan

Re: Conferência de resultados armazenando os iguais

Enviado: 29 Out 2019 às 15:03
por osvaldomp
Rode o código abaixo com a Plan1 como a planilha ativa. Se houver matrizes iguais o número da linha corresponde da Plan2 será colocado na coluna M da Plan1.
Deixei para rodar com 1000 linhas na Plan1 e com 1200 linhas na Plan2. Após testes iniciais remova os apóstrofos para processar todas as linhas em ambas as planilhas. Provavelmente levará um tempo suficiente para umas 3 ou 4 latinhas ... :D
Código: Selecionar todos
Sub ComparaMatrizes()
 Dim Matriz1(), Matriz2(), i As Long, a As Long, b As Long
  [M:M] = ""
  For a = 1 To 1000 '0
   For b = 1 To 1200 '00
    Matriz1 = Sheets("Plan1").Cells(a, 1).Resize(, 10).Value
    Matriz2 = Sheets("Plan2").Cells(b, 1).Resize(, 10).Value
     For i = 1 To 10
      If Matriz1(1, i) <> Matriz2(1, i) Then Exit For
      If i = 10 Then Cells(a, 13) = Cells(a, 13) & " " & b
     Next i
   Next b
  Next a
End Sub

Re: Conferência de resultados armazenando os iguais

Enviado: 29 Out 2019 às 21:02
por Jimmy
Olá Aroldo,

Aparentemente a macro é simples, mas o desafio não foi a busca do resultado, foi a luta contra o relógio. Fiz algumas versões de macro. Inicialmente demorou muitas horas pra rodar, depois passou a demorar muitos minutos, depois muitos segundos, e nesta última versão (última mesmo, porque tá difícil espremer e tirar mais tempo) ela tá demorando por volta de 10 segundos no meu PC (I3 2120 3.3GHz, 8Gb). Teste no seu e me informe pois me interessa saber.

A macro faz referência cruzada: ao encontrar uma correspondência da lista 1 com a 2, ela grava na 1 o número da linha correspondente na 2, e vice versa.

Quando encontra linhas duplicadas dentro da mesma lista, grava "Duplicada" naquela linha, e também o número da linha com a qual aquela é duplicada.

Nas linhas não encontradas de uma tabela na outra é gravado o texto "Não encontrada".

Os resultados são colocados na coluna L, e a coluna K é usada como auxiliar, mas é apagada no final.

A programação está um pouco complexa porque tentei melhorar a performance com técnicas que exigem mais linhas de código. Se tiver interesse em entende-lo mas tiver dúvidas, pode perguntar.

Me dá um retorno do funcionamento.

Se tiver algo que não está de acordo com o esperado, ou mesmo um erro, me avise e corrigimos.

Se esta mensagem colabora para a solução do problema, peço que dê um Like, clicando no botão com o "positivo", acima e a direita.

Jimmy San Juan