AJUDA COM LOGICA

Anônima
2024-12-07T00:04:15+00:00

Olá tudo bem, espero que sim.

fiz exemplo Excel que faz geração da matriz e o desdobramento, a minha duvida é que resultado achei não está igual resultado esperado, a qtde vezes que números aparecem "resultado esperado" na combinação são iguais, 1 repete 5 vezes e assim para restante. com posso resolver para que se tenha essa balanceamento.

Qtde numero = 6

qtdePor bilhete = 4

Condição = 3

MATRIZ

1;2;3;4

1;2;3;5

1;2;3;6

1;2;4;5

1;2;4;6

1;2;5;6

1;3;4;5

1;3;4;6

1;3;5;6

1;4;5;6

2;3;4;5

2;3;4;6

2;3;5;6

2;4;5;6

3;4;5;6

RESULDADO esperado

1;2;3;5

1;2;4;6

1;3;4;5

1;3;5;6

2;3;4;6

2;4;5;6

Resultado que achei:

1, 2, 3, 4

1, 2, 5, 6

3, 4, 5, 6

1, 2, 3, 5

1, 2, 3, 6

1, 2, 4, 5

1, 2, 4, 6

Microsoft 365 e Office | Excel | Para uso doméstico | Windows

Pergunta bloqueada. Essa pergunta foi migrada da Comunidade de Suporte da Microsoft. É possível votar se é útil, mas não é possível adicionar comentários ou respostas ou seguir a pergunta.

0 comentários Sem comentários

1 resposta

Classificar por: Mais útil
  1. Anônima
    2024-12-07T07:36:07+00:00

    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

    Esta resposta foi útil?

    0 comentários Sem comentários