Zmienna plecakowa / sumaryczna. W EXCEL, jak uzyskać wszystkie kombinacje liczb, których sumy mieszczą się w pewnym zakresie?


2

Cześć, jestem tu nowy i miałem nadzieję, że któryś z was może mi pomóc.

Uwaga: ten temat jest podobny do niektórych, ale żaden z nich nie odpowiedział na to pytanie.

Jest to dokładnie to samo, co pytanie bez odpowiedzi: https://stackoverflow.com/questions/31248379/vba-to-extract-values-from-a-list-until-the-sum-is-within-a-certain-range

Mój problem jest następujący: jako użytkownik programu Excel mam kolumnę liczb, powiedzmy

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

i co znać wszystkie kombinacje sum, które spadają na przykład w zakresie 25 - 35. Prawdopodobnie będę mieć tylko 4-5 wpisów / numerów kolumn.

Jest jeszcze jedno ograniczenie: chcę, aby kombinacje były jak najmniejsze, ale nadal w zakresie.

więc 17 + 9 = 26 jest dobre, ale 17 + 9 + 5 = 31 jest złe (nie należy liczyć), ponieważ grupa jest większa niż to konieczne, chociaż nadal mieści się w zakresie.

Tak więc ogólnie chcę uzyskać wszystkie możliwe kombinacje liczb w kolumnie, które sumują się, aby mieściły się w określonym zakresie, w którym sumy są tak małe, jak to możliwe, ale wciąż mieszczą się w zakresie.

Mam nadzieję, że każdy może pomóc! Jeśli nie, czy ktoś wie, gdzie mogę znaleźć informacje, abym mógł nauczyć się kodowania :)

Pozdrawiam i życzę udanego weekendu !!


Odpowiedzi:


0

Umieść swoje wartości w kolumnie ZA i w kolumnie b miejsce 0 obok nich.

Potem w C9 wprowadź formułę:

=SUMPRODUCT(A1:A8*B1:B8)

następnie wprowadź i uruchom to krótkie makro:

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

Otrzymasz wszystkie 64 rozwiązania wymienione w kolumnie re :

enter image description here

Jest to oparte na sugestii Johna Colemana.


Cześć! Dziękuję bardzo!!! To jest niezwykle pomocne! Czy wiesz, czy można w jakiś sposób uzyskać sumę liczb w kolumnie D? Właściwie pracuję z liczbami, które są procentami i dlatego sumują się do 100%. więc mam 5 wpisów po 20% każdy i chcę znaleźć kombinacje, które sumują się równe lub większe niż pewien próg, powiedzmy 70%, ale także równe lub mniejsze niż 100%. Byłoby więc wspaniale, gdybym mógł powiązać kod z progiem tak, że gdy aktualizacje progów tak robią wpisy, które sumują się lub przekraczają ten próg. Jeszcze raz dziękuję za fantastyczną pomoc !!!!!!!!!!
ABC

@ABC Jesteś mile widziany.
Gary's Student

Cześć! Dziękuję bardzo!!! To jest niezwykle pomocne! Czy wiesz, czy można w jakiś sposób uzyskać sumę liczb w kolumnie D? Właściwie pracuję z liczbami, które są procentami i dlatego sumują się do 100%. więc mam 5 wpisów po 20% każdy i chcę znaleźć kombinacje, które sumują się równe lub większe niż pewien próg, powiedzmy 70%, ale także równe lub mniejsze niż 100%. Byłoby więc wspaniale, gdybym mógł powiązać kod z progiem tak, że gdy aktualizacje progów tak robią wpisy, które sumują się lub przekraczają ten próg. Jeszcze raz dziękuję za fantastyczną pomoc !!!!!!!!!!
ABC

A może wiesz, czy możliwe jest uzyskanie wyniku z liczbami odpowiadającymi wierszom, w których istnieją używane wpisy? więc dla liczb 5 i 6, wyjście będzie 1, 2
ABC

ok, na podstawie twojego kodu teraz rozumiem, jak włączyć próg do kodu.
ABC

0

Użytkownicy programu Excel często napotykają ten problem. Istnieje dodatek Excel, który ułatwia znalezienie wszystkich kombinacji liczb, które odpowiadają Twoim kryteriom SumMatch

Dołączone zdjęcie wyjaśnia, jak skonfigurować kryteria, aby zobaczyć wszystkie kombinacje, które są z nimi zgodne. Modyfikując kryteria można uzyskać rozwiązania wykorzystujące darmową wersję próbną dodatku.

enter image description here

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.