VBA - 5stellige Ziffern in Excel-Spalte suchen und Inhalt kopieren
Hallo zusammen,
ich habe hier ein kleines Problem mit einer Excel-Tabelle. Aus einer txt-Datei werden Adressdaten in die Tabelle importiert. Allerdings stehen dabei alle Daten in einer Zelle (Bsp.: Achim Müller Mühlstraße 3 98765 Teststadt).
Nun muss mittels eines Makro der Teil ab Beginn der Postleitzahl in eine Zeile darunter kopiert werden. Diese Zeilen habe ich schon mittels eines anderen Makro einfügen lassen. Es geht also nur noch ums Kopieren der Inhalte.
Ich hoffe, dass ich mich möglichst verständlich ausgedrückt habe.
Vielen Dank im voraus,
Sebastian Schäfer
PS.: Kann mir jemand einen Tipp geben (ich habe noch nie mit VBA gearbeitet), wie ich mehrere Makros, die ich in Excel erstellt habe, nacheinander automatisch ablaufen lassen kann? Ich möchte sie nicht immer manuell aufrufen müssen.
ich habe hier ein kleines Problem mit einer Excel-Tabelle. Aus einer txt-Datei werden Adressdaten in die Tabelle importiert. Allerdings stehen dabei alle Daten in einer Zelle (Bsp.: Achim Müller Mühlstraße 3 98765 Teststadt).
Nun muss mittels eines Makro der Teil ab Beginn der Postleitzahl in eine Zeile darunter kopiert werden. Diese Zeilen habe ich schon mittels eines anderen Makro einfügen lassen. Es geht also nur noch ums Kopieren der Inhalte.
Ich hoffe, dass ich mich möglichst verständlich ausgedrückt habe.
Vielen Dank im voraus,
Sebastian Schäfer
PS.: Kann mir jemand einen Tipp geben (ich habe noch nie mit VBA gearbeitet), wie ich mehrere Makros, die ich in Excel erstellt habe, nacheinander automatisch ablaufen lassen kann? Ich möchte sie nicht immer manuell aufrufen müssen.
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 38709
Url: https://administrator.de/forum/vba-5stellige-ziffern-in-excel-spalte-suchen-und-inhalt-kopieren-38709.html
Ausgedruckt am: 19.02.2025 um 22:02 Uhr
5 Kommentare
Neuester Kommentar
Würde ich so machen :
das Prog. kopiert die letzte 5-Stellige Zahl aus der ersten Spalte eine Zeile tiefer.
Public Sub Test()
Dim a As Long
Dim b As Integer
Dim c As String
a = 1
While Tabelle1.Cells(a, 1) <> ""
c = Tabelle1.Cells(a, 1)
For b = 1 To Len(c) - 4
If Asc(Mid$(c, b, 1)) >= Asc("0") And _
Asc(Mid$(c, b, 1)) <= Asc("9") And _
Asc(Mid$(c, b + 1, 1)) >= Asc("0") And _
Asc(Mid$(c, b + 1, 1)) <= Asc("9") And _
Asc(Mid$(c, b + 2, 1)) >= Asc("0") And _
Asc(Mid$(c, b + 2, 1)) <= Asc("9") And _
Asc(Mid$(c, b + 3, 1)) >= Asc("0") And _
Asc(Mid$(c, b + 3, 1)) <= Asc("9") And _
Asc(Mid$(c, b + 4, 1)) >= Asc("0") And _
Asc(Mid$(c, b + 4, 1)) <= Asc("9") _
Then
Tabelle1.Cells(a + 1, 1) = Mid$(c, b, 5)
End If
Next
a = a + 2
Wend
End Sub
das Prog. kopiert die letzte 5-Stellige Zahl aus der ersten Spalte eine Zeile tiefer.
Hab ich deine Frage nicht genau genug gelesen, sorry.
Man kann mein Skript so ändern, daß es alle Zeichen ab der PLZ kopiert.
Hab ich auch noch ein bischen vereinfacht : IsNumeric kannte ich noch nicht...
Man kann mein Skript so ändern, daß es alle Zeichen ab der PLZ kopiert.
Hab ich auch noch ein bischen vereinfacht : IsNumeric kannte ich noch nicht...
Public Sub Test()
Dim a As Long
Dim b As Integer
Dim c As String
a = 1
While Tabelle1.Cells(a, 1) <> ""
c = Tabelle1.Cells(a, 1)
For b = 1 To Len(c) - 4
If IsNumeric(Mid$(c, b, 1)) And _
IsNumeric(Mid$(c, b + 1, 1)) And _
IsNumeric(Mid$(c, b + 2, 1)) And _
IsNumeric(Mid$(c, b + 3, 1)) And _
IsNumeric(Mid$(c, b + 4, 1)) _
Then
Tabelle1.Cells(a + 1, 1) = Mid$(c, b, 1000)
End If
Next
a = a + 2
Wend
End Sub
...und falls ihr mal eine größere Datenmenge haben solltet oder zeitiger essen wollt:
Gruß
Biber
Public Sub BiberTest()
Dim a As Long
Dim c, t As String
Dim atokens As Variant
Dim i As Integer
a = 1
While Tabelle1.Cells(a, 1) <> ""
c = Tabelle1.Cells(a, 1)
atokens = Split(Tabelle1.Cells(a, 1))
For i = 0 To UBound(atokens) - 1
t = atokens(i)
If (Len(t) = 5) And IsNumeric(t) Then
Tabelle1.Cells(a + 1, 1) = Mid(c, InStr(1, c, t))
Exit For
End If
Next
a = a + 2
Wend
End Sub
Gruß
Biber