Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1408to1412
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
Inhaltsverzeichnis

Wenn Formel aus Text interpretieren

Wenn Formel aus Text interpretieren
26.02.2015 10:25:51
Martin
Hallo,
ich habe ein bisschen umfangreicheres Problem.
Und zwar habe ich 3 Tabellenblätter.
1 data: Da sind meine eigentlichen Nutzdaten drin, z.B. eine ID, der Kundenname, das Alter, etc.
2 checks: Diese Nutzdaten möchte ich nun gerne in einem zweiten Tabellenblatt validieren. D.h. ich habe pro Spalte einen Check und pro Zeile einen Kunden. In den Check-Spalten wird z.B. geprüft, ob das Alter des Kunden kleiner ist als 18. Und falls nein, dann soll eine Meldung ausgegeben werden.
Dazu habe ich das Alter (age) als Name definiert. Und in checks spreche ich dann einfach age direkt an. z.B. =WENN(age<18, "fire", "no fire")~f~
Das Problem ist, dass ich sehr viele solcher Checks habe.
Daher habe ich noch ein weiteres Tabellenblatt
3 check_desc: Da steht pro Zeile drin eine Beschreibung des Checks z.B. "Alter kleiner als 18" und die Regel als Text (~f~WENN(age<18, "fire", "no fire")~f~).
Nun möchte ich gerne anstelle in Tabellen 2 checks das =WENN einzugeben, die Regel von Tabellen 3 nutzen.
Ich habe das schon als Modul probiert (http://www.office-loesung.de/ftopic244013_0_0_asc.php)
Bei so einer leichten Text-Formel wie A1: 2+3, da geht =Rechnen(A1)
Bei Wenn nicht, z.B. A1: WENN(1=2, "wahr", "falsch"), geht =Rechnen(A1) nicht
Hat da jemand einen Vorschlag?
Ich habe es auch als Excel4 Makro versucht, was auch mit der Wenn-Formel klappt.
Habe ich aber
~f~
A1: 10
A2: 20
~f~
und komplett A als Name 'age' definiert
und bei
~f~
B1: =WENN(age<18, "fire", "no fire")
B2: =WENN(age<18, "fire", "no fire")
~f~
dann macht Excel das richtig und nutzt bei B2 das age von A2.
Mache ich das aber über das Excel 4 Makro, d.h. steht drin
~f~
B1: WENN(age<18, "fire", "no fire")
B2: WENN(age<18, "fire", "no fire")
~f~
[das = fehlt]
und bei
~f~
C1: =WAHL(1,Berechnen,B1)
C2: =WAHL(1,Berechnen,B2)
dann wird bei C2, bzw. bei B2 das age nicht von A2, sondern von A1 genommen. Das "wandert" also nicht mit nach unten.
Sorry, bin aber etwas hilflos wie ich das hinkriegen kann..
Hoffe mir kann jemand weiterhelfen.
VG Martin

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Wenn Formel aus Text interpretieren
26.02.2015 17:18:11
fcs
Hallo Martin,
würdest du bitte eine anonymisierte Datei mit Beispieldaten inkl. dessen was du jetzt schon erarbeitet hast hochladen. Warum sollen erst nachbauen, was du schon fix und fertig hast.
Gruß
Franz

AW: Wenn Formel aus Text interpretieren
02.03.2015 10:22:44
Martin
Hallo,
sorry, hat etwas länger gedauert. Die Datei findest du hier:
https://www.herber.de/bbs/user/96103.xlsm
Hoffe du kannst mir weiterhelfen.
Viele Grüße
Martin

AW: Wenn Formel aus Text interpretieren
02.03.2015 17:01:53
fcs
Hallo Martin,
es mag ja verlockend sein, per Evaluate via VBA Formelauswertungen zu versuchen. Aber meiner Meinung nach bekommt man das nur schwer gebacken und es wird für 3. Personne extrem mühselig solche Formeln nachzuvollziehen.
Ich würde hier in dem Blatt "Checks" mit "normalen" Formeln arbeiten.
Dabei solltest du die für die Vergleiche benötigten Werte per SVERWEIS oder INDEX+VERGLEICH aus dem Blatt "Data" holen. Um den Rechenaufwand klein zu halten und die Vergleichsformeln übersichtlich ist es wahrschlich sinnvoll die Werte aus in Hilfsspalten per Formel einzulesen und dann in den Auswertespalten mit den Werten aus den Hilfsspalten zu arbeiten. Die Hilfsspalten kannst du ja am Ende ausblenden.
Benutzerdefinierte VBA-Funktionen zur Auswertung werden nützlich, wenn Formeln unübersichtlich und sehr lang werden. Hier kann man dann maßgeschneidert etwas basteln. Allerdings sollte man beachten, dass VBA-Funktionen meist langsamer als integrierte Tabellen-Funktionen sind.
Bei der Festlegung von Namen im Blatt Data solltest du die Namen imer für ganze Spalten festlegen, dann funktionieren INDEX und SVERWEIS optimal.
Gruß
Franz

Anzeige
AW: Wenn Formel aus Text interpretieren
03.03.2015 09:51:36
Martin
Hallo Franz,
vielen Dank für deine Einschätzung.
Die Idee dahinter war eigentlich, dass auf dem Tabellenblatt "checks_desc" die ganzen Validierungsregeln beschrieben sind, sodass sie auch für einen externen Benutzer verstanden werden können. Ich wollte dann in dem Tabellenblatt checks einerseits auf die Validierungsregeln in "checks_desc" verweisen und anderseits auf die eigentlichen Daten in "data". Das Ziel war es, dass sowohl wenn ich die Daten ändere, z.B. das Alter auf 15 setze die Validierung anspringt, als auch wenn ich die Regel/ die Formel verändere...
Viele Grüße
Martin

Anzeige
AW: Wenn Formel aus Text interpretieren
03.03.2015 12:03:18
fcs
Hallo Martin,
wenn du die Kriterien -wie z.B das Alter- variabel gestalten willst, dann solltest du hierfür entsprechende Eingabezellen vorbereiten und diese dann in den Formeln im Blatt Checks einbauen statt fixer Werte. Am besten definierst du für diese Zellen dann aussagekräftige Namen und verwendest die Namen statt der Zelladressen in den Formeln.
Gruß
Franz
Hier deine Datei mit Beispielen
https://www.herber.de/bbs/user/96124.xlsm

AW: Wenn Formel aus Text interpretieren
03.03.2015 13:23:28
Martin
Hallo Franz,
vielen Dank, das hilft mir schon einmal sehr viel weiter.
Ich habe mein Problem jetzt nochmal überacht und es eigentlich auf etwas recht einfaches runtergebrochen, kriege aber trotzdem nicht raus, wie das zu lösen ist.
Ich habe nur ein Tabellenblatt mit einer Variablen age und den Werten 10 und 20
Wenn ich nun schreibe =age Nun habe ich das Makro EVAL erstellt:
Function EVAL(Ref As String)
Application.Volatile
EVAL = Evaluate(Ref)
End Function
Wenn ich als Text definiere F2:age Bei F3:age Ich habe die Beispieldatei angehängt. https://www.herber.de/bbs/user/96127.xlsm
Viele Grüße und super vielen Dank!
Martin

Anzeige
AW: Wenn Formel aus Text interpretieren
03.03.2015 16:48:22
fcs
Hallo Martin,
bei den Formeln in Spalte D trickst Excel im Hintergrund scheinbar noch etwas und arbeitet den Bereich age als Matrix ab.
bei den Formel in Spalte G wird ja jedes Mal der Text "age&lt18" evaluiert. Deshalb kommt auch jedes mal das gleiche Ergebnis heraus.
Ansonsten kann ich hier nicht weiter helfen.
Gruß
Franz

AW: Wenn Formel aus Text interpretieren
04.03.2015 08:48:21
Martin
Hallo Franz,
danke für deine Hilfe. Dein Beispiel hat mir aber schon ziemlich weitergeholfen und mich auch die richtige Fährte gebracht.
Grüße
Martin

AW: Wenn Formel aus Text interpretieren
04.03.2015 10:49:03
Martin
Ich hab nun rausgefunden, wie ich das hinkriege. Und zwar einfach indem man die Formel über Ctrl + Shift + Enter eingibt. Dann klappt das!
Jetzt bin ich aber in ein anderes Problem gelaufen, das aber schon vorher bestand: =EVAL("age<18")~f~ funktioniert, ~f~=EVAL("UND(age>10,age<18)") aber nicht. das bringt - auch in der ersten Zeile immer Falsch raus...
Och menno...

Anzeige
AW: Wenn Formel aus Text interpretieren
04.03.2015 12:15:34
fcs
Hallo Martin,
es gibt Funktionen, die in Tabellenblättern möglich sind -speziell im Bereich von Matrix-Operationen- aber beim Versuch sie unter VBA zu verwenden/auszuwerten nicht funktionieren.
Damit muss man leben.
Gruß
Franz

327 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige