isso seria muito mais fácil usando uma linguagem de programação. Basta carregar seus valores em arrays (a, b, c, d, e) e, em seguida, iterar por eles em loops aninhados. Talvez algo como isso possa se aplicar ao excel?
referência a perguntas e respostas abaixo, como gerar toda a combinação possível de 3 dígitos dos números 0-6
Eu tenho casos semelhantes (preciso gerar todas as combinações possíveis), mas para um conjunto de valores como na tabela abaixo, o total de possibilidades será de 3024 combinações
A B C D E
54 23 43 1 1
21 45 433 2 51
25 65 456 3 3
65 66 5678 100
77 980 5
90 878 6
909
combinações serão parecidas com
A B C D E
54 23 43 1 1
54 23 43 1 51
54 23 43 1 3
54 23 43 2 1
54 23 43 2 51
54 23 43 2 3
...
...
...
65 909 878 6 3
manualmente, vai demorar uma eternidade e francamente falando, eu não sou um especialista em excel. por favor me ajude.
isso seria muito mais fácil usando uma linguagem de programação. Basta carregar seus valores em arrays (a, b, c, d, e) e, em seguida, iterar por eles em loops aninhados. Talvez algo como isso possa se aplicar ao excel?
Aqui está um script que pode ser facilmente ajustado em vba para fazer o que você quer.
Ele assume que os dados estão nas colunas A-C (sem cabeçalho) e nas colunas E-G. Para mais colunas de entrada, você precisaria de mais loops aninhados. Também pode haver alguns ajustes dependendo de onde você deseja colar dados, mas deve chegar a 90% do caminho até lá.
Sub calcCombinations()
Dim lastRowA As Long, lastRowB As Long, lastRowC As Long
Dim CurRowA As Long, CurRowB As Long, CurRowC As Long, pasteRow As Long
pasteRow = 1
With ActiveSheet
lastRowA = .Range("A" & .Rows.Count).End(xlUp).Row
lastRowB = .Range("B" & .Rows.Count).End(xlUp).Row
lastRowC = .Range("C" & .Rows.Count).End(xlUp).Row
For CurRowA = 1 To lastRowA
For CurRowB = 1 To lastRowB
For CurRowC = 1 To lastRowB
.Range("E" & pasteRow).Value = .Range("A" & CurRowA).Value
.Range("F" & pasteRow).Value = .Range("B" & CurRowB).Value
.Range("G" & pasteRow).Value = .Range("C" & CurRowC).Value
pasteRow = pasteRow + 1
Next
Next
Next
End With
End Sub
Tags microsoft-excel