2k Aufrufe
Gefragt in Tabellenkalkulation von ahorn38 Experte (3.3k Punkte)
Hallo
ich habe einen besonders hartnäckigen Fall eines Nichtzahlenformates im Excel. Über den Import von Bankdaten in eine Excel-Datei erhalte ich Daten in der Form
3.569,49 EUR
Diese werden mit dem Format "Standard" im Excel angezeigt, lassen sich aber nicht addieren. Ich habe alle mir bekannten Varianten mit Multiplikation*1 oder Addition*0 durch und auch versucht durch
Cells(i, 8).Value = Format(Cells(i, 8), "#,##0.00 €")
die Felder einzeln zu konvertieren. NICHTS hat geholfen!
Das Einzige was ging, war über "Text in Spalten" Zahlen von "EUR" trennen, dann ließen sich die Zahlen addieren.
Da ich die Daten in einem Code verwende, ist dieser Weg aber nicht möglich. Hat noch jemand einen Tipp???
Danke und Gruß A.

6 Antworten

0 Punkte
Beantwortet von computerschrat Profi (33.3k Punkte)
Hallo Andreas,

kannst du einen Ausschnitt aus der Datei zur Verfügung stellen? So, dass man weder deinen Kontostand, noch deine Kontonummer erkennen kann:-)

Gruß
computerschrat
0 Punkte
Beantwortet von m-o Profi (22.9k Punkte)
Hallo Andreas,

du müsstest die Zahlen dann eben im Code umwandeln, z.B. so:
MsgBox CDbl(Left(Range("A1"), Len(Range("A1")) - 4)) + CDbl(Left(Range("A2"), Len(Range("A2")) - 4))

Hier werden z.B. zwei Zahlen (stehen in A1 und A2) in deinem genannten Format addiert und das Ergebnis wird in einer Messagebox ausgegeben.
Durch CDbl wird die als Text vorliegende Zahl in Double umgewandelt, nachdem " EUR" entfernt wurde.

Gruß

M.O.
0 Punkte
Beantwortet von ahorn38 Experte (3.3k Punkte)
Hallo,

ich habe die Daten mal in einer einfachen Datei unter dem link zum Hochladen:

http://www.file-upload.net/download-11182630/DatenSupportnet.XLS.html
Falls noch jemand eine Idee hat...


Der Tipp von M.O. ist auch prima, so kann ich über eine kleine Schleife die Daten zu Werten machen - danke!

Gruß
A.
0 Punkte
Beantwortet von
Hallo Andreas,

falls du NUR eine Gesamtsumme haben willst, kannst du das auch leicht ohne Code mit der Formel =SUMMENPRODUKT((LINKS(H5:H29;LÄNGE(H5:H29)-4))*1) ausrechnen.

Innerhalb deines Importcodes sparst du dir damit zumindest die Schleife über diese beiden Befehlszeilen:
Set s = Cells(Rows.Count, 8).End(xlUp)
s.Offset(1, 0).Formula = "=SUMPRODUCT((LEFT(" & Range("$H$5:" & s.Address).Address & ",LEN(" & Range("$H$5:" & s.Address).Address & ")-4))*1)"
Übrigens: mit der .TextToColumns-Eigenschaft des Range-Objekts ist es sehr wohl möglich diese Funktion auch innerhalb eines Codes zu nutzen. Allerdings gibts da bessere Möglichkeiten, wie M.O dir gezeigt hat.

Liebe Grüße Mr. K.
0 Punkte
Beantwortet von
Mal wieder zu komplex gedacht. Natürlich kannst du Range auch weglassen, dann wird das Monstrum noch kürzer:

Set s = Cells(Rows.Count, 8).End(xlUp)
s.Offset(1, 0).Formula = "=SUMPRODUCT((LEFT(" & "$H$5:" & s.Address & ",LEN(" & "$H$5:" & s.Address & ")-4))*1)"
0 Punkte
Beantwortet von ahorn38 Experte (3.3k Punkte)
...perfekt!
Danke an alle Tipp-Geber!
Gruß A.
...