❤️ 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. 🌱


❤️ DANKE >> << DANKE ❤️

>> 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")

CALC ist die Tabellenkalkulation, die Sie immer wollten.
zerfass
Beiträge: 66
Registriert: Sa 12. Apr 2014, 11:50

Frage zu "Text" in Funktion: WERT("Text")

Beitrag von zerfass » So 15. Mai 2016, 12:44

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
Zuletzt geändert von zerfass am Fr 20. Mai 2016, 19:15, insgesamt 1-mal geändert.

Wanderer
* LO-Experte *
Beiträge: 909
Registriert: Di 11. Feb 2014, 20:03
Wohnort: Berlin

Re: Frage zu "Text" in Funktion: WERT("Text")

Beitrag von Wanderer » Mo 16. Mai 2016, 00:25

zerfass hat geschrieben: Das geht bei mir leider nicht.
Wie äußert sich das? Fehlermeldung?

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

zerfass
Beiträge: 66
Registriert: Sa 12. Apr 2014, 11:50

Re: Frage zu "Text" in Funktion: WERT("Text")

Beitrag von zerfass » Mo 16. Mai 2016, 07:59

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

craig
* LO-Experte *
Beiträge: 1137
Registriert: Do 21. Apr 2016, 11:42

Re: Frage zu "Text" in Funktion: WERT("Text")

Beitrag von craig » Mo 16. Mai 2016, 11:36

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. :oops:
--------------------------------------------------------------------------------
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
Der Aufruf im Tabellenblatt lautet z.B. Formel in C1:

Code: Alles auswählen

=Andreas(A1;B1)
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.

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
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
Gruß

Craig

Nie die Sicherungskopie vergessen!

════════════════════════════════════════════════
WIN 10 Pro 64-Bit • LO 7.4.5.1 (x64) • AOO 4.1.8

zerfass
Beiträge: 66
Registriert: Sa 12. Apr 2014, 11:50

Re: Frage zu "Text" in Funktion: WERT("Text")

Beitrag von zerfass » Mo 16. Mai 2016, 13:05

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

craig
* LO-Experte *
Beiträge: 1137
Registriert: Do 21. Apr 2016, 11:42

Re: Frage zu "Text" in Funktion: WERT("Text")

Beitrag von craig » Mo 16. Mai 2016, 14:53

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"

Code: Alles auswählen

=REST(A1;9)
Gruß

Craig
Gruß

Craig

Nie die Sicherungskopie vergessen!

════════════════════════════════════════════════
WIN 10 Pro 64-Bit • LO 7.4.5.1 (x64) • AOO 4.1.8

zerfass
Beiträge: 66
Registriert: Sa 12. Apr 2014, 11:50

Re: Frage zu "Text" in Funktion: WERT("Text")

Beitrag von zerfass » Mo 16. Mai 2016, 17:30

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

mikele
* LO-Experte *
Beiträge: 1947
Registriert: Mo 1. Aug 2011, 20:51

Re: Frage zu "Text" in Funktion: WERT("Text")

Beitrag von mikele » Mo 16. Mai 2016, 19:02

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).

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

Wanderer
* LO-Experte *
Beiträge: 909
Registriert: Di 11. Feb 2014, 20:03
Wohnort: Berlin

Re: Frage zu "Text" in Funktion: WERT("Text")

Beitrag von Wanderer » Mo 16. Mai 2016, 19:27

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.
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

zerfass
Beiträge: 66
Registriert: Sa 12. Apr 2014, 11:50

Re: Frage zu "Text" in Funktion: WERT("Text")

Beitrag von zerfass » Di 17. Mai 2016, 11:37

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!
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.



Antworten