Բաց թողնել հիմնական բովանդակությունը

Ինչպե՞ս գտնել Excel- ում տրված գումարին հավասար բոլոր զուգորդումները:

Ցանկում թվերի բոլոր հնարավոր համակցությունների հայտնաբերումը, որոնք գումարվում են որոշակի գումարի, մարտահրավեր է, որին կարող են հանդիպել Excel-ի շատ օգտվողներ՝ լինի դա բյուջետավորման, պլանավորման կամ տվյալների վերլուծության նպատակներով:

Այս օրինակում մենք ունենք թվերի ցանկ, և նպատակն է բացահայտել, թե այս ցուցակից որ համակցություններն են գումարում մինչև 480: Տրամադրված սքրինշոթը ցույց է տալիս, որ կան համակցությունների հինգ հնարավոր խմբեր, որոնք հասնում են այս գումարին, ներառյալ 300+120 համակցությունները: +60, 250+120+60+50, ի թիվս այլոց: Այս հոդվածում մենք կուսումնասիրենք տարբեր մեթոդներ՝ հստակեցնելու թվերի հատուկ համակցությունները ցուցակում, որոնք կազմում են Excel-ում նշանակված արժեք:

Լուծող ֆունկցիայով գտե՛ք տրված գումարին հավասար թվերի համակցություն

Ստացեք տրված գումարին հավասար թվերի բոլոր համակցությունները

Ստացեք VBA կոդով թվերի բոլոր համակցությունները, որոնք ունեն տիրույթում գումար


Գտեք բջիջների համակցություն, որը հավասար է Լուծվող ֆունկցիայի տրված գումարին

Excel-ի մեջ սուզվելը՝ որոշակի թվով բջիջների համակցություններ գտնելու համար, կարող է սարսափելի թվալ, բայց «Solver» հավելումը դա հեշտացնում է: Մենք ձեզ կպարզենք Solver-ը կարգավորելու և բջիջների ճիշտ համակցությունը գտնելու պարզ քայլերը, ինչը բարդ առաջադրանք էր թվում պարզ և իրագործելի:

Քայլ 1. Միացնել Solver Add-in-ը

  1. Խնդրում ենք գնալ Ֆայլ > ԸնտրանքներԷ, ապա Excel ընտրանքներ երկխոսության վանդակում, սեղմեք Add-Ins- ը ձախ վահանակից, այնուհետև կտտացրեք Go կոճակ Տեսեք,
  2. Այնուհետեւ Add-Ins- ը երկխոսություն է հայտնվում, ստուգեք Լուծիչի հավելում տարբերակը և սեղմեք OK այս հավելումը հաջողությամբ տեղադրելու համար:

Քայլ 2. Մուտքագրեք բանաձևը

Լուծող հավելումը ակտիվացնելուց հետո դուք պետք է մուտքագրեք այս բանաձևը B11 բջիջում.

=SUMPRODUCT(B2:B10,A2:A10)
Նշում: Այս բանաձևում. B2: B10 ձեր թվերի ցանկի կողքին գտնվող դատարկ բջիջների սյունակ է և A2: A10 այն թվերի ցանկն է, որը դուք օգտագործում եք:

Քայլ 3. Արդյունք ստանալու համար կազմաձևեք և գործարկեք Solver-ը

  1. Սեղմել Ամսաթիվ > solver գնալու համար Լուծիչի պարամետր երկխոսության տուփ, երկխոսության մեջ, խնդրում ենք կատարել հետևյալ գործողությունները.
    • (1.) Կտտացրեք բջիջը ընտրելու կոճակը B11 որտեղից է գտնվում ձեր բանաձևը Նպատակ դնել Բաժին;
    • (2.) Հետո Դեպի բաժին ընտրեք Արժեքըև մուտքագրեք ձեր նպատակային արժեքը 480 ինչպես պետք է;
    • (3.) Համաձայն Փոփոխական բջիջները փոխելով բաժինը, սեղմեք կոճակ՝ բջիջների տիրույթն ընտրելու համար B2: B10 որտեղ նշվեն ձեր համապատասխան համարները:
    • (4.) Դրանից հետո կտտացրեք Ավելացնել կոճակը:
  2. Հետո, ան Ավելացնել սահմանափակում Երկխոսության տուփը ցուցադրվում է, սեղմեք կոճակ՝ բջիջների տիրույթն ընտրելու համար B2: B10եւ ընտրեք ամբար բացվող ցուցակից: Ի վերջո, սեղմեք OK կոճակ Տեսեք,
  3. Է Լուծիչի պարամետր երկխոսություն, կտտացրեք Լուծել կոճակը, մի քանի րոպե անց, ա Լուծողի արդյունքներ Երկխոսության տուփը դուրս է գալիս, և դուք կարող եք տեսնել բջիջների համակցությունը, որոնք հավասար են տրված գումարի 480-ին, նշված են որպես 1 սյունակ B-ում: Լուծողի արդյունքներ ընտրեք Պահեք Solver Solution տարբերակը և սեղմեք OK երկխոսությունից դուրս գալու համար: Տեսեք,
ՆշումԱյս մեթոդը, այնուամենայնիվ, ունի սահմանափակում. այն կարող է բացահայտել բջիջների միայն մեկ համակցություն, որոնք գումարվում են նշված գումարին, նույնիսկ եթե կան մի քանի վավեր համակցություններ:

Ստացեք տրված գումարին հավասար թվերի բոլոր համակցությունները

Excel-ի ավելի խորը հնարավորությունների ուսումնասիրությունը թույլ է տալիս գտնել յուրաքանչյուր թվային համակցություն, որը համապատասխանում է որոշակի գումարին, և դա ավելի հեշտ է, քան դուք կարող եք մտածել: Այս բաժինը ձեզ ցույց կտա երկու եղանակ՝ գտնելու տրված գումարին հավասար թվերի բոլոր համակցությունները:

Ստացեք թվերի բոլոր համակցությունները, որոնք հավասար են տրված գումարին Օգտատիրոջ կողմից սահմանված գործառույթով

Հատուկ հավաքածուից թվերի բոլոր հնարավոր համակցությունները բացահայտելու համար, որոնք կոլեկտիվորեն հասնում են տվյալ արժեքին, ստորև նշված հատուկ գործառույթը ծառայում է որպես արդյունավետ գործիք:

Քայլ 1. Բացեք VBA մոդուլի խմբագրիչը և պատճենեք կոդը

  1. Անջատեք ALT + F11 Excel- ի ստեղները, և այն բացում է Microsoft Visual Basic հավելվածների համար պատուհան.
  2. Սեղմել Տեղադրել > Մոդուլներև տեղադրեք հետևյալ կոդը Մոդուլի պատուհանում:
    VBA կոդ. Ստացեք տրված գումարին հավասար թվերի բոլոր համակցությունները
    Public Function MakeupANumber(xNumbers As Range, xCount As Long)
    'updateby Extendoffice
        Dim arrNumbers() As Long
        Dim arrRes() As String
        Dim ArrTemp() As Long
        Dim xIndex As Long
        Dim rg As Range
    
        MakeupANumber = ""
        
        If xNumbers.CountLarge = 0 Then Exit Function
        ReDim arrNumbers(xNumbers.CountLarge - 1)
        
        xIndex = 0
        For Each rg In xNumbers
            If IsNumeric(rg.Value) Then
                arrNumbers(xIndex) = CLng(rg.Value)
                xIndex = xIndex + 1
            End If
        Next rg
        If xIndex = 0 Then Exit Function
        
        ReDim Preserve arrNumbers(0 To xIndex - 1)
        ReDim arrRes(0)
        
        Call Combinations(arrNumbers, xCount, ArrTemp(), arrRes())
        ReDim Preserve arrRes(0 To UBound(arrRes) - 1)
        MakeupANumber = arrRes
    End Function
    
    Private Sub Combinations(Numbers() As Long, Count As Long, ArrTemp() As Long, ByRef arrRes() As String)
    
        Dim currentSum As Long, i As Long, j As Long, k As Long, num As Long, indRes As Long
        Dim remainingNumbers() As Long, newCombination() As Long
        
        currentSum = 0
        If (Not Not ArrTemp) <> 0 Then
            For i = LBound(ArrTemp) To UBound(ArrTemp)
                currentSum = currentSum + ArrTemp(i)
            Next i
        End If
     
        If currentSum = Count Then
            indRes = UBound(arrRes)
            ReDim Preserve arrRes(0 To indRes + 1)
            
            arrRes(indRes) = ArrTemp(0)
            For i = LBound(ArrTemp) + 1 To UBound(ArrTemp)
                arrRes(indRes) = arrRes(indRes) & "," & ArrTemp(i)
            Next i
        End If
        
        If currentSum > Count Then Exit Sub
        If (Not Not Numbers) = 0 Then Exit Sub
        
        For i = 0 To UBound(Numbers)
            Erase remainingNumbers()
            num = Numbers(i)
            For j = i + 1 To UBound(Numbers)
                If (Not Not remainingNumbers) <> 0 Then
                    ReDim Preserve remainingNumbers(0 To UBound(remainingNumbers) + 1)
                Else
                    ReDim Preserve remainingNumbers(0 To 0)
                End If
                remainingNumbers(UBound(remainingNumbers)) = Numbers(j)
                
            Next j
            Erase newCombination()
    
            If (Not Not ArrTemp) <> 0 Then
                For k = 0 To UBound(ArrTemp)
                    If (Not Not newCombination) <> 0 Then
                        ReDim Preserve newCombination(0 To UBound(newCombination) + 1)
                    Else
                        ReDim Preserve newCombination(0 To 0)
                    End If
                    newCombination(UBound(newCombination)) = ArrTemp(k)
    
                Next k
            End If
            
            If (Not Not newCombination) <> 0 Then
                ReDim Preserve newCombination(0 To UBound(newCombination) + 1)
            Else
                ReDim Preserve newCombination(0 To 0)
            End If
            
            newCombination(UBound(newCombination)) = num
    
            Combinations remainingNumbers, Count, newCombination, arrRes
        Next i
    
    End Sub
    

