• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

op zoek naar een formule

Status
Niet open voor verdere reacties.

jbreen

Gebruiker
Lid geworden
30 okt 2007
Berichten
57
Beste leden,

ik ben op zoek naar een formule die combinaties uitrekend van verschillende getallen.
Ik heb een bijlage erbij gedaan om deze vraag te verduidelijken.

bedankt,

Jack
 

Bijlagen

Hallo,

Deze vraag is een zeer ingewikkeld probleem.
Heb je enige kennis van Excel/VBA of geenszins?

Wat ik graag wil weten is wat alle mogelijke getallen zijn die je wilt opdelen, en alle mogelijke getallen waaruit je ze op kan delen?
 
Laatst bewerkt:
Uitspliten van een getal in alle mogelijke combinaties

"Heb de naam van dit topic tevens veranderd, geef het een duidelijke naam in vervolg"
 
Hier is al een stuk deftige code, maakt gebruik van lussen.

Code:
Option Explicit

Sub combinaties()

    Dim r As Range
    Dim iUpperLimit As Integer
    Dim s
    Dim i As Integer, j As Integer, k As Integer, l As Integer
    Dim q As Integer, iSum As Integer
    Dim lCombos As Long
    
    s = Timer

    For Each r In Range("B9:B25")
    
        iUpperLimit = Int(r.Value / WorksheetFunction.Min(Range("C8:F8")))

        For i = 0 To iUpperLimit

            For j = 0 To iUpperLimit

                For k = 0 To iUpperLimit
                
                    For l = 0 To iUpperLimit
                    
                        lCombos = lCombos + 1
                        
                        If lCombos Mod 10 = 0 Then Application.StatusBar = lCombos & " combinaties gecheckt"
                        
                        iSum = i * Range("C8").Value + j * Range("D8").Value + k * Range("E8").Value + l * Range("F8").Value
                        
                        If iSum = r.Value And WorksheetFunction.CountIf(Columns(7), CStr(i & j & k & l)) = 0 Then
                            
                            For q = 1 To 4
                                If Choose(q, i, j, k, l) Then
                                    r.Offset(, q).Value = Range("C8:F8").Cells(q).Value & "x" & Choose(q, i, j, k, l)
                                    r.Offset(, 5).Value = CStr(i & j & k & l)
                                End If
                            Next
                            
                            GoTo here
                            
                        End If
                        
        Next: Next: Next: Next
here:
    Next
    
    MsgBox Int(Timer - s) & " sec.", vbInformation
    
    Application.StatusBar = False

End Sub

Wigi
 
Verbeterde code:

Code:
Sub combinaties()

    Dim r As Range
    Dim rSums As Range, rNumbers As Range
    Dim iUpperLimit As Integer
    Dim s
    Dim i As Integer, j As Integer, k As Integer, l As Integer
    Dim q As Integer, iSum As Integer
    Dim lCombos As Long
    
    s = Timer

[B]    Set rSums = Range("B9:B25")
    Set rNumbers = Range("C8:F8")[/B]

    For Each r In rSums
    
        iUpperLimit = Int(r.Value / WorksheetFunction.Min(rNumbers))

        For i = 0 To iUpperLimit

            For j = 0 To iUpperLimit

                For k = 0 To iUpperLimit
                
                    For l = 0 To iUpperLimit
                    
                        lCombos = lCombos + 1
                        
                        If lCombos Mod 10 = 0 Then Application.StatusBar = lCombos & " combinaties gecheckt"
                        
                        [B]iSum = WorksheetFunction.SumProduct(rNumbers, Array(i, j, k, l))[/B]
                        
                        If iSum = r.Value And WorksheetFunction.CountIf(Columns(7), CStr(i & j & k & l)) = 0 Then
                            
                            For q = 1 To 4
                                If Choose(q, i, j, k, l) Then
                                    r.Offset(, q).Value = rNumbers.Cells(q).Value & "x" & Choose(q, i, j, k, l)
                                    r.Offset(, 5).Value = CStr(i & j & k & l)
                                End If
                            Next
                            
                            GoTo here
                            
                        End If
                        
        Next: Next: Next: Next
here:
    Next
    
[B]    MsgBox Round(Timer - s, 2) & " sec.", vbInformation[/B]
    
    Application.StatusBar = False

End Sub

Wigi
 
Wigi, ik snap het gebruik van die code niet helemaal.
Volgends mij is dat niet wat Jack zoekt!
 
Wigi, ik snap het gebruik van die code niet helemaal.
Volgends mij is dat niet wat Jack zoekt!

En heb je de moeite genomen om dit te testen?

Want hetgeen de code doet is wel wat Jack zelf manueel in de sheet heeft gezet...

Dus lijkt mij jouw commentaar volledig fout.

Wigi
 
Zie bijgevoegd bestand waarom ik denk dat jou code niet is wat hij zoekt!
Neemt niet weg dat het een uitstekende code is, maar vraag me af of het de juiste is...?

De indeling van "jou" sheet(in de bijlage de bovenste) begrijp ik ook niet helemaal!
Misschien is in de 2e bijlage het hoe de opzet beter weer te geven zou zijn, echter kan ik dit niet reconstureren met een Code
 

Bijlagen

Maar mijn code doet toch hetgeen in het bestandje Opzet.xls staat? :confused:
 
Aah.

Of zijn de combinaties misschien al gegenereerd maar moet de berekening nog gebeuren?

Dus 4x4 moet dan 16 geven.

Zo heb ik het althans niet geïnterpreteerd.
 
Jack wil graag alle mogelijke combinaties van die 4 getallen met 16 zien(en ook de overige getallen die hij noemt zoals 17)

In jou schema klopt dat helemaal. Maar is voor mij niet echt duidelijk leesbaar! Per rij moet er dus 16 uit komen, dus op regel 1, regel 2 etc.
En nu komt er overal meer dan 16 uit? weet niet hoe dit af te lezen dus!
 
Het getal in de eerste kolom wordt opgesplitst.

Al doet de code nu nog niet alle opsplitsingen.

Als er 4 keer 16 staat, zullen er (maximaal) 4 opsplitsingen gedaan worden. Ook al zijn er in werkelijkheid misschien meer mogelijkheden met de rode getallen.

Dan zullen de lussen nog wat moeten aangepast worden.

Wigi
 
Ja dat begrijp ik maar hoe zit die opbouw in elkaar dan? welke combinaties is 16? laat eens zien door middel van kleuren als je zou willen?
 
16 = 5x2 + 6x1
16 = 4x1 + 6x2

...

Of is dit hogere wiskunde? :p
 
Ja dat snap ik:p maar laat dat eens in het schema zien, vind het daar onduidelijk weergegeven. Hoe moet ik dat aflezen?
 
Ik vind het ook niet erg duidelijk, maar de vraagsteller blijkbaar wel (zie zijn voorbeeld).

Daarom heb ik dat ook maar zo gedaan.

Wigi
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan