Página 1 de 1
Combinações...
Enviado: 23 Out 2023 às 16:33
por cbaur
Olá!
Gostaria de uma dica de como fazer no VBA do excel um código que monte as combinações possíveis de alguns números como no exemplo abaixo:
São dez colunas com cinco linhas, e quero montar todas as combinações possíveis.
02 01 04 10 02 45 34 08 23 21
07 09 45 22 04 53 42 23 28 25
22 30 57 32 08 69 64 28 37 78
56 33 88 45 48 73 75 38 46 87
67 87 91 66 93 84 83 44 50 99
Combinações:
02 01 04 10 02 45 34 08 23 21
02 01 04 10 02 45 34 08 23 25
02 01 04 10 02 45 34 08 23 78
02 01 04 10 02 45 34 08 23 87
02 01 04 10 02 45 34 08 23 99
02 01 04 10 02 45 34 08 28 21
02 01 04 10 02 45 34 08 28 25
02 01 04 10 02 45 34 08 28 78
02 01 04 10 02 45 34 08 28 87
02 01 04 10 02 45 34 08 28 99
02 01 04 10 02 45 34 08 37 21
02 01 04 10 02 45 34 08 37 25
| | | | | | | | | |
67 87 91 66 93 84 83 44 50 99
Re: Combinações...
Enviado: 24 Out 2023 às 19:19
por osvaldomp
Como serão as combinações após a combinação abaixo ?
2 1 4 10 2 45 34 8 50 99
Re: Combinações...
Enviado: 25 Out 2023 às 13:10
por cbaur
Olá, Osvaldo!
A ideia é combinar cada número da linha conforme a variação de cada coluna.
Anexo eu coloquei uma planilha que exemplifica o que desejo.
Normalmente, eu faço isso manualmente. Mas é muito trabalhoso. Por isso eu queria automatizar esse processo.
Observe que cada coluna vai variando conforme vai se combinando as linhas.
A ideia e pegar os números da primeira linha e variar a coluna 10, depois varia a coluna 9 e 10, depois varia a coluna 8, 9 e 10, e assim sucessivamente, até chegar na última linha, que seria a enésima combinação.
Não sei se consegui me expressar melhor agora.
Obs.: eu sei que nesta matriz de 5 linhas x 10 colunas vou ter um número máximo de 5^10 = 9.765.625 combinações possíveis.
Não haverá nenhuma outra combinação após 2 1 4 10 2 45 34 8 50 99, pois esta seria a última combinação possível.
Re: Combinações...
Enviado: 25 Out 2023 às 18:23
por osvaldomp
cbaur escreveu: ↑25 Out 2023 às 13:10
"Normalmente, eu faço isso manualmente."
Você faz mais de 9 milhões de combinações manualmente? Quanto tempo leva ? Com que frequência você faz isso?
"Não haverá nenhuma outra combinação após 2 1 4 10 2 45 34 8 50 99, pois esta seria a última combinação possível."
Essa combinação que coloquei não é a última possível, e sim é a última que trata das colunas 10 e 9, e a combinação seguinte irá incluir a coluna 8, que você não informou como deseja fazer.
No arquivo anexo coloquei na sua planilha as observações e a sequência de combinações que eu suponho que você quer.
Curiosidade: qual a finalidade de se escrever 9+ milhões de combinações? Qual é o uso disso?
Re: Combinações...
Enviado: 26 Out 2023 às 11:55
por cbaur
Bom dia, Osvaldo!
Eu sei que é curioso fazer 9M de combinações.
Mas na verdade quando uma sequência de combinação apresenta uma repetição de um ou mais números esta combinação eu descarto. No fim, de 9M isso cai para algo perto de 50 a 100k combinações.
Eu tenho aqui, no meu trabalho, um equipamento que faz análise de papel e celulose e que me fornece algumas informações. Estou fazendo um projeto de projeção de defeito conforme os dados que o equipamento me fornece. Com isso posso verificar, com alguma antecedência, possíveis desvios e atuar rapidamente.
A ideia é, com estatística, projetar algum defeito para o futuro.
Quanto as observações que colocaste na planilha, é exatamente aquela a sequencia que necessito.
Obrigado pelo apoio!
Re: Combinações...
Enviado: 26 Out 2023 às 18:28
por osvaldomp
Grato pelas explicações. Me parece um trabalho de alto nível.
Há décadas essa sua empresa (CMPC) tem cultivo próprio de árvores aqui próximo à cidade de S.Paulo. E as árvores cultivadas são utilizadas como matéria prima. Possivelmente o cultivo próprio é por razões econômicas, mas o efeito principal e elogiável é a convivência com a Natureza ao invés de simplesmente explorar a Natureza (passar a boiada).
Mais uma dúvida. Concluídas as combinações com a primeira linha (esta ~~~> 2 1 4 10 2 45 34 8 23 21 )
(e fazendo uma projeção dessas combinações com a primeira linha, a última combinação seria essa abaixo),
2 87 4 10 2 45 34 8 23 21
2 87 4 10 2 45 34 8 23 25
2 87 4 10 2 45 34 8 23 78
2 87 4 10 2 45 34 8 23 87
2 87 4 10 2 45 34 8 23 99
as combinações seguintes envolverão a segunda linha? Feitas as combinações com a segunda, as seguintes envolverão a terceira? Depois a quarta e a quinta?
Se sim, você poderia fazer manualmente e colocar aqui no tópico as duas ou três combinações iniciais com a linha 2 ?
E as duas ou três iniciais com a linha 3 ?
Re: Combinações...
Enviado: 27 Out 2023 às 14:43
por cbaur
Eu enviei no arquivo anexo, um exemplo de como seria as combinações com apenas duas, três ou quatro linhas.
Com duas linhas eu tenho um total de 1024 combinações.
Com três linhas temos 59049 combinações.
Com quatro linhas temos 1048576 combinações.
A ideia é, então, expandir o exemplo para três, quatro ou cinco linhas, com o mesmo pensamento do de duas linhas.
Não é tão complexo, mas é um pouco difícil de explicar a lógica. Rsssss...
Re: Combinações...
Enviado: 27 Out 2023 às 22:54
por Foxtri
Boa noite
Segue uma opção
Seria Viável ???
Até
Foxtri
Re: Combinações...
Enviado: 30 Out 2023 às 12:48
por cbaur
Olá, Foxtri!
Agradeço pelo apoio, mas não é muito viável, pois como são 5 linhas x 10 colunas isso me dará mais de 9M de combinações. A planilha iria se tornar lenta e um arquivo gigantesco.
Eu até já usei um processo parecido para gerar combinações com menor número de combinações total.
Eu queria mesmo é um código VBA para realizar estas combinações. Eu só não estou conseguindo pensar em uma lógica simples e rápida para gerar estas combinações.
Carlos Baur.
Re: Combinações...
Enviado: 30 Out 2023 às 14:29
por Foxtri
Boa tarde.
Fiz um exemplo em VBA.
Veja se ajuda.(Não testei com 4 e nem com 5).
Até
Foxtri
Re: Combinações...
Enviado: 01 Nov 2023 às 20:14
por osvaldomp
cbaur escreveu: ↑25 Out 2023 às 13:10
Olá, Osvaldo!
Obs.: eu sei que nesta matriz de 5 linhas x 10 colunas vou ter um número máximo de 5^10 = 9.765.625 combinações possíveis.
No arquivo anexo coloquei um código que gera as 9.765.625 combinações desejadas.