Քայլ 2. Մուտքագրեք հատուկ բանաձևը՝ արդյունքը ստանալու համար

Կոդը տեղադրելուց հետո փակեք ծածկագրի պատուհանը, որպեսզի վերադառնաք աշխատաթերթ: Մուտքագրեք հետևյալ բանաձևը դատարկ բջիջում՝ արդյունքը ստանալու համար, այնուհետև սեղմեք Մտնել բանալին՝ բոլոր համակցությունները ստանալու համար: Տես սքրինշոթը.

=MakeupANumber(A2:A10,B2)
Նշում: Այս բանաձևում. A2: A10 թվացանկն է, և B2 այն ընդհանուր գումարն է, որը ցանկանում եք ստանալ:

ԱկնարկԵթե ​​ցանկանում եք սյունակում ուղղահայաց թվարկել համակցության արդյունքները, խնդրում ենք կիրառել հետևյալ բանաձևը.
=TRANSPOSE(MakeupANumber(A2:A10,B2))
Այս մեթոդի սահմանափակումները:
  • Այս հատուկ գործառույթն աշխատում է միայն Excel 365-ում և 2021-ում:
  • Այս մեթոդը արդյունավետ է բացառապես դրական թվերի համար. Տասնորդական արժեքները ավտոմատ կերպով կլորացվում են մինչև մոտակա ամբողջ թիվը, և բացասական թվերը կհանգեցնեն սխալների:

Ստացեք հզոր հատկանիշով տրված գումարին հավասար թվերի բոլոր համակցությունները

Հաշվի առնելով վերոհիշյալ գործառույթի սահմանափակումները՝ մենք առաջարկում ենք արագ և համապարփակ լուծում՝ Kutools Excel-ի համար Make up a Number ֆունկցիան, որը համատեղելի է Excel-ի ցանկացած տարբերակի հետ: Այս այլընտրանքը կարող է արդյունավետ կերպով կարգավորել դրական թվերը, տասնորդականները և բացասական թվերը: Այս հատկանիշի միջոցով դուք կարող եք արագ ստանալ բոլոր համակցությունները, որոնք հավասար են տվյալ գումարին:

