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

Forumthread: Tabs ersetzen

Tabs ersetzen
joko0803
Hallo an alle,
ich habe hier folgendes Problem zu lösen:
SAP liefert mir einen Download mit vielen Tabstopps in ein Textfile.
Das muss ich nun in Excel einlesen, wobei ich nur das erste Tabstopp-Zeichen verwenden darf.
Nun habe ich mir vorgestellt, dass ich die Datei erst mal ohne Konvertierung einlese.
Danach lösche ich alle Tabstopp-Zeichen mit Ausnahme des jeweils ersten heraus.
Dazu wäre ich dankbar, wenn ihr mir beim Makro helfen könntet. Da ist sicherlich super einfach, aber ich blicke das einfach nicht.
Oder gibt es gar eine noch einfachere Lösung für mein Problem?
Danke für eure Hilfe
Joko
Anzeige

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
noch fragen...
08.10.2009 16:19:52
Tino
Hallo,
wie liegen Dir die Daten vor, als kompletter String oder Zeilenweise in Zellen?
Gibt es ein Zeichen das in diesem Text nirgendwo vorkommt? z.Bsp. &gt oder &lt
Gruß Tino
AW: noch fragen... Antwort
08.10.2009 16:28:26
joko0803
Hallo Tino,
erst mal Danke dass Du dir meinen Eintrag angesehen hast.
Die Datei liegt erst mal als Text-Datei vor, die ich wie beschrieben in Excel einlese.
Wenn an der ersten Stelle ein Tab-Zeichen steht soll das erhalten bleiben.
Alle anderen sollen gelöscht werden.
Die Einlese-Datei in Excel habe ich verkürzt angehängt.
https://www.herber.de/bbs/user/64970.xls
Zeichen die nie vorkommen könnten sein: "xxxx"
Danke für Deine Hilfe
John
Anzeige
vielleicht geht es so.
08.10.2009 18:41:57
Tino
Hallo,
ich hoffe ich habe dich richtig verstanden.
Den richtigen vbTab kann man in Excel nicht darstellen,
also habe ich diese zuerst mit Space ersetzt (CHR(32)) und danach lösche ich alle mehrfach vorkommente Space- Zeichen.
Private Function Replace_Space(strString$, strPattern$)
Dim Regex As Object
Set Regex = CreateObject("Vbscript.Regexp")
With Regex
    .Pattern = strPattern & "{2,1000}"
    .Global = True
     Replace_Space = .Replace(strString, strPattern)
     Do While Left$(Replace_Space, 1) = strPattern
      Replace_Space = Right$(Replace_Space, Len(Replace_Space) - 1)
     Loop
End With
Set Regex = Nothing
End Function

Sub ErsetzeTabs()
Dim MeAr() As Variant
Dim A As Long
Dim strPattern As String

strPattern = Chr(32)

MeAr = Range("A1", Cells(Rows.Count, 1).End(xlUp))

For A = 1 To Ubound(MeAr)
 If InStr(MeAr(A, 1), strPattern) > 0 Then
      MeAr(A, 1) = Replace(MeAr(A, 1), vbTab, strPattern)
      MeAr(A, 1) = Replace_Space(CStr(MeAr(A, 1)), strPattern)
 End If
Next A

Range("A1").Resize(Ubound(MeAr)) = MeAr
End Sub
Gruß Tino
Anzeige
nicht so ganz aber danke für den Lösungsansatz
09.10.2009 09:31:50
joko0803
Hallo Tino,
danke für die viele Mühe die Du dir gemacht hast.
Das Makro als solches funktioniert super.
Leider: Die vielen Leerzeichen, die enthalten sind, brauche ich für eine spätere Einlese.
Die Struktur der Zahlenkolonnen muss erhalten bleiben.
Dein Ansatz ist toll und ich werde versuchen an statt der Umwandlung in Leerzeichen,
die Umwandlung in "xxx" zu machen, und im Anschluss alle "xxx" zu löschen.
Gruß und Danke
John
Anzeige
vielleicht jetzt...
09.10.2009 15:44:17
Tino
Hallo,
ok. wenn es wirklich nur um Tabs geht, versuchen wir es so.
Ich ersetze zuerst für jedes Tab durch ° (kann man besser erkennen),
in der Funktion ersetze ich alle ° die mehrfach nacheinander vorkommen durch ein Tab.
Private Function Replace_Space(strString$, strPattern$)
Dim Regex As Object
Set Regex = CreateObject("Vbscript.Regexp")
With Regex
    .Pattern = "°{2,1000}"
    .Global = True
     Replace_Space = .Replace(strString, strPattern)
     Do While Left$(Replace_Space, 1) = strPattern
      Replace_Space = Right$(Replace_Space, Len(Replace_Space) - 1)
     Loop
End With
Set Regex = Nothing
End Function

Sub ErsetzeTabs()
Dim MeAr() As Variant
Dim A As Long
Dim strPattern As String

