Hilfe zu Datenübernahme - MS Excel
HeikoH
- datenbank
0 Jörg Lorenz0 HeikoH0 Jörg Lorenz0 HeikoH0 Jörg Lorenz0 HeikoH
Guten Morgen an Alle,
ich hab da ein Problem mit Zahlenwerte im Excel die ich übernehmen möchte.
Auf einen Tabellenblatt sind die Zahlenformate ab 1000 mit einem Leerzeichen versehen.
Also nicht z.B. 3498 sondern 3 498.
Dieses Leerzeichen zwischen 3 und 4 möchte ich aber schon im Excel ändern weil die Werte aus den anderen Tabellen im "ordentlichen" Format vorliegen und ich es deshalb nicht im Script machen möchte.
Hab schon mit benutzerdefiniertes Formatieren der Zellen rumprobiert - bekomme es aber nicht hin.
Kann von Euch jemand damit um?
Danke schonmal im Voraus!
HeikoH
Hallo Heiko,
Kann von Euch jemand damit um?
kommt darauf an, was Du damit vor.
Also nicht z.B. 3498 sondern 3 498.
Dieses Leerzeichen zwischen 3 und 4 möchte ich aber schon im Excel ändern weil die Werte aus den anderen Tabellen im "ordentlichen" Format vorliegen und ich es deshalb nicht im Script machen möchte.
Hab schon mit benutzerdefiniertes Formatieren der Zellen rumprobiert - bekomme es aber nicht hin.
Das dürfte nicht funktionieren, weil Excel die Zahl nicht als Zahl erkennt. Zwei Beispiele, wie es funktionieren sollte:
Per Formel mit einer Funktion:
=WECHSELN(E4;" ";"")*1
Per VBA:
Range("E4") = Replace(Range("E4"), " ", "") * 1
Viele Grüße
Jörg
Hallihallo Jörg,
Per Formel mit einer Funktion:
=WECHSELN(E4;" ";"")*1
die Formal sah richtig gut aus - auf Wechseln wäre ich nie gekommen...
Aber er gibt mir einen Fehler aus - etwas mit Zirkelbezug - hm, muss noch ein wenig damit rumspielen
Per VBA:
Range("E4") = Replace(Range("E4"), " ", "") * 1
mit VBA kenn ich mich nicht so aus - ich probiers mal...
Aber danke für die Tips - wird schon werden...
LG HeikoH
Hi Heiko,
Per Formel mit einer Funktion:
=WECHSELN(E4;" ";"")*1die Formal sah richtig gut aus - auf Wechseln wäre ich nie gekommen...
Aber er gibt mir einen Fehler aus - etwas mit Zirkelbezug - hm, muss noch ein wenig damit rumspielen
Zirkelbezug heißt, dass Du Dich in der Formel auf eine Zelle beziehst, die direkt oder indirekt in der Formel enthalten ist. Das geht nicht, da kann Excel nicht mehr rechnen und es müsste 0 herauskommen. Wenn Du die Formel aus dem Beispiel zum Beispiel in F4 einträgst und in E4 steht =F4, gibt es den Zirkelbezug. Du kannst auch mal den Detektiv einschalten und Dir die Spuren anzeigen lassen.
mit VBA kenn ich mich nicht so aus - ich probiers mal...
Das ist in diesem Fall nicht schwer - man müsste nur wissen, in welchen Bereichen sich die Daten (also die Zahlen mit den Leerstellen) befinden.
Viele Grüße
Jörg
Hallihallo,
Zirkelbezug heißt, dass Du Dich in der Formel auf eine Zelle beziehst, die direkt oder indirekt in der Formel enthalten ist. Das geht nicht, da kann Excel nicht mehr rechnen und es müsste 0 herauskommen.
Jo, hab gemerkt wo mein Fehler war, klappt jetzt mit der Wechseln Funktion - das * 1 dahinter bedeutet das die Werte in Zahlen umgewandelt werden?!?
Vielleicht dann noch ne Frage - jede fünfte Zeile ist eine Leerzeile oder mit Text gefüllt - die will ich auch raushaben und nicht mühselig per Hand löschen - gibt es dafür auch eine Funktion?
LG HeikoH
Hi Heiko,
Jo, hab gemerkt wo mein Fehler war, klappt jetzt mit der Wechseln Funktion - das * 1 dahinter bedeutet das die Werte in Zahlen umgewandelt werden?!?
ja - ist etwas stümperhaft, aber es funktioniert in Deinem Fall sicher. Normalerweise müsste noch vermieden werden, dass das einen Fehler ergibt.
Vielleicht dann noch ne Frage - jede fünfte Zeile ist eine Leerzeile oder mit Text gefüllt - die will ich auch raushaben und nicht mühselig per Hand löschen - gibt es dafür auch eine Funktion?
Per Funktion stelle ich mir das etwas mühsam vor, wenn es sicher auch geht. Da ist es mit VBA doch etwas einfacher:
Hier ist mal ein Beispiel, das die Spalte 1 auf leere Zellen prüft:
Dim lngLZ As Long, lngZ As Long
lngZ = Cells(Rows.Count, 1).End(xlUp).Row
For lngZ = lngLZ To 1 Step -1
If Cells(lngZ, 1) = "" Then
Rows(lngZ).EntireRow.Delete
End If
Next
(ungetestet)
Viele Grüße
Jörg
Hi Jörg,
ja - ist etwas stümperhaft, aber es funktioniert in Deinem Fall sicher. Normalerweise müsste noch vermieden werden, dass das einen Fehler ergibt.
...aber es funktioniert und das ist das Wichtigste - danke nochmal
Da ist es mit VBA doch etwas einfacher:
na gut - ich probier mich mal damit
Dim lngLZ As Long, lngZ As Long
lngZ = Cells(Rows.Count, 1).End(xlUp).Row
For lngZ = lngLZ To 1 Step -1
If Cells(lngZ, 1) = "" Then
Rows(lngZ).EntireRow.Delete
End If
Next
dauert aber etwas - hab ich noch nicht gemacht
> (ungetestet)
...aber nicht mehr lange...
> Viele Grüße
auch von mir
HeikoH