Tips: Սա կիրառելու համար Կազմիր համար հնարավորությունը, առաջին հերթին, դուք պետք է ներբեռնեք Excel- ի համար նախատեսված գործիքներ, ապա գործառույթը կիրառեք արագ և հեշտությամբ:
  1. Սեղմել Կուտոլս > Պարունակություն > Կազմիր համար, տես նկարի նկարը.
  2. Այնուհետև, Կազմիր թիվ երկխոսության տուփ, սեղմեք կոճակը ընտրելու համարների ցուցակը, որը ցանկանում եք օգտագործել Data Source, ապա մուտքագրեք ընդհանուր թիվը մեջ Գումար textbox. Վերջապես, սեղմեք OK կոճակը, տես նկարի նկարը.
  3. Եվ այնուհետև կհայտնվի հուշման տուփ, որը կհիշեցնի ձեզ ընտրել բջիջ, որպեսզի գտնեք արդյունքը, այնուհետև սեղմեք OK, տես նկարի նկարը.
  4. Եվ այժմ, բոլոր համակցությունները, որոնք հավասար են տվյալ թվին, ցուցադրվել են ստորև ներկայացված սքրինշոթում.
ՆշումԱյս հատկությունը կիրառելու համար խնդրում ենք ներբեռնեք և տեղադրեք Kutools Excel-ի համար առաջին.

Ստացեք VBA կոդով թվերի բոլոր համակցությունները, որոնք ունեն տիրույթում գումար

Երբեմն, դուք կարող եք հայտնվել մի իրավիճակում, երբ ձեզ անհրաժեշտ է բացահայտել թվերի բոլոր հնարավոր համակցությունները, որոնք միասին գումարվում են որոշակի տիրույթում գտնվող գումարի: Օրինակ, դուք կարող եք փնտրել թվերի բոլոր հնարավոր խմբավորումը, որտեղ ընդհանուր թիվը ընկնում է 470-ից 480-ի միջև:

Թվերի բոլոր հնարավոր համակցությունների հայտնաբերումը, որոնք գումարում են որոշակի արժեք, ներկայացնում է հետաքրքրաշարժ և շատ գործնական մարտահրավեր Excel-ում: Այս բաժնում կներկայացվի VBA կոդ այս խնդիրը լուծելու համար:

Քայլ 1. Բացեք VBA մոդուլի խմբագրիչը և պատճենեք կոդը

  1. Անջատեք ALT + F11 Excel- ի ստեղները, և այն բացում է Microsoft Visual Basic հավելվածների համար պատուհան.
  2. Սեղմել Տեղադրել > Մոդուլներև տեղադրեք հետևյալ կոդը Մոդուլի պատուհանում:
    VBA կոդ. Ստացեք թվերի բոլոր համակցությունները, որոնք ամփոփում են որոշակի տիրույթ
    Sub Getall_combinations()
    'Updateby Extendoffice
        Dim xNumbers As Variant
        Dim Output As Collection
        Dim rngSelection As Range
        Dim OutputCell As Range
        Dim LowLimit As Long, HiLimit As Long
        Dim i As Long, j As Long
        Dim TotalCombinations As Long
        Dim CombTotal As Double
        Set Output = New Collection
        On Error Resume Next
        Set rngSelection = Application.InputBox("Select the range of numbers:", "Kutools for Excel", Type:=8)
        If rngSelection Is Nothing Then
            MsgBox "No range selected. Exiting macro.", vbInformation, "Kutools for Excel"
            Exit Sub
        End If
        On Error GoTo 0
        xNumbers = rngSelection.Value
        LowLimit = Application.InputBox("Select or enter the low limit number:", "Kutools for Excel", Type:=1)
        HiLimit = Application.InputBox("Select or enter the high limit number:", "Kutools for Excel", Type:=1)
        On Error Resume Next
        Set OutputCell = Application.InputBox("Select the first cell for output:", "Kutools for Excel", Type:=8)
        If OutputCell Is Nothing Then
            MsgBox "No output cell selected. Exiting macro.", vbInformation, "Kutools for Excel"
            Exit Sub
        End If
        On Error GoTo 0
        TotalCombinations = 2 ^ (UBound(xNumbers, 1) * UBound(xNumbers, 2))
        For i = 1 To TotalCombinations - 1
            Dim tempArr() As Double
            ReDim tempArr(1 To UBound(xNumbers, 1) * UBound(xNumbers, 2))
            CombTotal = 0
            Dim k As Long: k = 0
            
            For j = 1 To UBound(xNumbers, 1)
                If i And (2 ^ (j - 1)) Then
                    k = k + 1
                    tempArr(k) = xNumbers(j, 1)
                    CombTotal = CombTotal + xNumbers(j, 1)
                End If
            Next j
            If CombTotal >= LowLimit And CombTotal <= HiLimit Then
                ReDim Preserve tempArr(1 To k)
                Output.Add tempArr
            End If
        Next i
        Dim rowOffset As Long
        rowOffset = 0
        Dim item As Variant
        For Each item In Output
            For j = 1 To UBound(item)
                OutputCell.Offset(rowOffset, j - 1).Value = item(j)
            Next j
            rowOffset = rowOffset + 1
        Next item
    End Sub
    
    
    

Քայլ 2. Կատարեք կոդը

  1. Կոդը տեղադրելուց հետո սեղմեք F5 բանալին գործարկելու այս կոդը, առաջին բացված երկխոսության մեջ ընտրեք թվերի շրջանակը, որը ցանկանում եք օգտագործել և սեղմեք OK, Տեսեք,
  2. Երկրորդ հուշման վանդակում ընտրեք կամ մուտքագրեք ցածր սահմանաչափը և սեղմեք OK, Տեսեք,
  3. Երրորդ հուշման վանդակում ընտրեք կամ մուտքագրեք բարձր սահմանաչափը և սեղմեք OK, Տեսեք,
  4. Վերջին հուշման վանդակում ընտրեք ելքային բջիջ, որտեղ արդյունքները կսկսեն դուրս գալ: Այնուհետեւ սեղմեք OK, Տեսեք,

Արդյունք

Այժմ յուրաքանչյուր որակավորման համակցություն կցուցադրվի աշխատանքային թերթի հաջորդական տողերում՝ սկսած ձեր ընտրած ելքային բջիջից:

Excel-ը ձեզ մի քանի եղանակ է տալիս՝ գտնելու թվերի խմբեր, որոնք գումարում են որոշակի ընդհանուր գումար, յուրաքանչյուր մեթոդ տարբեր կերպ է աշխատում, այնպես որ կարող եք ընտրել մեկը՝ հիմնվելով այն բանի վրա, թե որքանով եք ծանոթ Excel-ին և ինչն է ձեզ անհրաժեշտ ձեր նախագծի համար: Եթե ​​դուք հետաքրքրված եք Excel-ի ավելի շատ խորհուրդներ և հնարքներ ուսումնասիրելով, մեր կայքը առաջարկում է հազարավոր ձեռնարկներ, խնդրում ենք սեղմեք այստեղ՝ դրանք մուտք գործելու համար. Շնորհակալություն կարդալու համար, և մենք անհամբեր սպասում ենք ձեզ ավելի օգտակար տեղեկություններ տրամադրել ապագայում:


Related Articles:

  • Թվարկեք կամ ստեղծեք բոլոր հնարավոր համակցությունները
  • Եկեք ասենք, որ ես ունեմ տվյալների հետևյալ երկու սյունակները, և այժմ ես ուզում եմ առաջարկել բոլոր հնարավոր համադրությունների ցուցակ ՝ հիմնվելով արժեքների երկու ցուցակների վրա, ինչպես ցույց է տրված ձախ սքրինշոթը: Միգուցե, կարող եք բոլոր համակցությունները մեկ առ մեկ թվարկել, եթե քիչ արժեքներ կան, բայց եթե կան մի քանի սյունակներ, որոնք ունեն մի քանի սյունակ, անհրաժեշտ թվարկված են հնարավոր համադրությունները, ահա մի քանի արագ հնարքներ կօգնեն ձեզ լուծել այս խնդիրը Excel- ում ,
  • Ստեղծեք բոլոր հնարավոր 4 թվանշանների համակցությունների ցանկը
  • Որոշ դեպքերում մեզ կարող է անհրաժեշտ լինել ստեղծել 4-ից 0 համարի բոլոր հնարավոր 9 թվանշանների համադրությունների ցանկ, ինչը նշանակում է ստեղծել 0000, 0001, 0002… 9999 ցուցակ: Excel- ում ցուցակների առաջադրանքը արագ լուծելու համար ես ձեզ համար որոշ հնարքներ եմ ներկայացնում:
Comments (51)
No ratings yet. Be the first to rate!
This comment was minimized by the moderator on the site
hola esta muy interesante la demostración del código para excel, pero si deseo que me combine números, con cierta cantidad de números por combinación, por ejemplo 4 números por combinación, y solo me arroje eso, para optimizar la memoria del procesador:
1,2,3,4
2,3,4,5
5,2,6,8

en este caso como sería el código
This comment was minimized by the moderator on the site
Hola muy interesante la explicación, me sirvió bastante, pero deseo consultar como serpia el código si deseo que me de las combinaciones de 6 dígitos, o 5 digitos, según corresponda
This comment was minimized by the moderator on the site
Hi everyone,

I'm trying to find a way to to find all possible combinations of workershifts for a specific amount of workhours within a specific amount of working days.

Both, solver and Kutools basically work, but:

Solver only ever displays one combination not all of them (which is what I would need).

Kutools on the other hand only uses each value once, for example I know there are solutions with say 3 7-hour shifts but it won't pick the shift more than once.

Thanks in advance for any responses!

Hope I'm not threadnecroing too hard here.
This comment was minimized by the moderator on the site
Hello, simsok,
Sorry, I can't understand you clearly.
Could you give your problem more detailed, or can you insert a screenshot of your problem here?
Thank you!
This comment was minimized by the moderator on the site
Thank you so much!!! The solver add-in worked for me!
This comment was minimized by the moderator on the site
How to get list of cell names that add to a given no.
This comment was minimized by the moderator on the site
Hello, Ranka,
I'm sorry, at present, there is no good way for getting the cells that add to a given number.
Thank you!
This comment was minimized by the moderator on the site
ExtendOffice - How To Find All Combinations That Equal A Given Sum In Excel

In this example, I would like to run 100 rows instead of the 8 in your example. When I try to create more rows the formula stops working. I started over with a fresh sheet and I still can not get the formula to work.

Running windows 10
Excel 2207
Office 365
This comment was minimized by the moderator on the site
Hello, Shaw

Unfortunately, the formula in this article has a limit of 20 values, if there are more than 20 numbers, the result will not come out. In this case, I will recommend the Make Up A Number feature of Kutools for Excel, with it, you can find all combinations from the list of numbers. If you have a lot of numbers and many combination results, it will take much time, but you can set the number of combinations to make it faster. See screenshot:
https://www.extendoffice.com/images/stories/comments/comment-skyyang/doc-make-up-number-1.png

You can download this tool from here: https://www.extendoffice.com/download/kutools-for-excel.html
You can try it for free 30 days, please have a try, hope it can help you!
This comment was minimized by the moderator on the site
Hi I have tried doing this with the first method and it just isn't working. I'm unsure what I'm doing wrong as I seem to have followed the instructions exactly. Are there any common errors to watch out for? There is no error showing in the formula itself and all cells are all in the same position as yours are, but it's a list of 48 numbers rather than 8.
This comment was minimized by the moderator on the site
Hello, Angie
If you can't get the result by using the first method, you can view the video at the bottom of this article:
https://www.extendoffice.com/documents/excel/3557-excel-find-all-combinations-that-equal-given-sum.html#demo
Also, you can try our tool-Kutools for Excel's Make up a number feature, it will get all combinations quickly and easily.
Thank you!
This comment was minimized by the moderator on the site
So will any of these work when I have been paid by a client, but with no remit so don’t know which invoices have been paid.
This comment was minimized by the moderator on the site
For the solver add in on excel, can you make it solve for closest to 480 rather than value of 480 (example used above)? I really need some help on how this might work out, thanks in advance

This comment was minimized by the moderator on the site
Could this be adapted to find combinations that sum up to specific range i.e. sum between 450 and 500? Is there a way to set it so that each cell value can be used only in one combination not more?
There are no comments posted here yet
Load More
Please leave your comments in English
Posting as Guest
×
Rate this post:
0   Characters
Suggested Locations