strPattern = vbTab

MeAr = Range("A1", Cells(Rows.Count, 1).End(xlUp))

For A = 1 To Ubound(MeAr)
 If InStr(MeAr(A, 1), strPattern) > 0 Then
      MeAr(A, 1) = Replace(MeAr(A, 1), strPattern, "°")
      MeAr(A, 1) = Replace_Space(CStr(MeAr(A, 1)), strPattern)
 End If
Next A

Range("A1").Resize(Ubound(MeAr)) = MeAr
End Sub
Gruß Tino
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Tabs ersetzen in Excel


Schritt-für-Schritt-Anleitung

Um die Tabstopps in Excel zu ersetzen, kannst du das folgende VBA-Makro verwenden. Es hilft dir, alle Tabstoppzeichen zu entfernen, außer dem ersten in jeder Zeile. So gehst du vor:

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.

  2. Gehe zu Einfügen > Modul, um ein neues Modul zu erstellen.

  3. Füge den folgenden Code in das Modul ein:

    Private Function Replace_Space(strString As String, strPattern As String) As String
        Dim Regex As Object
        Set Regex = CreateObject("Vbscript.Regexp")
        With Regex
            .Pattern = strPattern & "{2,1000}"
            .Global = True
            Replace_Space = .Replace(strString, strPattern)
            Do While Left$(Replace_Space, 1) = strPattern
                Replace_Space = Right$(Replace_Space, Len(Replace_Space) - 1)
            Loop
        End With
        Set Regex = Nothing
    End Function
    
    Sub ErsetzeTabs()
        Dim MeAr() As Variant
        Dim A As Long
        Dim strPattern As String
    
        strPattern = vbTab
        MeAr = Range("A1", Cells(Rows.Count, 1).End(xlUp))
    
        For A = 1 To UBound(MeAr)
            If InStr(MeAr(A, 1), strPattern) > 0 Then
                MeAr(A, 1) = Replace(MeAr(A, 1), strPattern, "°")
                MeAr(A, 1) = Replace_Space(CStr(MeAr(A, 1)), strPattern)
            End If
        Next A
    
        Range("A1").Resize(UBound(MeAr)) = MeAr
    End Sub
  4. Schließe den VBA-Editor und gehe zurück zu Excel.

  5. Führe das Makro ErsetzeTabs aus, um die Tabstopps zu ersetzen.


Häufige Fehler und Lösungen

  • Fehler: "Kompatibilität"
    Wenn du eine Fehlermeldung über die VBA-Kompatibilität bekommst, stelle sicher, dass du die richtige Excel-Version verwendest. Das Makro sollte in Excel 2010 und späteren Versionen funktionieren.

  • Problem: Tabs werden nicht entfernt
    Überprüfe, ob die Daten korrekt in Zellbereich A1 importiert wurden. Das Makro funktioniert nur auf dem angegebenen Bereich.


Alternative Methoden

  1. Excel-Funktion Suchen und Ersetzen: Du kannst die Funktion Suchen und Ersetzen verwenden, um Tabulatoren manuell zu entfernen:

    • Drücke CTRL + H, um das Dialogfeld zu öffnen.
    • Gib ^t in das Feld "Suchen nach" ein und lasse das Feld "Ersetzen durch" leer.
    • Klicke auf "Alle ersetzen".
  2. Text in Spalten: Wenn deine Daten durch Tabulatoren getrennt sind, kannst du die Funktion Text in Spalten verwenden:

    • Markiere die Spalte mit den Daten.
    • Gehe zu Daten > Text in Spalten und wähle "Getrennt".
    • Wähle "Tabstopps" als Trennzeichen.

Praktische Beispiele

Angenommen, du hast folgende Daten in Zelle A1:

Wert1    Wert2    Wert3

Nach dem Ausführen des oben genannten Makros wird die Zelle in folgende Form umgewandelt:

Wert1 Wert2 Wert3

Hierbei bleibt das erste Tabulator-Zeichen erhalten, während die weiteren entfernt werden.


Tipps für Profis

  • Verwende Regex: Die Verwendung von regulären Ausdrücken (Regex) kann dir helfen, noch spezifischere Ersetzungen vorzunehmen, insbesondere wenn du mit unterschiedlichen Trennzeichen arbeitest.

  • Makro anpassen: Du kannst das Makro erweitern, um verschiedene Tabstopps zu entfernen oder andere spezifische Zeichen zu ersetzen.


FAQ: Häufige Fragen

1. Wie kann ich alle Tabstopps in einer Excel-Datei entfernen?
Verwende die Suchen und Ersetzen-Funktion, um ^t zu finden und durch nichts zu ersetzen.

2. Funktioniert das Makro auch in älteren Excel-Versionen?
Das bereitgestellte Makro sollte in Excel 2010 und neueren Versionen funktionieren. In älteren Versionen könnte es zu Komplikationen kommen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige