Knapsack / Variação Sum-Total. No EXCEL, como obter todas as combinações de números em que as somas estão dentro de um determinado intervalo?

2

Olá, sou novo aqui e esperava que um de vocês pudesse me ajudar.

Note que este tópico é semelhante a alguns que estão por aí, mas nenhum respondeu exatamente a essa pergunta.

É exatamente o mesmo que esta pergunta não respondida: link

Meu problema é o seguinte: como usuário do Excel, eu tenho uma coluna de números, digamos

5, 6, 7, 8, 8, 9, 14, 17

e o que saber todas as combinações de somas que caem, por exemplo, dentro do intervalo de 25 a 35. Eu provavelmente terei apenas 4-5 entradas / números de coluna.

Existe mais uma restrição: quero que as combinações sejam tão pequenas quanto possível, mas ainda dentro do intervalo.

17 + 9 = 26 é bom, mas 17 + 9 + 5 = 31 é ruim (não deve ser contado) porque o grupo é maior que o necessário, embora ainda esteja dentro da faixa.

Assim, no geral, quero obter todas as combinações possíveis de números em uma coluna que somam dentro de um intervalo específico em que as somas são tão pequenas quanto possível, mas ainda dentro do intervalo.

Espero que alguém possa ajudar! Se não, alguém sabe onde eu poderia encontrar informações para eu posso aprender a me codificar:)

Felicidades e tenha um ótimo fim de semana !!

    
por ABC 26.03.2016 / 16:24

2 respostas

0

Coloque seus valores na coluna A e na coluna B coloque 0 ao lado deles.

Em C9 , digite a fórmula:

=SUMPRODUCT(A1:A8*B1:B8)

digite e execute esta macro curta:

Sub ABC()
    Dim i As Long, s As String
    Dim j As Long, K As Long
    Dim wf As WorksheetFunction
    Dim answer As String
    Set wf = Application.WorksheetFunction

    K = 1

    For i = 0 To 255
        s = wf.Dec2Bin(i, 8)
        For j = 1 To 8
            Cells(j, 2).Value = Val(Mid(s, j, 1))
        Next j
        If Range("C9").Value > 24 And Range("C9").Value < 36 Then
            answer = ""
            For j = 1 To 8
                If Cells(j, 2) = 1 Then answer = answer & "," & Cells(j, 1)
            Next j
            Cells(K, 4) = Mid(answer, 2)
            K = K + 1
        End If
    Next i
End Sub

Você obterá todas as 64 soluções listadas na coluna D :

Isto é baseado na sugestão de John Coleman.

    
por 26.03.2016 / 17:50
0

Os usuários do Excel geralmente se deparam com esse problema. Há um suplemento do Excel que facilita a localização de todas as combinações de números que correspondem aos seus critérios chamados SumMatch

A imagem incluída explica como configurar seus critérios para ver todas as combinações correspondentes. Ao modificar os critérios, você pode obter soluções usando uma avaliação gratuita do suplemento.

    
por 07.12.2016 / 22:53