Eu tenho uma planilha com mais de 3k linhas e 15 colunas. Cada coluna é preenchida com um número aleatório de 1 a 25. Muito parecido com os resultados da loteria, onde cada coluna é um número sorteado na loteria. (de 1 a 25)
Preciso comparar se a sequência na linha 1 (para todas as 3k+ linhas) é encontrada em qualquer outra linha. Ou seja, se os resultados da loteria apareceram duas vezes. O problema é que a bola 1 pode aparecer em qualquer uma das 15 colunas diferentes.
A fórmula do Excel é uma fórmula que posso colocar na coluna a seguir? Ou um código VBA (idealmente) para comparar?
Apenas um exemplo de brinquedo, mas você poderia tentar algo assim, assumindo que cada linha esteja em ordem crescente:
Exemplo sem correspondências
Se a resposta for maior que 1, há uma duplicata.
No Excel 2016, pode ser necessário inseri-lo na matriz ou usar Sumproduct.
Aqui está um exemplo com uma correspondência
Por favor, tente o próximo código. Deve fazer o trabalho em alguns segundos, de acordo com a probabilidade de não haver correspondência nas primeiras colunas:
Como retorno envia uma mensagem mencionando a linha correspondente ...
O código pode ser adaptado para (também) retornar as linhas com um número específico de correspondências (14, por exemplo...).
Ou pode registrar as linhas correspondentes e enviar uma mensagem no final, mencionando-as.
Por favor, envie algum feedback depois de testá-lo.
Editado :
A próxima versão envia uma única mensagem enumerando todas as correspondências:
Segunda edição :
A próxima versão é ainda mais rápida. Ele aproveita o fato de que duas matrizes podem ser combinadas diretamente, portanto, não há iteração entre os elementos da matriz de referência:
Obrigado pelo desafio divertido! Embora você tenha aceitado uma resposta, gostaria de ver uma maneira de fazer isso sem o VBA e com o Excel 2016:
=CONCAT(TEXT(SMALL(C2:Q2, COLUMN(C2:Q2) - COLUMN($C$2) + 1), "00"))
=COUNTIF($S$2:$S$11, S2) > 1
=$T2
Designar linha contendo os mesmos números inteiros
Para cada linha, isso preencherá a
R
coluna com uma lista separada por vírgulas (pelo menos dois números) de cada índice de linha (linha do intervalo) contendo os mesmos 15 números. A célula resultante fica vazia quando nenhuma linha 'correspondente' é encontrada,Infelizmente, o
Count/Match
combo tem um desempenho muito lento em um número tão grande de comparações. Demorou quase 4 minutos para concluir a tarefa de 3 mil linhas para encontrar o único conjunto de duas linhas 'correspondentes'.Os dados de amostra foram gerados usando a fórmula MS365 lenta, mas relativamente fácil de criar:
copiado e colado como valores. Ele pode ser replicado com uma macro VBA rápida (por exemplo, procure por shuffle array ).