String ab Ziffer abschneiden und in benachbarte Spalte verschieben
Schritt-für-Schritt-Anleitung
Um einen String ab der ersten Ziffer abzuschneiden und das Ergebnis in eine benachbarte Spalte zu verschieben, kannst Du folgenden VBA-Code verwenden. Dieser Code geht davon aus, dass Deine Daten in der Tabelle "Abgang" in Spalte T beginnen und die Ergebnisse in Spalte U geschrieben werden.
- Öffne Excel und drücke
ALT + F11, um den VBA-Editor zu öffnen.
- Klicke auf
Einfügen und wähle Modul, um ein neues Modul zu erstellen.
- Füge den folgenden Code in das Modul ein:
Sub abschneiden()
Dim ende As Long
Dim daten
Dim zeile As Long
Dim stelle As Long
Dim inhalt As String
ende = Worksheets("Abgang").Cells(Rows.Count, 20).End(xlUp).Row
daten = Worksheets("Abgang").Range(Worksheets("Abgang").Cells(1, 20), _
Worksheets("Abgang").Cells(ende, 21))
For zeile = 3 To ende
inhalt = daten(zeile, 1)
For stelle = 1 To Len(inhalt)
If IsNumeric(Mid(inhalt, stelle, 1)) Then
daten(zeile, 1) = Left(inhalt, stelle - 1)
daten(zeile, 2) = Right(inhalt, Len(inhalt) - stelle + 1)
Exit For
End If
Next stelle
Next zeile
Worksheets("Abgang").Range(Worksheets("Abgang").Cells(1, 20), _
Worksheets("Abgang").Cells(ende, 21)) = daten
End Sub
- Schließe den VBA-Editor und gehe zurück zu Excel.
- Führe das Makro aus, indem Du
ALT + F8 drückst und das Makro abschneiden auswählst.
Häufige Fehler und Lösungen
-
Fehler: Das Makro funktioniert nicht.
- Lösung: Stelle sicher, dass Du die richtige Tabelle ("Abgang") verwendest und dass die Daten in der richtigen Spalte (T) stehen.
-
Fehler: Die Zellen in Spalte U sind leer.
- Lösung: Überprüfe, ob in Spalte T tatsächlich Ziffern enthalten sind. Wenn nicht, bleibt die Zelle in Spalte U leer.
-
Fehler: Formatierung der Zellen ist nicht korrekt.
- Lösung: Füge vor dem Rückschreiben der Daten den folgenden Code hinzu, um die Zellen in Spalte U im Standardformat zu formatieren:
Worksheets("Abgang").Range("U1:U" & ende).NumberFormat = "General"
Alternative Methoden
Eine alternative Methode wäre die Verwendung von regulären Ausdrücken (RegEx). Hier ist ein einfaches Beispiel:
Sub Reg_SubMatch()
Dim Str As String
Dim RegEx As RegExp
Set RegEx = CreateObject("vbscript.regexp")
Str = "abc 123s2 qwe edde 456W7"
RegEx.Global = True
RegEx.Pattern = "\d"
Set RR = RegEx.Execute(Str)
For Each R In RR
Debug.Print R.FirstIndex, R.Value
Next R
End Sub
Diese Methode erfordert jedoch, dass Du die Microsoft VBScript Regular Expressions 5.5 Bibliothek in den Verweisen aktivierst.
Praktische Beispiele
Angenommen, Du hast folgende Werte in Spalte T:
Buchung 345/345
Buchung AR 453
Buchungen 1-6
Buchungen
Buchung.4
Nach dem Ausführen des Makros sieht das Ergebnis in den Spalten T und U wie folgt aus:
T U
Buchung 345/345
Buchung AR 453
Buchungen 1-6
Buchungen
Buchung. 4
Tipps für Profis
- Backup: Erstelle immer eine Sicherungskopie Deiner Daten, bevor Du Makros ausführst.
- Debugging: Nutze
Debug.Print, um Variablen während der Ausführung des Codes zu überwachen.
- Optimierung: Du kannst den Code optimieren, indem Du nur die benötigten Zeilen bearbeitest, anstatt die gesamte Spalte zu durchlaufen.
FAQ: Häufige Fragen
1. Wie kann ich das Makro anpassen, wenn ich andere Spalten verwenden möchte?
Du musst lediglich die Spaltenreferenzen im Code ändern (z.B. Cells(zeile, 20) für Spalte T und Cells(zeile, 21) für Spalte U).
2. Was passiert, wenn keine Ziffer im String vorhanden ist?
In diesem Fall wird die Zelle in Spalte U einfach leer gelassen, und der ursprüngliche Wert in Spalte T bleibt unverändert.
3. Kann ich das Makro für andere Tabellenblätter verwenden?
Ja, ändere einfach den Namen des Arbeitsblattes im Code von "Abgang" auf den gewünschten Blattnamen.