Este fórum está sendo desativado

Depois de 9 anos, este fórum será desativado. Mas calma.... estamos migrando para uma comunidade no DISCORD. Junte-se a nós.

ENTRAR PARA DISCORD

Dúvidas sobre cálculos, funções simples e aninhadas, fórmulas matriciais, etc.
  • Avatar do usuário
#49361
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.
Você não está autorizado a ver ou baixar esse anexo.
Editado pela última vez por Aroldo78 em 17 Out 2019 às 22:19, em um total de 2 vezes.
#49373
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
#49403
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
#49409
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
#49411
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
#49691
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
#49693
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
#49695
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
#49712
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
Você não está autorizado a ver ou baixar esse anexo.
long long title how many chars? lets see 123 ok more? yes 60

We have created lots of YouTube videos just so you can achieve [...]

Another post test yes yes yes or no, maybe ni? :-/

The best flat phpBB theme around. Period. Fine craftmanship and [...]

Do you need a super MOD? Well here it is. chew on this

All you need is right here. Content tag, SEO, listing, Pizza and spaghetti [...]

Lasagna on me this time ok? I got plenty of cash

this should be fantastic. but what about links,images, bbcodes etc etc? [...]

Estamos migrando para uma comunidade no Discord