Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
876to880
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
876to880
876to880
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Ausmultiplizieren, -kombinieren einer Logik

Ausmultiplizieren, -kombinieren einer Logik
14.06.2007 13:21:30
zacharias
Hallo VBA-Cracks,
ich will eine im Stücklistenumfeld übliche Schreibweise von technischen Gültigkeiten so ändern, daß der Sinn erhalten bleibt, komme aber mit der Lösung nicht voran.
Hintergrund:
Ob ein Kunde in seinem bestellten Auto z.B. Motor A, B oder C bekommt hängt nicht nur von der Wahl des Motors (etwa 6Zylinder) sondern auch vom Land in dem er ihn bestellt ab (unterschiedliche Abgasnormen bei sonst gleicher Zylinderzahl).
In der Stückliste steht dann etwa für Motor A die technische Gültigkeit:
(1)
+L0L+1X0/1X1+T1Q/T1A/TM3
die "+" bedeuten eine boolsche UND-Verknüpfung, die "/" eine boolsche ODER-Verknüpfung.
Die 3 stelligen Zeichenketten sind Abkürzungen für gewählte Ausstattungen (L0L steht z.B. für Linkslenker)
Der Kunde bekommt also den Motor A, wenn er seine Bestellung L0L enthält UND (1X0 ODER 1X1)
UND (T1Q ODER T1A ODER TM3)
Den gleichen Sinn ergäben 6 Zeilen mit folgender Schreibweise:
(2)
+L0L+1X0+T1Q
+L0L+1X0+T1A
+L0L+1X0+TM3
+L0L+1X1+T1Q
+L0L+1X1+T1A
+L0L+1X1+TM3
Ich suche nun die Möglichkeit die Zeichenkette (1) wie beschrieben in die 6 Zeichenketten (oder logische Ausdrücke) (2) zu wandeln.
Grundsätzlich müßte es wie beim Ausmultiplizieren von Klammerinhalten funktionieren:
Immer wenn in einer Ausstattungsfamilie (hinter dem "+") mehr als ein Merkmal auswählbar ist (1X0 oder 1X1), dann erhöhlt sich die ODER-lose Ergebnisliste.
Berücksichtigen muß ich, daß die Eingangsausdrücke (inkl. ODER) immer anders aussehen können und eine beliebige Anzahl von "+" enthalten können.
Ich weiß nicht ob deshalb ein rekursiver Aufruf angebracht wäre (?).
Ich bin Euch für jeden Hinweis dankbar
Gruß
Zacharias

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Ausmultiplizieren, -kombinieren einer Logik
15.06.2007 10:59:23
Coach
Hallo Zacharias,
versuch es mal mit folgendem Code:
Option Explicit
Dim Elemente As Variant, AnzKomb As Long

Sub KombinationMain()
AnzKomb = 0
Elemente = Split(IIf(Left(ActiveCell.Value, 1) = "+", Mid(ActiveCell.Value, 2), ActiveCell. _
Value), "+", -1, vbTextCompare)
Call KombinationSub(LBound(Elemente), "")
End Sub



Sub KombinationSub(ByVal Element As Long, ByVal Kombination$)
Dim Varianten As Variant, i As Long
Varianten = Split(Elemente(Element), "/", -1, vbTextCompare)
For i = LBound(Varianten) To UBound(Varianten)
If Element = UBound(Elemente) Then
ActiveCell.Offset(AnzKomb, 1).Value = Kombination & "+" & Varianten(i)
AnzKomb = AnzKomb + 1
Else
Call KombinationSub(Element + 1, Kombination & "+" & Varianten(i))
End If
Next
End Sub


Die möglichen Varianten werden in der Spalte neben der aktiven Zelle fortlaufend aufgelistet.
Gruß Coach

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige