Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
872to876
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
872to876
872to876
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Rechnen mit Boolschen Formeln

Rechnen mit Boolschen Formeln
27.05.2007 13:03:00
Daniel
Hallo
ich habe ein Makro geschrieben, mit dem ich eine Boolsche Formel berechnen kann:
Beispiel:

Formel : (1/0/1)+(0/0)     Ergebnis: Falsch


1: Wahr
0: Falsch
/: Oder
+: Und
Mein Makro dafür ist aber lang und langsam.
Jetzt ist meine Idee, daß ich den String ja auch einfach mit der EVALUATE-Funktion von Excel berechnen lassen kann, wenn ich die UND durch "*" ersetzte und die ODER durch "+" (im Makro dann mit Substitue)
dh. mal kurz im Direktfenster ausprobiert


? EVALUATE("(1+0+1)*(0+0)")
0


Funktioniert einwandfrei.
Jetzt zu meinem Problem:
in den Boolschen Formeln kommen nicht nur UND und ODER vor, sondern auch NICHT (als Zeichen "-")
eine Formel könnte dann auch so aussehen:


Formel : (1/-0/1)+-(0/0)    Ergebnis: WAHR


daher meine Frage:
durch was muß ich das "-" im Formelstring ersetzen, damit ich die Formel auch in diesem Fall mit EVALUATE berechnen kann?
Oder gibt es sonst noch eine Möglichkeit, sowas zu berechnen?

das Problem ist, daß das "-" nicht nur vor einzelnen Wahrheitswerten stehen kann (sonst könnte man ja einfach -1 durch 0 und -0 durch 1 ersetzen), sondern auch vor Klammerausdrücken, deren Ergebnis ich ja vorher nicht kenne.
Gruß, Daniel

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

Betreff
Datum
Anwender
Anzeige
AW: Rechnen mit Boolschen Formeln
28.05.2007 02:21:27
fcs
Hallo daniel,
Das NICHT muss in Evaluate durch NOT ersetzt werden. Dabei müssen zwingend -wie bei der Verwendung der Funktion NICHT in Zellen- Klammern gesetzt werden.
Beispiel:

A = Evaluate("(1+0+1)*NOT(0+0)* NOT(0)")


Gruß
Franz

AW: Rechnen mit Boolschen Formeln
28.05.2007 15:45:38
Daniel
Hallo Franz
Super, Danke.
das hilft mir weiter.
Kleine Zusatzfrage noch: gibts für Evaluate irgendwelche Einschränkungen bezgl der Länge des Strings?
Gruß, Daniel

AW: Ergebnis
29.05.2007 22:41:09
Daniel
so jetzt hab ich es in mein Projekt eingebaut.
interessanterweise ist die Löung mit EVALUATE bei kurzen Thermen sogar langsamer als meine selbstgeschriebener Code !
erst ab c.a. 7 oder 8 Operatoren wird EVALUATE schneller.
jetzt werde ich wohl beides einbauen und je nach Länge des Therms die schneller Variante wählen.
(und dabei wollte ich meinen Code doch nur vereinfachen, jetzt wirds nochmal komplizierter ;-))
Gruß, Daniel
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige