Forum: PC-Programmierung Leerzeichen in EXCEL entfernen


von Wolfgang S. (wsm)


Lesenswert?

Klar, geht mit "Suchen - Ersetzen".

Aber wenn ein Leerzeichen an erster Stelle in einer Zelle steht und der 
nachfolgende Text ebenfalls Leerzeichen enthält, dann geht das halt 
nicht.

Also bleibt die Frage, wie ich das erste Leerzeichen entfernen kann.

Dazu:

Wie kann ich in EXCEL überhaupt Macros schreiben?
Welche Funktion wäre dafür in einem Macro geeignet?

Danke für Hinweise.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Wolfgang S. schrieb:
> Wie kann ich in EXCEL überhaupt Macros schreiben?

VBA. Als Einstieg ist der Macrorecorder gar nicht so schlecht, da kann 
man eine Klickaktion aufnehmen und erhält einen VBA-Programmschnipsel, 
der genau diese Aktion umsetzt.

Empfehlung: Das "Menüband" namens "Entwicklertools" einblenden.
(Ab 2007: Datei->Optionen->Menüband anpassen)

von Peter M. (r2d3)


Lesenswert?

Hallo Wolfgang,

ist ganz einfach.

Wolfgang S. schrieb:
> Also bleibt die Frage, wie ich das erste Leerzeichen entfernen kann.

=wechseln(" Test ";" ";"";1)

Erklärung
Ersetze im String " Test " das Leerzeichen (" ") durch gar nichts (""), 
aber nur beim 1. Auftreten.

Ergebniskontrolle mit =länge()

Gruß
Peter

von Minimalist (Gast)


Lesenswert?

Excel hat dafür die Funktion "GLÄTTEN()".

von npn (Gast)


Lesenswert?

Minimalist schrieb:
> Excel hat dafür die Funktion "GLÄTTEN()".

zum Leerzeichen in Zellen entfernen???

von BMSR-Techniker (Gast)


Lesenswert?

Hallo,

ich habe ein Makro, welches in einer Spalte (bei mir "AD") in den Zeilen 
2 bis 2000 die Leerzeichen am Ende einer Artikelnummer löscht.
Passe es einfach auf Deine Bedürfnisse an (LTrim()).
Evtl. gibt es andere, bessere Lösungen - aber meine Lösung funktioniert.


Sub ArtikelNr_Leerzeichen_entfernen()
' entfernt Leerzeichen am Ende der Artikelnummer

Dim i As Integer
Dim strZelle As String

    For i = 2 To 2000
        strZelle = "AD" & i
        Range(strZelle).Value = RTrim(Range(strZelle).Value)
    Next i

End Sub

von npn (Gast)


Lesenswert?

npn schrieb:
> Minimalist schrieb:
>> Excel hat dafür die Funktion "GLÄTTEN()".
>
> zum Leerzeichen in Zellen entfernen???

Sorry, du hast ja recht!
Ich war nur so verwundert, weil "Glätten" eher nach "Mittelwert" klingt 
als nach Stringbearbeitung...

Wieder was gelernt :-)

von c.m. (Gast)


Lesenswert?

was microsoft produkten fehlt sind regex. scnr, aber unter z.b. linux 
sähe das ungefähr so aus:
1
/^\s//g
plus ein wenig datenaufbereitung allerdings.

von Wolfgang S. (wsm)


Lesenswert?

Soweit ich die Vorschläge zu EXCEL verstehe, benötigen diese Funktionen 
die Ausgangszelle, welche dann jedoch erhalten bleiben muss.

Ich möchte den Inhalt der Ausgangszelle ändern, deshalb mein Gedanke mir 
den Macros.

Wie kann man das machen?

von Peter M. (r2d3)


Lesenswert?

Wolfgang S. schrieb:
> Soweit ich die Vorschläge zu EXCEL verstehe, benötigen diese
> Funktionen
> die Ausgangszelle, welche dann jedoch erhalten bleiben muss.
>
> Ich möchte den Inhalt der Ausgangszelle ändern, deshalb mein Gedanke mir
> den Macros.
>
> Wie kann man das machen?

Per Makro. Zwei geschachtelte Schleifen, die zusammen alle Zellen 
durchlaufen.

Innen drinn für jede Zelle eine Schleife, die buchstabenweise durch den 
Zelltext geht und bei Erreichen des ersten Leerzeichens von links den 
Text ohne das Leerzeichen ausgibt (die Zelle überschreibt) und dann die 
Schleife verlässt.
Abbruch mit Nichtstun bei Erreichen des Textendes.

von BMSR-Techniker (Gast)


Lesenswert?

@Alle die ihren Senf dazugegeben haben und speziell Wolfgang S.

lest bitte meinen Beitrag nochmal richtig.
Das Makro löscht die Leerzeichen am Ende des Strings.
Die Spalte wird von Zeile 2 bis Zeile 2000 durchlaufen.
Eine Hilfsspalte braucht man nicht.

von Peter M. (r2d3)


Lesenswert?

Hallo Wolfgang S.,

wenn Dein erstes Leerzeichen auch an der ersten Stelle der Zeichenkette 
steht, kann dank Benutzung von LTRIM die zeichenweise Suche in der Zelle 
entfallen.

