Wie werden alle Kombinationsmöglichkeiten für eine Reihe von Zahlen oder Bereichen generiert?

0

Verweis auf Frage und Antwort unten, wie man alle möglichen 3-stelligen Zahlenkombinationen 0-6 erzeugt

Ich habe einen ähnlichen Fall (muss alle möglichen Kombinationen generieren), aber für eine Reihe von Werten wie in der folgenden Tabelle sind insgesamt 3024 Kombinationen möglich

    A   B   C   D   E
    54  23  43  1   1
    21  45  433 2   51
    25  65  456 3   3
    65  66  5678    100 
        77  980 5   
        90  878 6   
        909 

Kombinationen werden so aussehen

A   B   C   D   E
54  23  43  1   1
54  23  43  1   51
54  23  43  1   3
54  23  43  2   1
54  23  43  2   51
54  23  43  2   3
...
...
...

65  909 878 6   3

manuell wird es ewig dauern und ehrlich gesagt bin ich kein excel-experte. Bitte hilf mir.

verloren mit MS Excel
quelle

Antworten:

0

Dies wäre mit einer Programmiersprache viel einfacher. Laden Sie einfach Ihre Werte in Arrays (a, b, c, d, e) und durchlaufen Sie sie in verschachtelten for-Schleifen. Vielleicht könnte so etwas für Excel gelten?

Silvertail
quelle
0

Hier ist ein Skript, das leicht in VBA angepasst werden kann, um das zu tun, was Sie wollen.

Es wird davon ausgegangen, dass sich die Daten in den Spalten AC (keine Überschrift) befinden und in den Spalten EG eingefügt werden. Für mehr Eingabespalten benötigen Sie mehr verschachtelte Schleifen. Es können auch einige Änderungen vorgenommen werden, je nachdem, wo Sie Daten einfügen möchten, die Sie jedoch zu 90% dorthin bringen sollten.

Sub calcCombinations()
Dim lastRowA As Long, lastRowB As Long, lastRowC As Long
Dim CurRowA As Long, CurRowB As Long, CurRowC As Long, pasteRow As Long

pasteRow = 1
With ActiveSheet
    lastRowA = .Range("A" & .Rows.Count).End(xlUp).Row
    lastRowB = .Range("B" & .Rows.Count).End(xlUp).Row
    lastRowC = .Range("C" & .Rows.Count).End(xlUp).Row

    For CurRowA = 1 To lastRowA
        For CurRowB = 1 To lastRowB
            For CurRowC = 1 To lastRowB
                .Range("E" & pasteRow).Value = .Range("A" & CurRowA).Value
                .Range("F" & pasteRow).Value = .Range("B" & CurRowB).Value
                .Range("G" & pasteRow).Value = .Range("C" & CurRowC).Value
                pasteRow = pasteRow + 1
            Next
        Next
    Next
End With

End Sub
gtwebb
quelle