Logische Bedingungen automatisch mit Programmier-/Logiksprache auswerten

Sebi85

Enthusiast
Thread Starter
Mitglied seit
12.07.2005
Beiträge
2.318
Ich habe eine Exceldatei, in der ca. 600 Zeilen mit logischen Bedingungen stehen. Diese können einfach AND oder OR Verknüpfungen sein. Natürlich sind auch komplexere Verschachtelungen möglich.

Den logischen Ausdruck bekomme ich so vorgegeben. Leider gibt es bei den Vorgaben kein XOR, daher muss anhand vom Namen oder manuell gepflegter Mappingtabelle entschieden werden, ob es sich bei einem OR auch wirklich um ein OR oder XOR handelt.

Aus Gründen der Übersichtlichkeit habe ich die vollen Namen durch A, X_1 etc. ersetzt.

z. B.

(A==0x2) AND (
(X_1==0x1) OR
(X_2==0x1) OR
(X_3==0x1) OR
(X_4==0x1) )

Daraus resultiert: Excelzeile
ANDA|2
ORX_1|1X_2|1X_3|1X_4|1

Das AND mit dem A|2 steht in einer extra Zeile und wird damit als Standard vor jeder OR Kombination gesetzt. Die extra Zeiele lässt sich entweder aus dem Namen oder einer manuell gepflegten Mappingtabelle erschließen.

Bsp2: Sonderfall
(A==0x1)
OR
(A==0x7)
OR
(
Delay( (AB==TRUE), 5000ms) AND Timeout(B=0x0)
)
Daraus resultiert: Excelzeile

EXORA|1A|7B|0|Timeout
ANDAB|1|Delay|5B|0|Timeout

- Da es sich bei A um ein Signal handelt (kann am Namen erkannt werden) kann es natürlich nicht gleichzeitig 1 und 7 sein. Daher das EXOR.

- Das Timeout erscheint auch in der oberen Zeiele, da Timeout zusätzlich auch immer extra vom Delay aufgeführt werden muss. (Auch wenn es logisch nicht korrekt aufgelöst wurde)

Solche Ausnahmen gibt es sehr oft und müssen anhand von Logik (die ich vorgeben muss) umgesetzt werden.

Welche Programmier-/Skript/Logiksprache eignet sich hier am besten um?
Es würde zwar mit jeder Sprache funktionieren, aber vielleicht eigent sich eine ja besodners gut.
 
Wenn Du diese Anzeige nicht sehen willst, registriere Dich und/oder logge Dich ein.
Bei Excel kann man entweder direkt das eingebaute VB verwenden oder über die COM Schnittstelle mithilfe von VBScript, Powershell, C# oder VB.net sehr einfach ein Excel Dokument bearbeiten.
 
"anhand vom Namen oder manuell gepflegter Mappingtabelle entschieden werden"

das wird der Knackpunkt sein.

Ich nehm an, dass die Entscheidung OR|XOR nicht in der Logik enthalten ist (wenn ja dann evtl. prolog), sondern eben in einer Lookuptable oder im Namen. Evtl. könntest du die Eingabe parsen und auswerten (Stichwort grammar/DSL).
 
Du brauchst da nix proggen, Excel kann das ;)

anhand vom Namen oder manuell gepflegter Mappingtabelle entschieden werden, ob es sich bei einem OR auch wirklich um ein OR oder XOR handelt.
Ich bin nicht sicher ob ich dich richtig verstanden hab, aber wenn du eine Fallunterscheidung machen willst, dann geht das mit WENN. Hier ein kleines Beispiel mit nur zwei Zellen, bei mehreren musst du das natürlich anpassen.

WENN(Ausdruck1;OR(Zelle1;Zelle2);UND(OR(Zelle1;Zelle2);Zelle1<>Zelle2))

- Da es sich bei A um ein Signal handelt (kann am Namen erkannt werden) kann es natürlich nicht gleichzeitig 1 und 7 sein. Daher das EXOR.
Wenn beide Ausdrücke nicht gleichzeitig WAHR sein KÖNNEN macht es keinen Unterschied ob du OR oder XOR verwendest ;)
 
Zuletzt bearbeitet:
Hardwareluxx setzt keine externen Werbe- und Tracking-Cookies ein. Auf unserer Webseite finden Sie nur noch Cookies nach berechtigtem Interesse (Art. 6 Abs. 1 Satz 1 lit. f DSGVO) oder eigene funktionelle Cookies. Durch die Nutzung unserer Webseite erklären Sie sich damit einverstanden, dass wir diese Cookies setzen. Mehr Informationen und Möglichkeiten zur Einstellung unserer Cookies finden Sie in unserer Datenschutzerklärung.


Zurück
Oben Unten refresh