von Wolfgang S. (wsm)


Lesenswert?

Danke, habe mein Problem gelöst.

von Peter M. (r2d3)


Lesenswert?

Wolfgang S. schrieb:
> Danke, habe mein Problem gelöst.

Auf welchem Weg denn?

von Wolfgang S. (Gast)


Lesenswert?

mit Word!

Vorher war die erste Spalte zu bearbeiten.
1. Davor habe ich eine Spalte eingefügt und einfach durchnummeriert.
2. Dann habe ich meine Excel-Tabelle als csv-Datei gespeichert. Die 
Spaltentrennung erfolgt dabei durch ein Semikolon.
3. Die csv-Datei mit Word geöffnet.
4. Die Kombination "; " wurde dann einfach durch ";" ersetzt.
5. alles wieder mit EXCEL öffnen.

Das war's.

P.S. ca. 1500 Einträge, davon unregelmäßig etwas 900 mit Leerzeichen am 
Anfang bearbeitet.

von Peter M. (r2d3)


Lesenswert?

Hallo Wolfgang,

Wolfgang S. schrieb:
> mit Word!

danke für die Rückmeldung. Das ist sicherlich eine kreative und 
effektive Lösung.

von c.m. (Gast)


Lesenswert?

Peter M. schrieb:
> Hallo Wolfgang,
>
> Wolfgang S. schrieb:
>> mit Word!
>
> danke für die Rückmeldung. Das ist sicherlich eine kreative und
> effektive Lösung.

um nochmal auf regex zurück zu kommen…
ich hätte das unter linux mit geany gemacht, das windows pendant ist 
möglicherweise notepad++.
spalte aus der tabellenkalkulation kopiert, in geany als text eingefügt, 
dann suchen und ersetzen mit regex (kann notepad++ das?) und das 
ergebnis wieder als spalte in die tabellenkalkulation eingefügt.
word ist finde ich suboptimal, weil es keine reine textverarbeitung ist. 
sollte man mal 50k zeilen zu bearbeiten haben verschluckt sich das 
möglicherweise.

von Peter M. (r2d3)


Lesenswert?

Hallo c.m.,

c.m. schrieb:
> um nochmal auf regex zurück zu kommen…
> ich hätte das unter linux mit geany gemacht, das windows pendant ist
> möglicherweise notepad++.
> spalte aus der tabellenkalkulation kopiert, in geany als text eingefügt,
> dann suchen und ersetzen mit regex (kann notepad++ das?) und das

Notepad++ kann suchen und ersetzen. Reguläre Ausdrücke kann  die 
Software auch, ich aber nicht. :)

Aber der Trick besteht doch darin, dass Wolfgang mit seiner Zusatzspalte 
das erste Leerzeichen eindeutig gemacht hat, so dass er die dumme 
"Suchen und Ersetzen"-Funktion anwenden konnte.

Mit diesem Kunstgriff kann alles, was "Suchen und Ersetzen" beherrscht, 
eingesetzt werden.

Gruß
Peter

P.S.: Wofür steht eigentlich c.m.?

von W. S. (Gast)


Lesenswert?

c.m. schrieb:
> word ist finde ich suboptimal, weil es keine reine textverarbeitung ist.

Ja, warum habe ich wohl Wird gewählt?
In Word kann ich auch alle Sonderzeichen suchen und austauschen.
Eine einfache Textverarbeitung kann das nicht!

von c.m. (Gast)


Lesenswert?

W. S. schrieb:
> c.m. schrieb:
>> word ist finde ich suboptimal, weil es keine reine textverarbeitung ist.
>
> Ja, warum habe ich wohl Wird gewählt?
> In Word kann ich auch alle Sonderzeichen suchen und austauschen.
> Eine einfache Textverarbeitung kann das nicht!
1
Ja, warum habe ich wohl Wird gewählt?
2
In Word kann ich auch alle Sonderzeichen suchen und austauschen.
3
Eine einfache Textverarbeitung kann das nicht!
4
5
[^a-zA-Z0-9\s]
6
7
Ja warum habe ich wohl Wird gewhlt
8
In Word kann ich auch alle Sonderzeichen suchen und austauschen
9
Eine einfache Textverarbeitung kann das nicht

du hast word gewählt weil das etwas ist was du kennst.
der tip mit den regex-fähigen texteditoren ist nur ein vorschlag.

von Huh (Gast)


Lesenswert?

c.m. schrieb:
>> Ja, warum habe ich wohl Wird gewählt?
>> In Word kann ich auch alle Sonderzeichen suchen und austauschen.
>> Eine einfache Textverarbeitung kann das nicht!
> Ja, warum habe ich wohl Wird gewählt?
> In Word kann ich auch alle Sonderzeichen suchen und austauschen.
> Eine einfache Textverarbeitung kann das nicht!
>
> [^a-zA-Z0-9\s]
>
> Ja warum habe ich wohl Wird gewhlt
> In Word kann ich auch alle Sonderzeichen suchen und austauschen
> Eine einfache Textverarbeitung kann das nicht

Zitierst du immer alles dreimal? :-)

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.