Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Text vor bestimmtem Zeichen löschen

Text vor bestimmtem Zeichen löschen
13.12.2018 08:52:41
Matthias
Guten Morgen zusammen,
folgendes Problem:
Ich versuche den Text vor einem bestimmten Zeichen zu löschen. Es geht sich um Telefonlisten. Nummern sind wie folgt aufgebaut:
+49 (0000) 0000 - 00
Nun möchte ich alles vor dem "-" löschen, und nur die Durchwahl stehen lassen.
Folgendes Makro habe ich gebaut: Application.ScreenUpdating = False start = 3 letzte = ActiveSheet.Range("E65536").End(xlUp).Row For lngZ = letzte To start Step -1 strW = Cells(lngZ, 5).Value If InStr(2, strW, "-", vbTextCompare) > 0 Then Cells(lngZ, 5) = Right(strW, InStr(2, strW, "-", vbTextCompare) - 1) End If Next Application.ScreenUpdating = True
Es klappt teilweise. Es nimmt das erste Zeichen, was es findet. und nicht das "-". Kann mir jemand verraten, wo der Fehler liegt?
Vielen Dank im voraus und liebe Grüße,
Matthias K.
Anzeige

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Text vor bestimmtem Zeichen löschen
13.12.2018 08:57:44
PeterK
Hallo
RIGHT verlangt als 2. Parameter die Anzahl der Zeichen! Also "len(strW) - InStr(..."
AW: Text vor bestimmtem Zeichen löschen
13.12.2018 09:00:35
Daniel
Hi
bei RIGHT musst du als 2. Parameter folgendes angeben:
Right(strW, Len(strW) - Instr(strW, "-"))
einfacher wäre hier die MID-Funktion:
Mid(strW, Instr(strW, "-")+1)
noch einfacher geht's aber mit der ERSETZEN-Funktion, wenn du "*-" durch nichts ersetzt:
dein komplettes Makro lässt sich dann mit einer Programmzeile ausführen:
Columns(5).Replace "*-", "", xlpart
Gruß Daniel
Anzeige
AW: Text vor bestimmtem Zeichen löschen
13.12.2018 09:13:06
Matthias
Hallo Daniel,
Vielen Dank, Funktioniert prima!
Achtung Falle: Wandlung Text in Zahl vermeiden
13.12.2018 09:33:09
Daniel
du musst hier u.U. beachten, dass wenn beim Entfernen der Vorwahl-Nummern nur Ziffern stehen bleiben, Excel dies in Zahlen wandelt und dann aus "xxx-01" nur "1" machst und die 0 verschwindet.
damit das nicht passiert musst du Excel mitteilen, dass die Werte wie Text behandelt werden sollen und nicht als Zahl. Hierzu musst du das Hochkomma voranstellen:
Replace "*-", "'", xpart
das solltest du auch tun, wenn du bei deiner Schleifenlösung bleibst:
Cells(lngZ, 5) = "'" & Mid(strW, InStr(strW, "-") + 1)
dann gäbe es noch eine dritte Lösungsvariante
wende auf die Spalte die Funktion DATEN - DATENTOOLS - TEXT IN SPALTEN an
wähle "-" als Trennzeichen
klicke im Schritt 3
- auf die erste Spalte und wähle "nicht importieren"
- auf die zweite Spalte und wähle "Text"
sieht als Code dann so aus:
Columns("E:E").TextToColumns Destination:=Range("E1"), DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, _
Tab:=False, Semicolon:=False, Comma:=False, Space:=False, _
Other:=True, OtherChar:="-", _
FieldInfo:=Array(Array(1, 9), Array(2, 2))
Gruß Daniel
Anzeige
AW: Achtung Falle: Wandlung Text in Zahl vermeiden
13.12.2018 10:03:34
Matthias
Hallo Daniel,
Vielen Dank für die Info, aber die Formatierung ist kein Problem, ich habe eine Hilfszeile für die Formatierung der Zellen, diese wird auch per Schleife rüberkopiert.
Range("A3:G4").Select
Selection.AutoFill Destination:=Range("A3:G55"), Type:=xlFillFormats
Range("A1").Select

