Anzeige
Archiv - Navigation
1444to1448
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

Rechnen mit Texten

Rechnen mit Texten
08.09.2015 11:33:14
Wolfgang
Rechnen mit Zahlen
Ziel ist es, aus einem Text mit eingegebenen Zahlen und Rechenoperatoren die Aufgabe zu
berechnen.
Beispiel - Wie viel Liter Blut pumpt das Herz an einem Tag:
(5,6 Liter kleiner Kreislauf zur Lunge + 5,6 l großer Kreislauf in den Körper) je Minute * 60
Minuten * 24Stunden
Lösung:
Hier Excel 2010, Entwicklungstools muss aktiviert sein
1. Schritt
Visual Basic - Modul1 - folgende Funktion eingeben:
Function Sauber(x As String) ' das kann auch ein anderer zulässiger Name sein
' testet den übergebenen String  auf die Zeichen "(", ")", "*", "/", "+", ",", "%", "^", "-"  _
und die
' Ziffern 0 bis 9
' alle nicht genannten Zeichen werden ausgefiltert, was bleibt ist die Rechenaufgabe in   _
_
der die
' oben genannten Zeichen verwendet werden.
' Achtung! Sehr wich6g: alle Klammern richtig setzen
Sauber = ""
For i = 1 To Len(x)
If Mid(x, i, 1) = "(" Then Sauber = Sauber + Mid(x, i, 1)
If Mid(x, i, 1) = ")" Then Sauber = Sauber + Mid(x, i, 1)
If Mid(x, i, 1) = "*" Then Sauber = Sauber + Mid(x, i, 1)
If Mid(x, i, 1) = "/" Then Sauber = Sauber + Mid(x, i, 1)
If Mid(x, i, 1) = "+" Then Sauber = Sauber + Mid(x, i, 1)
If Mid(x, i, 1) = "-" Then Sauber = Sauber + Mid(x, i, 1)
If Mid(x, i, 1) = "%" Then Sauber = Sauber + Mid(x, i, 1)
If Mid(x, i, 1) = "," Then Sauber = Sauber + Mid(x, i, 1)
If Mid(x, i, 1) = "^" Then Sauber = Sauber + Mid(x, i, 1)
If Mid(x, i, 1) >= "0" And Mid(x, i, 1) 

Userbild
2. Schritt
Ein Tabellenblatt vorbereiten was wo stehen soll, wo die Aufgabe und wo das Ergebnis
Die Spalte der Aufgabe als Text, die Spalte des Ergebnisses als Zahl formatieren.
3. Schritt
Rechtsklick Maus auf Zelle C2 - Namen definieren
bezieht sich auf: =Auswerten(Sauber(B2)) eingeben
Name: hier Ergebnis - OK
4. Schritt
In Zelle C2 eingeben =Ergebnis - den Namen aus Schritt 3
5. Schritt
Die Rechenaufgabe in Zelle B2 eintippen
(5,6 Liter kleiner Kreislauf zur Lunge + 5,6 l großer Kreislauf in den Körper) je Minute * 60 Minuten * 24Stunden
Die Funktion Sauber liefert folgenden String: (5,6+5,6)*60*24
In C2 ist das Ergebnis sichtbar, dann in den Spalten A, D und E den Rest ausfüllen
Durch Anfassen der rechten unteren Ecke kann der Inhalt der Zelle C2 beliebig nach unten
kopiert werden
Fertig und viel Spaß beim Rechnen

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Danke für das Einstellen
08.09.2015 12:09:06
Werner
Hallo Wolfgang,
feine Sache, kann man sicher mal gebrauchen. Danke.
Gruß Werner

AW: Danke für das Einstellen
08.09.2015 12:54:43
Wolfgang
Danke, ein Bauleiter hat mich auf die Idee gebracht, Texte Zahlen und Rechnen
Gruß Wolf

nettes Geschenk an die Gemeinde
08.09.2015 12:27:05
Michael
Hi Wolfgang,
vielen Dank für die Mühe, das sieht doch richtig brauchbar für didaktische Zwecke aus.
Ich konnte aber die Finger nicht vom Code lassen, denn i war nicht "sauber" deklariert:
Option Explicit
Public Function Sauber(x As String) As String
Dim i As Long
Const s = "()*/+-%,^0123456789"
For i = 1 To Len(x)
If InStr(s, Mid(x, i, 1)) > 0 Then Sauber = Sauber + Mid(x, i, 1)
Next
End Function
Sub SaubererTest()
MsgBox Sauber("(5,6 Liter kleiner Kreislauf zur Lunge + 5,6 l " & _
"großer Kreislauf in den Körper) je Minute * 60 Minuten * 24Stunden")
End Sub
Nochmal vielen Dank und happy exceling,
Michael
P.S.: Da meldet sich doch gleich wieder die Stimme unseres Physiklehrers: "SchreibenS' die Einheiten immer mit hin, sonst wissenS' am Schluß nimmer, was rauskommt."

Anzeige
die Finger nicht vom Code lassen
08.09.2015 12:38:46
Rudi
Hallo Michael,
wenn schon, denn schon: Strings werden in VBA mit & verknüpft und nicht mit +.
Then Sauber = Sauber & Mid(x, i, 1)
Gruß
Rudi

AW: die Finger nicht vom Code lassen
08.09.2015 12:59:29
Wolfgang
Danke, so ist es noch besser... dazu gelernt
Der Physiklehrer wusste was er sagte
Gruß Wolf

erwischt!
08.09.2015 13:00:32
Michael
Hi Rudi,
wieder einmal...
Vielen Dank für den freundlichen Hinweis,
schöne Grüße,
Michael

Das gilt nur in Xl generell, ...
08.09.2015 14:14:28
Luc:-?
…Rudi,
VBA kennt da Vorgehensvarianten…! ;-)
Gruß, Luc :-?

Danke, Luc :-?,
08.09.2015 16:42:24
Michael
ich hatte mich schnell bei MS vergewissert, und natürlich geht es auch mit +, aber es sich mit & bei Strings anzugewöhnen, erscheint mir durchaus sinnvoll - deshalb habe ich nicht gemeckert.
Ist halt wie bei den Physikern: "Was? Wieso ist Beschleunigung in MetermalsekundenQUADRAT?"
Wenn der olle Appel schon fällt, isses zu spät zum Nachdenken.
Schöne Grüße,
Michael

Anzeige
AW: Danke, Luc :-?,
09.09.2015 06:32:57
Wolf
Danke, hab noch was vergessen: Die Zelle mit dem =Ergebnis kannst auch in andere Spalten kopieren, aber bitte die Ergebniszelle als Zahl und die Aufgabenzelle als Text formatieren. Die Anpassiung erfolgt von Excel selbst.
Gruß Wolf

Na, dann sieh mal ...
09.09.2015 23:45:35
Luc:-?
hier ff (habe die Michael-Rudi-korrigierte Variante benutzt), Wolf!
Luc :-?

Nur zur Info: Rechnen mit Texten
09.09.2015 19:11:07
Luc:-?
Ich mache das wie folgt, Wolfgang:
 BCDEFGHI
1(5,6 Liter kleiner Kreislauf + 5,6 l großer Kreislauf) je Minute *60 Minuten*24Stunden16 128 l=--MaskOn(T2Form(B1);"num")
216 128 l=Compute(WECHSELN(MaskOn(B1;"num";"+,(*)");",";"."))
316 128 l=TextBerechnung
4  TextBerechnung=AUSWERTEN(MaskOn(B1;"num";"+,(*)"))
Das Liter-Symbol in Spalte D resultiert aus benutzer­definiertem Format, die in Spalte E gezeigten Fmln sind mögliche Varianten, wobei die dritte aus der ganz unten als 4. dargestellten benannten Fml mit XLM-Fkt AUSWERTEN resultiert und unter Einsatz der UDF MaskOn* aus dem Archiv auch nachvollzogen wdn kann. Die beiden 1.Fmln benötigen dagg noch eine weitere, unver­öffent­lichte UDF, können aber direkt in ZellFmln verwendet wdn.
* Diese entspricht in der Anwendung hier also deiner UDF Sauber, ist aber wesentlich universeller, d.h., kann mehrere ähnlich gelagerte Aufgaben lösen.
Gruß, Luc :-?
Besser informiert mit …
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige