Uma família de softwares de planilhas da Microsoft com ferramentas para analisar, criar gráficos e comunicar dados.
Esta resposta foi traduzida automaticamente. Como resultado, pode haver erros gramaticais ou palavras estranhas.
Olá JCSILVA_527,
Obrigado por visitar a Comunidade da Microsoft.
Para extrair 6 linhas de 15, há um total de 5005 combinações. Entre estes, existem 70 combinações que atendem ao requisito de "cada número aparecendo exatamente 4 vezes". Se você precisar gerar todos os resultados possíveis, aqui está um código de referência:
Supondo que os dados estejam localizados na Planilha1, conforme mostrado:
Use o seguinte script:
Sub FindCombinations()
Dim ws1 As Worksheet, ws2 As Worksheet
Dim matrix As Variant
Dim i As Long, j As Long, k As Long, l As Long, m As Long, n As Long
Dim count(1 To 6) As Long
Dim valid As Boolean
Dim outputRow As Long
Set ws1 = ThisWorkbook.Sheets("Sheet1")
Set ws2 = ThisWorkbook.Sheets("Sheet2")
matrix = ws1.Range("A1:D15").Value
outputRow = 1
For i = 1 To 10
For j = i + 1 To 11
For k = j + 1 To 12
For l = k + 1 To 13
For m = l + 1 To 14
For n = m + 1 To 15
' Reset count array
For x = 1 To 6
count(x) = 0
Next x
' Count occurrences of each number
For x = 1 To 4
count(matrix(i, x)) = count(matrix(i, x)) + 1
count(matrix(j, x)) = count(matrix(j, x)) + 1
count(matrix(k, x)) = count(matrix(k, x)) + 1
count(matrix(l, x)) = count(matrix(l, x)) + 1
count(matrix(m, x)) = count(matrix(m, x)) + 1
count(matrix(n, x)) = count(matrix(n, x)) + 1
Next x
' Check if each number 1-6 appears exactly 4 times
valid = True
For x = 1 To 6
If count(x) <> 4 Then
valid = False
Exit For
End If
Next x
' Output valid combinations to Sheet2
If valid Then
ws2.Cells(outputRow, 1).Resize(1, 4).Value = ws1.Cells(i, 1).Resize(1, 4).Value
ws2.Cells(outputRow + 1, 1).Resize(1, 4).Value = ws1.Cells(j, 1).Resize(1, 4).Value
ws2.Cells(outputRow + 2, 1).Resize(1, 4).Value = ws1.Cells(k, 1).Resize(1, 4).Value
ws2.Cells(outputRow + 3, 1).Resize(1, 4).Value = ws1.Cells(l, 1).Resize(1, 4).Value
ws2.Cells(outputRow + 4, 1).Resize(1, 4).Value = ws1.Cells(m, 1).Resize(1, 4).Value
ws2.Cells(outputRow + 5, 1).Resize(1, 4).Value = ws1.Cells(n, 1).Resize(1, 4).Value
outputRow = outputRow + 7 ' Add an extra row for spacing
End If
Next n
Next m
Next l
Next k
Next j
Next i
End Sub
Esse script produzirá os resultados na Planilha2.
Espero que isso ajude a resolver seu problema. Se você tiver alguma dúvida ou precisar de mais ajuda, sinta-se à vontade para me informar.
Atenciosamente
Jonathan Z - MSFT | Especialista em suporte da comunidade Microsoft