Anzeige
AW: Text vor bestimmtem Zeichen löschen
13.12.2018 09:01:10
Matthias
Hallo
Geht auch mit Formeln
Tabelle1

 AB
1 +49 (0000) 0000 - 0000
2 +49 (0000) 0000 - 0101
3 +49 (0000) 0000 - 0202
4 +49 (0000) 0000 - 0303
5 +49 (0000) 0000 - 0404
6 +49 (0000) 0000 - 0505
7 +49 (0000) 0000 - 0606
8 +49 (0000) 0000 - 0707
9 +49 (0000) 0000 - 0808
10 +49 (0000) 0000 - 0909
11 +49 (0000) 0000 - 1010
12 +49 (0000) 0000 - 1111
13 +49 (0000) 0000 - 1212
14 +49 (0000) 0000 - 1313

Formeln der Tabelle
ZelleFormel
B1=WENNFEHLER(GLÄTTEN(TEIL(A1;FINDEN("-";A1)+1;9^9));"")
B2=WENNFEHLER(GLÄTTEN(TEIL(A2;FINDEN("-";A2)+1;9^9));"")
B3=WENNFEHLER(GLÄTTEN(TEIL(A3;FINDEN("-";A3)+1;9^9));"")
B4=WENNFEHLER(GLÄTTEN(TEIL(A4;FINDEN("-";A4)+1;9^9));"")
B5=WENNFEHLER(GLÄTTEN(TEIL(A5;FINDEN("-";A5)+1;9^9));"")
B6=WENNFEHLER(GLÄTTEN(TEIL(A6;FINDEN("-";A6)+1;9^9));"")
B7=WENNFEHLER(GLÄTTEN(TEIL(A7;FINDEN("-";A7)+1;9^9));"")
B8=WENNFEHLER(GLÄTTEN(TEIL(A8;FINDEN("-";A8)+1;9^9));"")
B9=WENNFEHLER(GLÄTTEN(TEIL(A9;FINDEN("-";A9)+1;9^9));"")
B10=WENNFEHLER(GLÄTTEN(TEIL(A10;FINDEN("-";A10)+1;9^9));"")
B11=WENNFEHLER(GLÄTTEN(TEIL(A11;FINDEN("-";A11)+1;9^9));"")
B12=WENNFEHLER(GLÄTTEN(TEIL(A12;FINDEN("-";A12)+1;9^9));"")
B13=WENNFEHLER(GLÄTTEN(TEIL(A13;FINDEN("-";A13)+1;9^9));"")
B14=WENNFEHLER(GLÄTTEN(TEIL(A14;FINDEN("-";A14)+1;9^9));"")


Excel Tabellen im Web darstellen >> Excel Jeanie HTML 4.8
Gruß Matthias
Anzeige
AW: Text vor bestimmtem Zeichen löschen
13.12.2018 09:14:38
Matthias
Hallo Matthias,
Vielen Dank, aber ich muss das in VBA lösen, habs jetzt dank Daniel :) Danke euch vielmals!
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Text vor einem bestimmten Zeichen löschen in Excel


Schritt-für-Schritt-Anleitung

Um in Excel alles vor einem bestimmten Zeichen zu löschen, beispielsweise in einer Telefonliste, kannst Du die folgenden Schritte befolgen:

  1. Öffne Excel und lade Deine Daten, die das Zeichen enthalten, vor dem Du den Text löschen möchtest.

  2. Öffne den VBA-Editor (drücke ALT + F11).

  3. Füge ein neues Modul hinzu:

    • Klicke auf "Einfügen" und wähle "Modul".
  4. Füge den folgenden Code ein:

    Sub TextVorZeichenLoeschen()
        Dim start As Long
        Dim letzte As Long
        Dim lngZ As Long
        Dim strW As String
    
        Application.ScreenUpdating = False
        start = 3 ' Zeile, ab der die Verarbeitung beginnen soll
        letzte = ActiveSheet.Range("E65536").End(xlUp).Row
    
        For lngZ = letzte To start Step -1
            strW = Cells(lngZ, 5).Value
            If InStr(1, strW, "-") > 0 Then
                Cells(lngZ, 5) = Mid(strW, InStr(1, strW, "-") + 1)
            End If
        Next
        Application.ScreenUpdating = True
    End Sub
  5. Starte das Makro durch Drücken von F5 oder über das Menü "Ausführen".

Damit wird alles vor dem "-" in der Spalte E gelöscht.


Häufige Fehler und Lösungen

  • Problem: Das Makro löscht nicht den gewünschten Text.

    • Lösung: Stelle sicher, dass Du die richtige Zeilennummer (start) und Spaltennummer (5 für Spalte E) angegeben hast.
  • Problem: Der Code funktioniert nicht, weil Excel die Werte als Zahlen interpretiert.

    • Lösung: Füge ein Hochkomma (') hinzu, um sicherzustellen, dass die Werte als Text behandelt werden:
    Cells(lngZ, 5) = "'" & Mid(strW, InStr(1, strW, "-") + 1)

Alternative Methoden

Es gibt auch andere Möglichkeiten, um Texte in Excel zu löschen:

  1. Mit der ERSETZEN-Funktion:

    • Du kannst die ERSETZEN-Funktion verwenden, um alles vor einem bestimmten Zeichen zu entfernen.
    • Beispiel: =ERSETZEN(A1;1;FINDEN("-";A1)-1;"") löscht alles vor dem "-".
  2. Text in Spalten:

    • Wähle die Spalte und gehe zu Daten > Text in Spalten. Wähle als Trennzeichen "-". Im dritten Schritt kannst Du die erste Spalte auf "nicht importieren" setzen und die zweite Spalte auf "Text".

Praktische Beispiele

Hier sind einige Beispiele, wie Du Texte vor bestimmten Zeichen in Excel löschen kannst:

  1. Beispiel mit Telefonnummern:

    • Angenommen, Du hast in Spalte A Telefonnummern wie +49 (0000) 0000 - 01. Mit der Formel =WENNFEHLER(GLÄTTEN(TEIL(A1;FINDEN("-";A1)+1;9^9));"") kannst Du die Durchwahl in Spalte B extrahieren.
  2. Beispiel mit Kommas:

    • Um alles nach einem Komma zu löschen, kannst Du die Formel =LINKS(A1;FINDEN(",";A1)-1) verwenden.

Tipps für Profis

  • Verwende die VBA-Optionen: Wenn Du häufig Texte vor einem bestimmten Zeichen löschen musst, erstelle ein benutzerdefiniertes Makro, das Du einfach ausführen kannst.
  • Automatisierung: Nutze die Excel-Funktionen, um die Daten automatisch zu formatieren oder zu bereinigen, ohne manuell eingreifen zu müssen.
  • Datenvalidierung: Achte darauf, dass die Daten in der richtigen Form vorliegen, um unerwünschte Fehler zu vermeiden.

FAQ: Häufige Fragen

1. Wie entferne ich Texte vor oder nach einem bestimmten Zeichen aus Zellen in Excel?
Du kannst entweder VBA verwenden oder die oben genannten Formeln wie ERSETZEN oder TEIL nutzen.

2. Was muss ich beachten, wenn Excel Zahlen aus den Texten macht?
Wenn Excel die Werte als Zahlen interpretiert, füge ein Hochkomma (') vor den Werten hinzu, um sie als Text zu behandeln.

3. Wie kann ich mehrere Zeichen gleichzeitig löschen?
Du kannst die ERSETZEN-Funktion oder die REPLACE-Methode in VBA verwenden, um mehrere Zeichen in einem Schritt zu entfernen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige