Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Kombination Matrix mit VBA / Formel

Forumthread: Kombination Matrix mit VBA / Formel

Kombination Matrix mit VBA / Formel
01.08.2024 14:16:21
Tobi
Hallo :)

Ich möchte eine Funktion bauen, mit der ich eine Variantenkombination durchführen kann (mit Zurücklegen).

Konkretes Beispiel: Es gibt Kategorien, 3, 4 oder auch 9 Kategorien, und pro Kategorie gibt es 3 Werte. Beispielsweise Min, Max, Mittelwert der jeweiligen Kategorie.
Ich möchte nun eine Matrix anlegen, wo diese aus allen verfügbaren Kategorien kombiniert werden; eine Kombination wäre also bspw. das Min der Kat.1 mit Max von Kat.3 und 4 und Mittelwert von Kat.2; usw.
Die Kombination soll die Werte also wie Text behandeln, und entsprechend auch mit Text funktionieren.

Beispiel:
Packe Geschenkboxen mit den Produkten:

gelbes Auto, rotes Auto, blaues Auto
gelbes Fahrrad, rotes Fahrrad, blaues Fahrrad
gelbes Schiff, rotes Schiff, blaues Schiff
gelbes Lolli, rotes Lolli, blaues Lolli

Also Ausgangslage wäre hier eine 4x3 Matrix. 4 Kategorien, 3 Farben pro Kategorie. Daraus werden Boxen gepackt, die eine Farbe pro Kategorie enthalten. Eine Box enthält bspw. nur blaue Produkte, eine andere blaues Auto, rotes Fahrrad, gelbes Schiff und gelber Lolli und so weiter.
Es könnten 81 verschiedene Boxen gepackt werden.

Oder auch:
Ingenieure: Max, Paul, Nadine
Manager: Susanne, Richard, Anton
Einkauf: Hilde, Julia, Hans

Ein Projekt besteht aus jeweils einem Mitarbeiter aus Ingenieur, Manager, Einkauf.
Will man nun jede mögliche Zusammenarbeit betrachten, müssen 27 Projektkonfigurationen angelegt werden.

Und so weiter, nun sollte jeder wissen, wie ich es meine :)

Bis 6 Kategorien sollte es mit 3 Werten klappen (729 Kombinationen), bei 7 bis 10 Kategorien reichen auch 2 Werte pro Kategorie.
Wenn aber auch noch 3^9 = 19683 Kombinationen erzeugt werden können, ist das gut.

Ob die Werte pro Kombination in einer oder mehreren Zellen landen ist erstmal egal. Es muss erkennbar sein, welche Werte zu einer Kombi gehören. Die Werte je Kombi mit einem Trennzeichen in eine Zelle packen ist also in Ordnung.

Möchte jemand helfen? :)


Anzeige

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Kombination Matrix mit VBA / Formel
01.08.2024 15:40:05
Yal
Hallo Tobi,

bei einem nicht festgestellten Anzahl an Ebenen und Elemente pro Ebene musst Du rekursiv rangehen.

Man bildet einen Array of Array und eine Kombinationsergebnis (Liste). Bei jeder Rekursionsschritt trennt man die letzte Ebene (Hauptarray) ab, kombiniere jedem Element der letzten Ebene und gibt die Beiden rekursiv weiter.
Die Ergebnis werden hier direkt ausgegeben.

Sub Haupt()


Kombiniere Array( _
Array("gelbes Auto", "rotes Auto", "blaues Auto"), _
Array("gelbes Fahrrad", "rotes Fahrrad", "blaues Fahrrad"), _
Array("gelbes Schiff", "rotes Schiff", "blaues Schiff"), _
Array("gelbes Lolli", "rotes Lolli", "blaues Lolli"))
'zum Test
'Kombiniere Array(Array(1, 2), Array(3, 4, 5), Array(6, 7))
'Kombiniere Array(Array(1, 2), Array(4, 5), Array(6, 7), Array(8, 9))
End Sub

Sub Kombiniere(ByVal Arr, Optional Kombi As String = "")
Dim Neue
Dim Elt

If UBound(Arr) > LBound(Arr) Then
'Rekursivität vorbereiten und einleiten
Neue = Arr
ReDim Preserve Neue(UBound(Neue) - 1)
For Each Elt In Arr(UBound(Arr))
Kombiniere Neue, Elt & IIf(Kombi = "", "", ";" & Kombi)
Next
Else
'Letzter Ebene verarbeiten
For Each Elt In Arr(UBound(Arr))
Debug.Print Elt & ";" & Kombi
Next
End If
End Sub


VG
Yal
Anzeige
Auf eine Rückmeldung freut sich jeder Helfer
02.08.2024 17:26:48
Yal
owT (ohne weitere Text)
AW: Kombination Matrix mit VBA / Formel
07.08.2024 14:21:59
Tobi
Hallo Yal,

Besten Dank!
Ich kam bisher noch nicht dazu, mit dieser Aufgabe bei mir weiterzumachen, aber deine Antwort gibt mir ein solides Grundgerüst, das wird mir weiterhelfen.
Gut erklärt und zusammengefasst, vielen Dank :) Ich melde mich nochmal, wenn's ein Update gibt.
Anzeige
;

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige