Supportnet / Forum / Tabellenkalkulation
zu Operatoren verwandeln
Frage
Hallo,
Ich könnte mal Hilfe zu folgendem Problem gebrauchen:
Ich möchte Excel dazu mißbrauchen das Programm eines digitalen Heizungsreglers zu simulieren.
Dazu muß ich den Wert einer Zelle (.value) in einen Operator verwandeln.
(in VBA).
ZB In der Zelle steht geschrieben "AND" als text.
Wie mache ich ,am klügsten, aus diesem Text einen realen Operator ?
gruß struppi
Antwort 1 von Markus Brock
Nur so ne Idee, denn ich habe null Ahnung von VBA:
Generell ist es bei solchen Problemen bequemer, anstatt selbst einen Parser zu schreiben, den zu nutzen, den man schon hat (Excel).
Sprich, Du generierst während der Laufzeit ein neues VBA Skript und startest es automatisch.
Kann natürlich sein, dass dies mit VBA gar nicht geht ..
Generell ist es bei solchen Problemen bequemer, anstatt selbst einen Parser zu schreiben, den zu nutzen, den man schon hat (Excel).
Sprich, Du generierst während der Laufzeit ein neues VBA Skript und startest es automatisch.
Kann natürlich sein, dass dies mit VBA gar nicht geht ..
Antwort 2 von nighty
hi alle
if range("a1")="and" then
if range("b1") and range("c1") then
endif
endif
if range("a1")="or" then
if range("b1") or range("c1") then
endif
endif
gruss nighty
if range("a1")="and" then
if range("b1") and range("c1") then
endif
endif
if range("a1")="or" then
if range("b1") or range("c1") then
endif
endif
gruss nighty
Antwort 3 von nighty
hi alle
sollte natuerlich nur ansaetze zeigen.
gruss nighty
sollte natuerlich nur ansaetze zeigen.
gruss nighty
Antwort 4 von struppi
Hallo nighty und Markus,
Danke für Eure Tips. Beide Ansätze habe ich mehr oder weniger schon erwogen.
Letzteren wieder verworfen, weil er eine Unmenge an Abfragen erzeugen würde.
Es können ca. 60 Blöcke mit bis zu 4 Variablen in allen möglichen Kombinationen verglichen werden. Dazu laufen noch Timer etc. Selbst mit select wird das zu umfangreich.
Die erste Idee ist nicht schlecht.
Ich könnte ein neues Makro generieren und es dann in passendem Rythmus wiederkehrend aufrufen/durchlaufen lassen.
Hatte schon nach sowas wie .Execute in Excel gesucht aber nichts passendes gefunden....
Das Thema Makros mit Makro schreiben hatten wir ja schon mal. In diesem Zusammenhang macht es wirklich Sinn....
Also Danke noch mal an euch Beide.
gruß struppi
Danke für Eure Tips. Beide Ansätze habe ich mehr oder weniger schon erwogen.
Letzteren wieder verworfen, weil er eine Unmenge an Abfragen erzeugen würde.
Es können ca. 60 Blöcke mit bis zu 4 Variablen in allen möglichen Kombinationen verglichen werden. Dazu laufen noch Timer etc. Selbst mit select wird das zu umfangreich.
Die erste Idee ist nicht schlecht.
Ich könnte ein neues Makro generieren und es dann in passendem Rythmus wiederkehrend aufrufen/durchlaufen lassen.
Hatte schon nach sowas wie .Execute in Excel gesucht aber nichts passendes gefunden....
Das Thema Makros mit Makro schreiben hatten wir ja schon mal. In diesem Zusammenhang macht es wirklich Sinn....
Also Danke noch mal an euch Beide.
gruß struppi
Antwort 5 von want2cu
hallo struppi,
sorry, dass ich immer noch kein VBA kann
Aber wenn z.B. eine Formellösung in Betrahct kommen würde, könnte es vielleicht mit SVVERWEIS gehen.
Wenn du in einer kleinen Matrix nagibt, welche Texte durch welche Operatoren ersetzt werden sollen, dann mü0te es eigentlich mit SVEREIS klappen.
Vor allen Dingen kannst du damit deutlich mehr und einfachere Bedingungen definieren, als mit VBA (glaub ich wenigstens).
CU
Klaus
sorry, dass ich immer noch kein VBA kann
Aber wenn z.B. eine Formellösung in Betrahct kommen würde, könnte es vielleicht mit SVVERWEIS gehen.
Wenn du in einer kleinen Matrix nagibt, welche Texte durch welche Operatoren ersetzt werden sollen, dann mü0te es eigentlich mit SVEREIS klappen.
Vor allen Dingen kannst du damit deutlich mehr und einfachere Bedingungen definieren, als mit VBA (glaub ich wenigstens).
CU
Klaus
Antwort 6 von nighty
hi alle
ok ok ich werd noch ein wenig gruebeln.
gruss nighty
ok ok ich werd noch ein wenig gruebeln.
gruss nighty
Antwort 7 von struppi
Hallo Klaus,
Eigentlich wollte ich zunächst alles nur auf dem Tabellenblatt erledigen.
Das klappt aber nicht, wenn ich zb eine Selbsthaltung programmieren möchte. Excel mag keine Zirkelbezüge. Auch ein Timer geht nur per VBA.
Deshalb wollte ich einen Teil der Geschichte im Hintergrund vergleichen und die Werte dann per VBA in die Zellen schreiben lassen.
Aaaaaaber jetzt hab ich diiiiiieee Idee! Werde doch alles auf dem Tabellenblatt vergleichen lassen und nur die Ergebnisse per VBA in eine zweite Zelle übertragen. Auf diese Zelle greift dann wieder das Prgramm zu und nicht direkt auf die Ergebniszelle. Damit koppel ich die Ergebnisse von den Formeln ab und erzeuge keine Zirkelbezüge. Das Übertragen der Werte geschieht dann im Sekundentakt. In diesem Rythmus arbeitet auch der Regler. So könnte ich auch einzelne Zellen hochzählen und als Timer verwenden.......
Also danke für alle Anregungen. Die verschiedenen Ideen sorgen doch dafür, daß man sich nicht nur in eine Richtung verrennt und die beste Lösung dabei übersieht....
gruß struppi
Eigentlich wollte ich zunächst alles nur auf dem Tabellenblatt erledigen.
Das klappt aber nicht, wenn ich zb eine Selbsthaltung programmieren möchte. Excel mag keine Zirkelbezüge. Auch ein Timer geht nur per VBA.
Deshalb wollte ich einen Teil der Geschichte im Hintergrund vergleichen und die Werte dann per VBA in die Zellen schreiben lassen.
Aaaaaaber jetzt hab ich diiiiiieee Idee! Werde doch alles auf dem Tabellenblatt vergleichen lassen und nur die Ergebnisse per VBA in eine zweite Zelle übertragen. Auf diese Zelle greift dann wieder das Prgramm zu und nicht direkt auf die Ergebniszelle. Damit koppel ich die Ergebnisse von den Formeln ab und erzeuge keine Zirkelbezüge. Das Übertragen der Werte geschieht dann im Sekundentakt. In diesem Rythmus arbeitet auch der Regler. So könnte ich auch einzelne Zellen hochzählen und als Timer verwenden.......
Also danke für alle Anregungen. Die verschiedenen Ideen sorgen doch dafür, daß man sich nicht nur in eine Richtung verrennt und die beste Lösung dabei übersieht....
gruß struppi

