Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1512to1516
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

Evaluate Zelle mit Zahlen und Wörtern

Evaluate Zelle mit Zahlen und Wörtern
18.09.2016 20:03:42
Anton Buderus

Hallo,
ich suche eine Möglichkeit z.B. folgenden Inhalt einer Zelle berechnen zu lassen:
A1: (3*2)m²*2Stück+5m² Fläche_unten: +3
A2: 20
A1: enthält also den Text der gefiltert und berechnet werden soll
A2: das Ergebnis
Um ohne Wörter und Buchstaben zu berechnen, nutze ich diese VBA-Funktion:


Function ev(r As Range) As Variant
r2 = Replace(r.Value, ",", ".", 1)
ev = Evaluate(r2)
End Function

Vorgenannte Funktion funktioniert prima. Aber was müsste geändert werden, so daß die Berechnung auch mit Worterklärungen möglich ist, d.h. die Wörter zur Berechnung rausgefiltert werden?

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
=TxEval(MaskOn(A1;"num";"()*+"))
18.09.2016 20:50:09
Luc:-?
Hallo, Anton;
du benötigst nur noch die UDF MaskOn, die im Archiv seit 2005 enthalten ist (NeuPost von 2014 verwenden, fktionierende aktuelle Links zu einigen UDFs habe ich vor Kurzem in einem BT angegeben). Statt der UDF TxEval (ebenfalls im Archiv) müsste es auch deine UDF tun, wenn du ihr Arg1 nicht As Range, sondern gar nicht oder As Variant deklarierst und es dann natürlich ohne .Value verwendest, was ohnehin überflüssig ist.
Feedback nicht unerwünscht! Gruß, Luc :-?
Besser informiert mit …
Anzeige
AW: Evaluate Zelle mit Zahlen und Wörtern
18.09.2016 23:35:07
Daniel
Hi
du müsstest alle Textzeichen, die nicht zur Berechnung gehören, aus dem Text eleminieren:
Function ev(t As String) As Variant
Dim i As Long
Dim t1 As String
Dim t2 As String
For i = 1 To Len(t)
t1 = Mid$(t, i, 1)
If t1 Like "[0-9()+-/*]" Then
t2 = t2 & t1
End If
Next
Debug.Print t2
ev = Evaluate(t2)
End Function
Gruß Daniel
Damit hast du wiedermal gezeigt, wie man ...
18.09.2016 23:55:13
Luc:-?
…es nicht machen sollte, Daniel!
Du hast eine vorliegende halb-universelle UDF nicht universeller (wie ich es vorschlug), sondern noch spezieller gemacht, so dass nun für ähnliche Zwecke 2 UDFs statt nur einer benutzt wdn müssen. Meine UDFs ordnen sich in das FmlBaukastenSystem von Xl ein und folgen damit den Intentionen seiner ursprünglichen Macher und den Bedürfnissen der Fml-Cracks, deine idR nicht und sind damit eher ein Beitrag zur „PC-Umwelt-Verschmutzung“ (abgesehen mal von einigen sehr speziellen UDFs)! Ist das so schwer zu begreifen…! :-[
Abgesehen mal davon ist auch die vorliegende UDF nicht unbedingt erforderlich, da es ja die XLM-Fkt AUSWERTEN gibt; sie ist nur bequemer, weil direkt in einer ZellFml anwendbar.
Gruß, Luc :-?
Anzeige
AW: Damit hast du wiedermal gezeigt, wie man ...
19.09.2016 00:14:13
Daniel
Luc
ich konzentriere mich in der Regel auf das Kernproblem des Fragestellers und das war, wie er seinen Text in eine Form bringt, die er mit Evaluate verarbeiten kann.
Wenn ich da jetzt noch noch notwendigen Overhead draufsetze, um Funktion in deinem Sinn "universell" zu machen, wäre das nicht mehr so leicht zu erkennen.
Außerdem solltest du beachten, dass ich den Beispielcode für jemanden verfasst habe, der "kaum Excel/VBA-Kenntnisse hat, und der sollte ja in der Lage sein, den Code zu lesen und zu verstehen, damit er das in seine Makros einbauen kann.
Aber es steht dir ja frei, uns zu zeigen was man tun müsste, um die Formel "universell" zu machen, dann lernen wir alle was dabei.
dann würde vielleicht auch klarer werden, was du damit meinst.
Gruß
Anzeige
In dem Fall wäre weniger mehr gewesen, ...
21.09.2016 03:58:40
Luc:-?
…Daniel,
das hatte ich gezeigt und gemeint… :-]
Luc :-?
AW: nein, hast du nicht
21.09.2016 08:40:58
Daniel
aber da du immer recht haben musst, biegest du es hinterher halt wieder zurecht.
Gruß Daniel
Was habe ich in meinem 1.BT geschrieben, ...
21.09.2016 14:17:00
Luc:-?
…Daniel,
wie er seine Auswerte-UDF ändern soll, damit sie auch das MaskOn-Konstrukt als Argument akzeptiert?!
Das ist wohl kaum „hinterher“ geschehen, sondern lange bevor du hier irgendwas geschrieben hast! :->
Luc :-?
AW: Was habe ich in meinem 1.BT geschrieben, ...
21.09.2016 15:07:36
Daniel
dann hast du noch nicht verstanden, was ich gemeint habe.
einfach nur das Weglassen der Variablenfestlegung macht ein Makro ja noch lange nicht universell.
da muss dann auch die Restliche Programmierung auf die unterschiedlichen eingabemöglichkeiten abgestimmt werden.
Das das durch einfaches Weglassen von .Value zur genüge erreicht wird, dürfte nur in Ausnahmefällen zutreffen.
Gruß Daniel
Anzeige
Das kommt ja ganz darauf an, ...
21.09.2016 16:15:52
Luc:-?
…wie universell die UDF sein soll, weshalb ich seine auch (etwas übertrieben) als „halb-universell“ bezeichnet hatte. Natürlich kann man auch noch Array-Abfrage (für plurale MatrixFmln oder Benutzung einer ganzen Ergebnis­Matrix als Argument anderer Fktt) und ggf CStr-Umwandlung, sogar auch noch Variation von Adressen im FmlText einbauen, und das läge alles noch im Rahmen der HptAufgabe einer Evaluierungs-UDF (während andere Hinzufügungen schon Speziali­sierungen zu etwas Anderem, das nur diese Basis nutzt, sind). Aber in der vorgeschlagen einfachen Form erfüllt sie auch ihren HptZweck.
Luc :-?

Anzeige

306 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige