Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1352to1356
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Straßenliste mit Hausnummern umformatieren

Straßenliste mit Hausnummern umformatieren
06.03.2014 17:06:04
Andy
Hallo zusammen,
ich habe eine Liste mit Straßen und Hausnummern, die ich umformatieren muss. Dazu benötige ich mal eure Hilfe.
Folgende Daten habe ich:
in Spalte A die Straßennamen und in Spalte B die zugehörigen Hausnummern:
Beispiel:
Spalte A - Spalte B
A-Straße - 1, 2, 3, 4a, 8/10, 12, 14
B-Straße - 1, 2, 3
das Ergebnis sollte folgendermaßen aussehen:
Spalte A - Spalte B
A-Straße - 1
A-Straße - 2
A-Straße - 3
A-Straße - 4a
B-Straße - 1
B-Straße - 2
B-Straße - 3
also ich muss zur jeder Hausnummer (Spalte B) eine Zelle mit der zugehörigen Straße in Spalte A haben.
Könnt ihr mir hier evtl. mit einer VBA Lösung helfen?
Gruß Andy

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Straßenliste mit Hausnummern umformatieren
06.03.2014 17:36:52
Peter
Hallo Andy,
so zum Beispiel
Option Explicit
Public Sub Vervielfaeltigen()
Dim WkSh_E    As Worksheet
Dim WkSh_A    As Worksheet
Dim lZeile_E  As Long
Dim lZeile_A  As Long
Dim vTemp     As Variant
Dim iTemp     As Integer
Set WkSh_E = ThisWorkbook.Worksheets("Tabelle1") ' den Tabellenblattname ggf. anpassen
Set WkSh_A = ThisWorkbook.Worksheets("Tabelle2") ' den Tabellenblattname ggf. anpassen
With WkSh_E
For lZeile_E = 2 To WkSh_E.Cells(WkSh_E.Rows.Count, 1).End(xlUp).Row
With WkSh_A
lZeile_A = WkSh_A.Cells(WkSh_A.Rows.Count, 1).End(xlUp).Row
If lZeile_A  "" Then
vTemp = Split(WkSh_E.Range("B" & lZeile_E).Value, ",")
For iTemp = LBound(vTemp) To UBound(vTemp)
WkSh_A.Range("A" & lZeile_A).Value = WkSh_E.Range("A" & lZeile_E).Value
WkSh_A.Range("B" & lZeile_A).Value = vTemp(iTemp)
lZeile_A = lZeile_A + 1
Next iTemp
Else
WkSh_A.Range("A" & lZeile_A).Value = WkSh_E.Range("A" & lZeile_E).Value
lZeile_A = lZeile_A + 1
End If
End With
Next lZeile_E
End With
End Sub

Gruß Peter

Anzeige
AW: kleine Korrekturen
06.03.2014 17:46:18
Peter
Hallo Andy,
nimm diese Version, sie ist ein wenig korrigiert
Option Explicit
Public Sub Vervielfaeltigen()
Dim WkSh_E    As Worksheet
Dim WkSh_A    As Worksheet
Dim lZeile_E  As Long
Dim lZeile_A  As Long
Dim vTemp     As Variant
Dim iTemp     As Integer
Set WkSh_E = ThisWorkbook.Worksheets("Tabelle1") ' den Tabellenblattname ggf. anpassen
Set WkSh_A = ThisWorkbook.Worksheets("Tabelle2") ' den Tabellenblattname ggf. anpassen
WkSh_A.Range("A2:B" & WkSh_A.Cells(WkSh_A.Rows.Count, 1).End(xlUp).Row).ClearContents
With WkSh_E
For lZeile_E = 2 To WkSh_E.Cells(WkSh_E.Rows.Count, 1).End(xlUp).Row
'If lZeile_E = 4 Then Stop
With WkSh_A
lZeile_A = WkSh_A.Cells(WkSh_A.Rows.Count, 1).End(xlUp).Row + 1
If lZeile_A  "" Then
vTemp = Split(WkSh_E.Range("B" & lZeile_E).Value, ",")
For iTemp = LBound(vTemp) To UBound(vTemp)
WkSh_A.Range("A" & lZeile_A).Value = WkSh_E.Range("A" & lZeile_E).Value
WkSh_A.Range("B" & lZeile_A).Value = vTemp(iTemp)
lZeile_A = lZeile_A + 1
Next iTemp
Else
WkSh_A.Range("A" & lZeile_A).Value = WkSh_E.Range("A" & lZeile_E).Value
lZeile_A = lZeile_A + 1
End If
End With
Next lZeile_E
End With
End Sub

Gruß Peter

Anzeige
Danke!
06.03.2014 17:56:53
Andy
Hallo Peter,
vielen Dank für Deine Hilfe!
Gruß Andy

kleiner Fehler noch vorhanden
06.03.2014 18:01:29
Andy
Hallo Peter,
mir ist gerade aufgefallen, dass dort noch ein kleiner Fehler drin ist.
Und zwar ist das Ergebnis der Hausnummer in Spalte B um eine Zeile versetzt nach unten mit den Straßennamen.
Also A=A und B=B+1
Gruß Andy

bei mir nicht, habs getestet...
06.03.2014 18:41:05
robert
Hi,
wie hast Du die Daten eingetragen?
Makro läuft ab Zeile 2 OK !
Gruß
robert

AW: kleiner Fehler noch vorhanden
06.03.2014 21:49:47
Peter
Hallo Andy,
ich habe die Daten ab Zeile 2 eingetragen. Zeile 1 ist für die Überschriften reserviert.
Gruß Peter

AW: kleiner Fehler noch vorhanden
06.03.2014 22:05:32
Peter
Hallo Andy,
Version etwas bereinigt und mit etwas Dokumentation versehen
Option Explicit
Public Sub Vervielfaeltigen()
Dim WkSh_E    As Worksheet ' Eingabe Tabellenblatt
Dim WkSh_A    As Worksheet ' Ausgabe Tabellenblatt
Dim lZeile_E  As Long      ' Zeile des Eingabe-Blattes
Dim lZeile_A  As Long      ' Zeile des Ausgabe-Blattes
Dim vTemp     As Variant   ' Array zur Aufnahme der Hausnummern
Dim iTemp     As Integer   ' Index zum Array
Set WkSh_E = ThisWorkbook.Worksheets("Tabelle1") ' den Tabellenblattname ggf. anpassen
Set WkSh_A = ThisWorkbook.Worksheets("Tabelle2") ' den Tabellenblattname ggf. anpassen
WkSh_A.Range("A1").Value = "Straße"
WkSh_A.Range("B1").Value = "Hausnummer"
WkSh_A.Range("A2:B" & WkSh_A.Cells(WkSh_A.Rows.Count, 1).End(xlUp).Row).ClearContents
For lZeile_E = 2 To WkSh_E.Cells(WkSh_E.Rows.Count, 1).End(xlUp).Row
lZeile_A = WkSh_A.Cells(WkSh_A.Rows.Count, 1).End(xlUp).Row + 1
If lZeile_A  "" Then
vTemp = Split(WkSh_E.Range("B" & lZeile_E).Value, ",")
For iTemp = LBound(vTemp) To UBound(vTemp)
WkSh_A.Range("A" & lZeile_A).Value = WkSh_E.Range("A" & lZeile_E).Value
WkSh_A.Range("B" & lZeile_A).Value = Trim$(vTemp(iTemp))
lZeile_A = lZeile_A + 1
Next iTemp
Else
WkSh_A.Range("A" & lZeile_A).Value = WkSh_E.Range("A" & lZeile_E).Value
lZeile_A = lZeile_A + 1
End If
Next lZeile_E
End Sub

Gruß Peter

Anzeige
Funktioniert einwandfrei - Danke!
10.03.2014 19:14:03
Andy
Hallo Peter,
jetzt klappt es einwandfrei.
Danke nochmal für die Hilfe und sorry für die späte Rückmeldung.
Gruß Andy

13 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige