❤️ Helfen Sie noch heute, unser LibreOffice Forum zu erhalten! ❤️
Unterstützen Sie das LibreOffice-Forum und helfen Sie uns, unser Ziel für 2025 zu erreichen!
🍀 Jeder Beitrag zählt – vielen Dank für Ihre Unterstützung!🍀
Mit Ihrer Spende sichern Sie den Fortbestand, den Ausbau und die laufenden Kosten dieses Forums. 🌱
>> Dank Ihrer Unterstützung -> Keine Werbung für alle registrierten LibreOffice-Forum User! <<
🤗 Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet. 🤗
Frage zu "Text" in Funktion: WERT("Text")
Frage zu "Text" in Funktion: WERT("Text")
Die Funktion WERT("Text") versucht eine Textzeichenkette in eine Zahl zu konvertieren, wobei Text auch ein mathematischer Ausdruck sein kann; z.B. =WERT(3*4+7,25+24/6). Das ergibt 23,25
Den Text muss ich direkt zwischen die Klammern eingegeben.
Ich suche eine Möglichkeit anstelle von "Text" eine Zelle anzugeben in der der Text steht. Das geht bei mir leider nicht.
Daher meine Frage: Gibt es eine Möglichkeit (oder eine andere Funktion) die es erlaubt zwischen den Klammern anstelle der Direkteingabe des Textstrings eine Zelle anzugeben, in der der Text steht?
Zur Info: Betr.-Syst. Windows 7 LibreOffice Version: 4.4.7.2
Andreas
Abgeschlossen\Erledigt
Den Text muss ich direkt zwischen die Klammern eingegeben.
Ich suche eine Möglichkeit anstelle von "Text" eine Zelle anzugeben in der der Text steht. Das geht bei mir leider nicht.
Daher meine Frage: Gibt es eine Möglichkeit (oder eine andere Funktion) die es erlaubt zwischen den Klammern anstelle der Direkteingabe des Textstrings eine Zelle anzugeben, in der der Text steht?
Zur Info: Betr.-Syst. Windows 7 LibreOffice Version: 4.4.7.2
Andreas
Abgeschlossen\Erledigt
Zuletzt geändert von zerfass am Fr 20. Mai 2016, 19:15, insgesamt 1-mal geändert.
Re: Frage zu "Text" in Funktion: WERT("Text")
Wie äußert sich das? Fehlermeldung?zerfass hat geschrieben: Das geht bei mir leider nicht.
Bei mir funktioniert Wert(A1) normalerweise durchaus.
Mfg, Jörn.
LO 6.0.7 (32Bit) Win8.1 Pro 32 Bit/ LO 6.3.2 Win10 64Bit / LO 6.0.7 Win7 Pro 64 Bit
Re: Frage zu "Text" in Funktion: WERT("Text")
Hallo Jörn,
bei mir funktioniert das auch, solange in der Zelle eine Zahl steht.
Steht dort aber eine Zeichenkette, z.B. 123+4 dann kommt die Fehlermeldung Err:502
Andreas
bei mir funktioniert das auch, solange in der Zelle eine Zahl steht.
Steht dort aber eine Zeichenkette, z.B. 123+4 dann kommt die Fehlermeldung Err:502
Andreas
Re: Frage zu "Text" in Funktion: WERT("Text")
Hallo Andreas,
die Funktion "WERT()" kann keine Berechnungen mit einem String durchführen.
Aus der Sicht von CALC siehst 33*10 wie
DREI DREI STERN EINS NULL
aus und nicht wie Dreiunddreißig mal Zehn.
Wenn Du den Term direkt in die Klammern von Wert() schreibst ist CALC offensichtlich in der
Lage die Zahlen und den Operator korrekt zu behandeln.
Somit:
Die Fehlermeldung Err.502 bedeutet: Ungültiges Argument
Dies ist korrekt, weil Du der Funktion einen String(Zeichenkette) übergibst.
Dein Problem ist meines Wissens nach nur mit einem Makro in Form einer "user-defined function" (UDF) zu lösen.
Ich kann mich auch irren, habe selbst keine Formelkombination für dieses Problem gefunden.
Einen Ansatz habe ich Dir hier mal weiter unten im zweiten Code-Abschnitt aufgelistet.
In der UDF wird der komplette String in einzelne Zeichen zerlegt, in einem Array gespeichert, was "nur" noch fehlt
ist das logische Zusammensetzen eines mathematischen Terms.
Hier hänge ich im Augenblick fest.
--------------------------------------------------------------------------------
Was ist eine UDF?
Eine UDF ist nichts weiter als eine "CALC-Formel/ Funktion" die man selbst definiert.
Ein kleines Beispiel:
Der Aufruf im Tabellenblatt lautet z.B. Formel in C1:
Trage nun Werte in A1 und B1 ein und die beiden Werte werden multipliziert.
--------------------------------------------------------------------------------
Dies ist der Code für Deinen "mathematischen Term". Er ist wie erwähnt noch nicht komplett und kann zur Zeit
noch nicht als UDF ausgeführt werden. Er kann aber direkt in der Basic-IDE aufgerufen werden.
Hat jemand eine bessere Idee oder kennt doch eine Formel-Kombination?
Die UDF-Lösung werden ich jedenfalls noch ausbauen, kann aber ein wenig dauern!
Gruß
craig
die Funktion "WERT()" kann keine Berechnungen mit einem String durchführen.
Aus der Sicht von CALC siehst 33*10 wie
DREI DREI STERN EINS NULL
aus und nicht wie Dreiunddreißig mal Zehn.
Wenn Du den Term direkt in die Klammern von Wert() schreibst ist CALC offensichtlich in der
Lage die Zahlen und den Operator korrekt zu behandeln.
Somit:
Die Fehlermeldung Err.502 bedeutet: Ungültiges Argument
Dies ist korrekt, weil Du der Funktion einen String(Zeichenkette) übergibst.
Dein Problem ist meines Wissens nach nur mit einem Makro in Form einer "user-defined function" (UDF) zu lösen.
Ich kann mich auch irren, habe selbst keine Formelkombination für dieses Problem gefunden.
Einen Ansatz habe ich Dir hier mal weiter unten im zweiten Code-Abschnitt aufgelistet.
In der UDF wird der komplette String in einzelne Zeichen zerlegt, in einem Array gespeichert, was "nur" noch fehlt
ist das logische Zusammensetzen eines mathematischen Terms.
Hier hänge ich im Augenblick fest.

--------------------------------------------------------------------------------
Was ist eine UDF?
Eine UDF ist nichts weiter als eine "CALC-Formel/ Funktion" die man selbst definiert.
Ein kleines Beispiel:
Code: Alles auswählen
REM ***** BASIC *****
REM Multiplikation von zwei Zellen
Function Andreas(a,b)
Andreas = a*b
End Function
Code: Alles auswählen
=Andreas(A1;B1)
--------------------------------------------------------------------------------
Dies ist der Code für Deinen "mathematischen Term". Er ist wie erwähnt noch nicht komplett und kann zur Zeit
noch nicht als UDF ausgeführt werden. Er kann aber direkt in der Basic-IDE aufgerufen werden.
Code: Alles auswählen
REM ***** BASIC *****
REM STRING in einen mathematisch Term wandeln
Sub Main
dim mZ(15) as Variant
dim mY(15) as Variant
' Termen sollen später variable dem Tabellblatt entnommen werden
x=cstr("33*12+4/24/7,25")
' Anzahl Zeichen
y=Len(x)
' String in einzelne Zeichen zerlegen
for i = 0 to y-1
if i=0 then
z=left(x,1)
else
z = right(left(x,i+1),1)
' print z
end if
' in jedes Datenfeld des Array's ein Zeichen schreiben
mZ(i)=z
next i
' Ziffern in Zahlen (Datentyp: Double) umwandeln
for i = 0 to y-1
if isnumeric(mZ(i))=true then
mY(j)=cdbl(mZ(i))
j=j+1
' Wenn Operator gefunden wird ein Trennzeichen ("|") in Datenfeld schreiben
if isnumeric(mZ(i))=False then mY(j)="|"
end if
next i
msgbox "Dies ist immer noch ein String -->" & x & chr(13) & chr(13) & _
"Dies ist der Anfang eines numerischen Ausdrucks --> " & "=" & mZ(0) & mZ(1) & mZ(2),64
End Sub
Die UDF-Lösung werden ich jedenfalls noch ausbauen, kann aber ein wenig dauern!
Gruß
craig
Gruß
Craig
Nie die Sicherungskopie vergessen!
════════════════════════════════════════════════
WIN 10 Pro 64-Bit • LO 7.4.5.1 (x64) • AOO 4.1.8
Craig
Nie die Sicherungskopie vergessen!
════════════════════════════════════════════════
WIN 10 Pro 64-Bit • LO 7.4.5.1 (x64) • AOO 4.1.8
Re: Frage zu "Text" in Funktion: WERT("Text")
Hallo Craig,
danke für Deine Überlegungen, aber mach Dir nicht zu viel Mühe.
Ich habe das Problem inzwischen in mehreren Schritten manuell gelöst, zwar umständlich, aber immerhin.
Ich habe die Frage gepostet, weil ich (als ehemaliger Ingenieur) der Meinung war, dass es eine einfache Lösung geben müsste, die ich nur noch nicht gefunden habe. Aber dem ist wohl nicht so.
Zur Info: Ich bin seit über 20 Jahren Rentner, habe Zeit und gebe kostenlos Nachhilfe (meine Rente langt mir) in Mathe, Physik und Englisch.
Das aktuelle Problem ist Teil einer Aufgabenstellung und hat folgenden Hintergrund:
Ich stelle für Schüler der 3. und 4. Klasse per Zufallsgenerator die Bestandteile von Aufgaben (Zahlen, Operatoren) zusammen, berechne die Quersumme des Ergebnisses (einstufig) und gebe beides den Schülern. An Hand der Quersumme können sie überprüfen, ob sie richtig gerechnet haben.
Einstufig heißt: ich mache nur einen Durchgang und akzeptiere auch mehrstellige Ergebnisse.
Ich weiß: die mathematische Definition von Quersumme ist anders. Dort werden so lange Quersummen, auch der Ergebnisse, gebildet, bis das Ergebnis einstellig ist.
Fazit: Da es keine einfache Lösung zu geben scheint, werde ich weiterhin manuell vorgehen.
Allen die helfen wollten herzlichen Dank.
Andreas
danke für Deine Überlegungen, aber mach Dir nicht zu viel Mühe.
Ich habe das Problem inzwischen in mehreren Schritten manuell gelöst, zwar umständlich, aber immerhin.
Ich habe die Frage gepostet, weil ich (als ehemaliger Ingenieur) der Meinung war, dass es eine einfache Lösung geben müsste, die ich nur noch nicht gefunden habe. Aber dem ist wohl nicht so.
Zur Info: Ich bin seit über 20 Jahren Rentner, habe Zeit und gebe kostenlos Nachhilfe (meine Rente langt mir) in Mathe, Physik und Englisch.
Das aktuelle Problem ist Teil einer Aufgabenstellung und hat folgenden Hintergrund:
Ich stelle für Schüler der 3. und 4. Klasse per Zufallsgenerator die Bestandteile von Aufgaben (Zahlen, Operatoren) zusammen, berechne die Quersumme des Ergebnisses (einstufig) und gebe beides den Schülern. An Hand der Quersumme können sie überprüfen, ob sie richtig gerechnet haben.
Einstufig heißt: ich mache nur einen Durchgang und akzeptiere auch mehrstellige Ergebnisse.
Ich weiß: die mathematische Definition von Quersumme ist anders. Dort werden so lange Quersummen, auch der Ergebnisse, gebildet, bis das Ergebnis einstellig ist.
Fazit: Da es keine einfache Lösung zu geben scheint, werde ich weiterhin manuell vorgehen.
Allen die helfen wollten herzlichen Dank.
Andreas
Re: Frage zu "Text" in Funktion: WERT("Text")
Hallo Andreas,
vielen Dank für die Rückanwort.
Ich habe hier noch eine halbmanuelle Lösung:
Das Zauberwort heißt "Suchen & Ersetzen" mit regulären Ausdrücken"
Dieses funktioniert mit dem Writer, als auch CALC nur sehr spartanisch.
Besser funktioniert es mit dem Texteditor Notepad++.
Falls Du diesen noch nicht installiert hast, hier der Link zum Download:
https://notepad-plus-plus.org/download/v6.9.1.html
Die Methode:
1.
Kopiere die Excel-Spalte in die Zwischenablage
2.
Füge dieses nun in Notepad ein.
3.
Füge vor dem ersten Absatz ein Leerzeile ein.
4.
Drücke die Tastenkombination STRG+h
5.
Es öffnet sich das Fenster "Suchen & Ersetzen".
6.
Nun den Suchmodus (links unten) die Option "Reguläre Ausdrücke" auswählen
7.
In der Such-Zeile tippst Du: \n
8.
In die Ersetzen-Zeile: =
9.
Auf "Alle ersetzen" klicken.
10.
Jetzt alles, bis auf die erste Zeile markieren und in ein beliebige Spalte von CALC zurückschreiben.
Funktion "Quersumme"
Gruß
Craig
vielen Dank für die Rückanwort.
Ich habe hier noch eine halbmanuelle Lösung:
Das Zauberwort heißt "Suchen & Ersetzen" mit regulären Ausdrücken"
Dieses funktioniert mit dem Writer, als auch CALC nur sehr spartanisch.
Besser funktioniert es mit dem Texteditor Notepad++.
Falls Du diesen noch nicht installiert hast, hier der Link zum Download:
https://notepad-plus-plus.org/download/v6.9.1.html
Die Methode:
1.
Kopiere die Excel-Spalte in die Zwischenablage
2.
Füge dieses nun in Notepad ein.
3.
Füge vor dem ersten Absatz ein Leerzeile ein.
4.
Drücke die Tastenkombination STRG+h
5.
Es öffnet sich das Fenster "Suchen & Ersetzen".
6.
Nun den Suchmodus (links unten) die Option "Reguläre Ausdrücke" auswählen
7.
In der Such-Zeile tippst Du: \n
8.
In die Ersetzen-Zeile: =
9.
Auf "Alle ersetzen" klicken.
10.
Jetzt alles, bis auf die erste Zeile markieren und in ein beliebige Spalte von CALC zurückschreiben.
Funktion "Quersumme"
Code: Alles auswählen
=REST(A1;9)
Craig
Gruß
Craig
Nie die Sicherungskopie vergessen!
════════════════════════════════════════════════
WIN 10 Pro 64-Bit • LO 7.4.5.1 (x64) • AOO 4.1.8
Craig
Nie die Sicherungskopie vergessen!
════════════════════════════════════════════════
WIN 10 Pro 64-Bit • LO 7.4.5.1 (x64) • AOO 4.1.8
Re: Frage zu "Text" in Funktion: WERT("Text")
Hallo Craig,
ja, diese Methode der Quersummenberechnung kenne ich. Das Ergebnis ist eine einstellige Zahl.
D.h. die Schüler müssten die Quersummenrechnung evtl. mehrmals durchführen, was ich ihnen ersparen wollte.
Mir kommt es darauf an, dass sie die zu überprüfende Rechnung richtig ausführen.
Nochmals Danke und alles Gute
Andreas
ja, diese Methode der Quersummenberechnung kenne ich. Das Ergebnis ist eine einstellige Zahl.
D.h. die Schüler müssten die Quersummenrechnung evtl. mehrmals durchführen, was ich ihnen ersparen wollte.
Mir kommt es darauf an, dass sie die zu überprüfende Rechnung richtig ausführen.
Nochmals Danke und alles Gute
Andreas
Re: Frage zu "Text" in Funktion: WERT("Text")
Hallo,
ich hbae mal mit heißer Nadel ein Makro geschrieben, in dem eine Funktion wert_udf() definiert wird.
Der Funktion wird ein Term als String übergeben und liefert den Termwert. Dazu schreibt sie den Term mit "=" in die Zelle ALM1 (die hoffentlich leer ist) und gibt den Termwert zurück. Leider/interessanterweise lässt sich diese Zelle aus der Funktion heraus nicht leeren (stört aber erstmal auch nicht).
ich hbae mal mit heißer Nadel ein Makro geschrieben, in dem eine Funktion wert_udf() definiert wird.
Der Funktion wird ein Term als String übergeben und liefert den Termwert. Dazu schreibt sie den Term mit "=" in die Zelle ALM1 (die hoffentlich leer ist) und gibt den Termwert zurück. Leider/interessanterweise lässt sich diese Zelle aus der Funktion heraus nicht leeren (stört aber erstmal auch nicht).
Code: Alles auswählen
function wert_udf(sAusdruck as string) as double
odoc=thiscomponent
otab=odoc.sheets(0)
ozelle=otab.getcellbyposition(1000,0) 'kann angepasst werden
sAusdruck=join(split(sAusdruck,","),".")
ozelle.formula="=" & sAusdruck
wert_udf=ozelle.value
end function
- Dateianhänge
-
- makro_wertberechnung aus string.ods
- (9.77 KiB) 352-mal heruntergeladen
Gruß,
mikele
mikele
Re: Frage zu "Text" in Funktion: WERT("Text")
Hallo,
ich würde das Problem einfach umgekehrt angehen: Eigentlich braucht man hier keinen Formelinterpreter,
sondern nur die Möglichkeit eine Formel als Text für die Aufgabenstellung anzuzeigen.
Dies liefert uns CALC mit der Funktion Formel() schon mit.
Es reicht also die "Aufgabe" als echte Formel in Calc einzugeben zB in A1 =3*4
In B1 zeigen wir einfach die Formel an =FORMEL(A1)
Der Rest ist Feinarbeit: Das Gleichheitszeichen aus der Formel löschen,
die Quersumme der "Lösung" in A1 bestimmen und
die Daten auf ein Eingablatt für den Lehrer und ein Aufgabenblatt für die Schüler verteilen.
Eine rudimentäre Version habe ich mal angehängt.
MfG, Jörn
PS: Übrigens ein schönes Beispiel, wie der Kontext einer Aufgabe zu völlig anderen Lösungen als
die ursprüngliche Frage führen kann.
ich würde das Problem einfach umgekehrt angehen: Eigentlich braucht man hier keinen Formelinterpreter,
sondern nur die Möglichkeit eine Formel als Text für die Aufgabenstellung anzuzeigen.
Dies liefert uns CALC mit der Funktion Formel() schon mit.
Es reicht also die "Aufgabe" als echte Formel in Calc einzugeben zB in A1 =3*4
In B1 zeigen wir einfach die Formel an =FORMEL(A1)
Der Rest ist Feinarbeit: Das Gleichheitszeichen aus der Formel löschen,
die Quersumme der "Lösung" in A1 bestimmen und
die Daten auf ein Eingablatt für den Lehrer und ein Aufgabenblatt für die Schüler verteilen.
Eine rudimentäre Version habe ich mal angehängt.
MfG, Jörn
PS: Übrigens ein schönes Beispiel, wie der Kontext einer Aufgabe zu völlig anderen Lösungen als
die ursprüngliche Frage führen kann.
- Dateianhänge
-
- AufgabenQS.ods
- (40.66 KiB) 324-mal heruntergeladen
LO 6.0.7 (32Bit) Win8.1 Pro 32 Bit/ LO 6.3.2 Win10 64Bit / LO 6.0.7 Win7 Pro 64 Bit
Re: Frage zu "Text" in Funktion: WERT("Text")
Hallo Jörn,
danke für den interessanten Vorschlag, nur ...
... in meinem jetzigen Fall geht das nicht, weil ich die Aufgabenteile, wie weiter oben beschrieben, mit dem Zufallsgenerator erstellt habe.
Die Aufgaben liegen als Textstring vor.
Deine (umgekehrte) Vorgehensweise werde ich versuchen anzuwenden, wenn ich das nächste Aufgabenpacket selbst erstelle.
Es ist dann nur eine Frage, welches Vorgehen mir am wenigsten Arbeit macht.
Amerkung: Im Internet gibt es ja auch jede Menge Aufgaben, aber einige Schüler sind bereits in der Lage diese Aufgaben und deren Lösungen zu suchen!
danke für den interessanten Vorschlag, nur ...
... in meinem jetzigen Fall geht das nicht, weil ich die Aufgabenteile, wie weiter oben beschrieben, mit dem Zufallsgenerator erstellt habe.
Die Aufgaben liegen als Textstring vor.
Deine (umgekehrte) Vorgehensweise werde ich versuchen anzuwenden, wenn ich das nächste Aufgabenpacket selbst erstelle.
Es ist dann nur eine Frage, welches Vorgehen mir am wenigsten Arbeit macht.
Amerkung: Im Internet gibt es ja auch jede Menge Aufgaben, aber einige Schüler sind bereits in der Lage diese Aufgaben und deren Lösungen zu suchen!
Zuletzt geändert von zerfass am Mi 18. Mai 2016, 08:27, insgesamt 1-mal geändert.
An alle, die das LibreOffice-Forum gern nutzen und unterstützen wollen:
Bitte helfen Sie uns mit 7 Euro pro Monat.
Durch Ihren Beitrag tragen Sie dazu bei, unsere laufenden Kosten für die kommenden Monate zu decken.
Unkompliziert per Kreditkarte oder PayPal.
Als ein kleines Dankeschön werden Sie im LO-Forum als SUPPORTER gekennzeichnet.