Seite 1 von 1
[gelöst]Dezimalpunkt aus String entfernen damit val() funktioniert
Verfasst: Sa 4. Jul 2020, 22:59
von bugfisch
Hallo,
habe in einer Tabelle (Daten müssen so bleiben) Beträge mit einem Punkt "1.287,00 €" und möchte daraus eine Zahl machen. Val() arbeitet hier leider nicht gut!
Code: Alles auswählen
Sub Main
dim st as string
st = "1.287,00 €"
ld_x = val(st)
msgbox ld_x ' ergibt 1,287
End Sub
Mit welcher String-Funktion würdet ihr das bewerkstelligen?
Danke
Re: Dezimalpunkt aus String entfernen damit val() funktioniert
Verfasst: Sa 4. Jul 2020, 23:44
von Wanderer
Hallo,
wahrscheinlich mit keiner. Ich würde wie in diesem Thread
https://de.openoffice.info/viewtopic.ph ... 40#p291040
besprochen entweder neu importieren oder wie am Ende von Gast Peter vorgeschlagen kopieren und als unformatierten Text wieder einfügen.
Da es hier nicht um ein Datum geht, probier beim Import US-Englisch, denn Du hast offensichtlich Zahlen im amerikanischen Format importiert.
Mfg, Jörn
PS: Ansonsten: InStr
s.
https://wiki.openoffice.org/wiki/Docume ... e_Library)
Re: Dezimalpunkt aus String entfernen damit val() funktioniert
Verfasst: So 5. Jul 2020, 01:13
von craig
Hallo,
teste dies:
Code: Alles auswählen
REM ***** BASIC *****
REM https://wiki.openoffice.org/wiki/DE/Makro_Basic_Tutorial
Sub Main
Dim sStr as string
Dim fWert as Double
Dim nLaenge as Integer
sStr = "1.287,00 €"
' Gesamtlänge des Strings ermitteln
nLaenge=Len(sStr)
' Nur den linken Teil ohne Leerzeichen und €-Symbol erfassen
' Ergebnis = 1.287,00
sStr=left(sStr,nLaenge-2) ' -2 → Leerzeichen und Euro-Symbol
' Die Replace-Funktione aufrufen und die Ersetuzungsparameter übergeben.
' In diesem Fall wird der Punkt durch NICHTS ersetzt
sStr=Replace(sStr,".","")
' Runtime-Funktionen: https://wiki.openoffice.org/wiki/Documentation/BASIC_Guide/Conversion_Functions_(Runtime_Library)
' String per Runtime-Funktion (cDbl) in einen Doublewert umwandeln,
' so wird aus einer Ziffer eine Zahl.
' Eine Testberechnung:
fWert=cDbl(sStr) + 1000.52
print fWert
End Sub
REM Quelle: https://wiki.openoffice.org/wiki/Documentation/BASIC_Guide/Strings_%28Runtime_Library%29
Function Replace(Source As String, Search As String, NewPart As String)
Dim Result As String
Result = join(split(Source, Search), NewPart)
Replace = Result
End Function
Beachte die Kommentare im Code und die Website-Adressen zu den Doku's.
Re: Dezimalpunkt aus String entfernen damit val() funktioniert
Verfasst: So 5. Jul 2020, 11:15
von bugfisch
Hallo,
vielen vielen Dank für die Lösung. Habe mir gleich eine kompakte Funktion geschrieben die ich dann immer verwenden kann:
Code: Alles auswählen
Sub Main
Dim sStr$
Dim fWert#
sStr = "1.287,01 €"
fWert = myval(sStr)
print fWert
end sub
Function myval(sBetrag as string)
Dim nLaenge as Integer
nLaenge=Len(sBetrag)
sBetrag=left(sBetrag,nLaenge-2)
sBetrag=join(split(sBetrag,"."),"")
myval=cDbl(sBetrag)
end function
Schönen Sonntag noch
Re: Dezimalpunkt aus String entfernen damit val() funktioniert
Verfasst: So 5. Jul 2020, 13:05
von F3K Total
Moin,
wenn es sich um eine Calc-Tabelle handelt, warum nutzt du nicht einfach die Funktion WERT(), ?
Gruß R
Re: Dezimalpunkt aus String entfernen damit val() funktioniert
Verfasst: So 5. Jul 2020, 21:28
von bugfisch
F3K Total hat geschrieben: ↑So 5. Jul 2020, 13:05
Moin,
wenn es sich um eine Calc-Tabelle handelt, warum nutzt du nicht einfach die Funktion WERT(), ?
Gruß R
Wüsste nicht, dass ich das im Basic-Code einsetzen kann.

Re: Dezimalpunkt aus String entfernen damit val() funktioniert
Verfasst: Mo 6. Jul 2020, 11:48
von mikele
Hallo,
das kann man, aber die Frage ist eher, ob du die Konvertierung wirklich per Makro machen willst.
habe in einer Tabelle (Daten müssen so bleiben) Beträge mit einem Punkt "1.287,00 €"
Sind es in den Zellen wirklich Strings? Wenn ja, warum?
möchte daraus eine Zahl machen
Was ist das Ziel? (wenn die Daten gleichzeitig so bleiben müssen???)
Re: Dezimalpunkt aus String entfernen damit val() funktioniert
Verfasst: Di 7. Jul 2020, 18:50
von bugfisch
mikele hat geschrieben: ↑Mo 6. Jul 2020, 11:48
Sind es in den Zellen wirklich Strings? Wenn ja, warum?
Ja ist Quatsch, wurde von mir mal falsch festgelegt. Werde ich aber ändern - ist nur etwas Aufwand.
Danke