Clever-Excel-Forum

Normale Version: Alle Kombinationsmöglichkeiten großer Datensätze
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo liebe Excel-Kollegen.

Ich komme leider bei einer Excel-Tabelle nicht weiter und hoffe auf euren Rat. Ich vermute, bestenfalls lässt sich das Thema nur mit VBA lösen, darin habe ich aber noch keine Kenntnisse. Falls es eine "normale" Excel-Formel gibt, um zur Lösung zu kommen, wäre das natürlich auch nicht schlecht.

Nun zum eigentlichen Problem. Ich habe eine Tabelle mit einer Auflistung von Belegnummern und den jeweils zugehörigen Artikeln. Insgesamt habe ich ca. 20.000 verschiedene Belegnummern und gesamt ca. 230.000 Zeilen. Ich benötige zu jeder Belegnummer alle möglichen Artikelkombinationen und diese untereinander aufgelistet. Insgesamt kommt man damit auf ca. 3,2 Mio Kombinationen, welche auf Grund der Belege natürlich auch doppelt vorkommen können. Es soll anschließend die Häufigkeit der unterschiedlichen Kombinationen gezählt werden. Mein Problem liegt aber an der durch Excel-Formeln oder VBA erzeugten Automatik, nicht alle 3,2 Mio Kombinationsmöglichkeiten manuell per Formel zusammenzuverketten, sondern dies automatisch erledigen zu lassen. Da das Excel 2010 natürlich auf nur ca. 1 Mio Zeilen begrenzt ist, müsste man das ganze entweder auf 4 Spalten verteilen oder man könnte die Datensätze auch generell teilen und dann die 4 "Gruppen" separat auswerten. Aber ich scheitere derzeit an der Kombinationsformel. Vielen Dank im Voraus für eure Unterstützung. Im Anhang findet ihr eine Beispieldatei mit 2 Belegnummern und den zugehörigen Artikeln. Die Auflistung soll dann etwa wie in Spalte G aussehen.
Hallo stromi,

ich nehme an, dass du nur an Zweierkombinationen interessiert bist.

In der Anlage einmal ein kleines Programm, dass die Häufigkeit der auftretenden Kombinationen in Blöcken vorgegebener Länge  ausgibt.
Bei Millionen von Kombinationen kann das etwas dauern.

Das Programm erwartet drei benannte Bereiche (die beliebig in der Datei - auch anderen Blätter- positioniert werden können ohne das Progarmm ändern zu müssen):

1) Bereich "Liste"
In diesem Bereich muss in der ersten Spalte die Belegnummer  und in der zweiten Spalte der Artikel stehen. Die Liste muss sortiert sein.

2) Zelle "Laenge"
mit der Länge der Ausgabeblöcke

3) Zelle "Ausgabe"
Ab hier wird die Ausgabe nach unten und nach rechts eingetragen.

ps. Auf meinem Rechner dauert eine Auswertung bei 250.000 Sätzen und 20.000 Belegnummern:
a) 2,4 Sekunden wenn ich 100 Artikel zufällig den Belegnummern zuordne (mit 5.000 unterschiedlichen Kombinationen)
b) 88 Sekunden wenn ich 1000 Artikel zufällig den Belegnummern zuordne (mit 477.000 unterschiedlichen Kombinationen)
Da hält meine Datei nicht ganz mit:

2500 Belegnummern, die im Schnitt 4 Artikel haben (10000 Sätze A:B). Ebenfalls:
10000 heruntergezogene Kombinationen (was nicht reicht, denn bei 4 Artikeln gibt es 6 Kombinationen).

10 Sekunden.

Aber: Sie ist nicht optimiert. Außerdem ist das ganze VBA-prädestiniert.
Hallo Leute,

vielen herzlichen Dank für eure Unterstützung!

@Ego: Dein VBA ist klasse und top-programmiert. Es scheint ja sogar Doppelkombinationen (A+B und B+A zu berücksichtigen), richtig klasse!