Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1628to1632
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

Aufteilen und leere Zeilen löschen

Aufteilen und leere Zeilen löschen
26.06.2018 19:07:55
Markus
Liebes Forum,
ich möchte gerne meine Ursprungstabelle (Tabelle1) den Ländern nach, auf verschiedene Tabellenblätter aufteilen und anschließend die leeren Zeilen (keine Werte in der Kategorie) innerhalb des Landes löschen. Trotz mehrerer Versuche mit verschiedenen Codes aus dem Internet, komme ich leider nicht weiter.
Wäre super, wenn mir jemand weiterhelfen könnte.
Anbei noch die Beispieldatei fürs bessere Verständnis.
https://www.herber.de/bbs/user/122336.xlsx
Vielen Dank euch!

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Aufteilen und leere Zeilen löschen
26.06.2018 19:53:25
Daniel
Hi
welche Codes hast du denn bisher probiers?

Sub test()
Dim s As Long
With Sheets("Tabelle1")
For s = 3 To .Cells(2, .Columns.Count).End(xlToLeft).Column Step 2
.Columns(1).Resize(, 2).Copy Sheets((s + 1) / 2).Cells(1, 1)
.Columns(s).Resize(, 2).Copy Sheets((s + 1) / 2).Cells(1, 3)
With Sheets((s + 1) / 2)
Intersect(.Columns(3).SpecialCells(xlCellTypeBlanks).EntireRow, _
.Columns(4).SpecialCells(xlCellTypeBlanks).EntireRow).Delete
End With
Next
End With
End Sub

genügend Tabellenblätter sollten vorhanden sein.
gruß Daniel
AW: Aufteilen und leere Zeilen löschen
26.06.2018 21:58:43
Markus
Hi Daniel,
erstmal vielen Dank für deine Antwort!
Ich habe versuchten den folgenden Code irgendwie mit bestimmte Spalten kopieren zu verbinden.
Sub LeereZeileLoeschen()
Dim rng As Range
On Error Resume Next
Set rng = ActiveSheet.Range("B2:C20").SpecialCells(xlCellTypeBlanks)
On Error GoTo 0
If Not rng Is Nothing Then rng.EntireRow.Delete
Set rng = Nothing
End Sub

Anzeige
AW: Aufteilen und leere Zeilen löschen
27.06.2018 09:21:29
Daniel
Hi
ok.
mir ist aufgefallen, es geht noch etwas einfacher:
Sub test()
Dim s As Long
With Sheets("Tabelle1")
For s = 3 To .Cells(2, .Columns.Count).End(xlToLeft).Column Step 2
Intersect(Union(.Columns(1).Resize(, 2), .Columns(s).Resize(, 2)), _
.Columns(s).Resize(, 2).SpecialCells(xlCellTypeConstants).EntireRow).Copy
Sheets((s + 1) / 2).Cells(1, 1).PasteSpecial xlPasteAll
Next
End With
End Sub
Gruß Daniel
AW: Aufteilen und leere Zeilen löschen
27.06.2018 21:40:14
Markus
Hi Daniel,
funktioniert einwandfrei. Danke dir!
Nur noch eine Bitte an dich: Da ich auch immer versuche die einzelnen Schritte in VBA zu verstehen. Wie müsste ich den Code modifizieren, wenn die Kategorie-Spalte über 4 Spalten geht (A-D) und dann pro Land 11 Spalten verwendet werden. Sprich, in unserem Beispiel, würde dann Deutschland von Spalte E-O gehen und Polen würde dann von P-Z gehen usw.
Dankeschön
Anzeige
AW: Aufteilen und leere Zeilen löschen
27.06.2018 22:12:23
Daniel
HI
die Anzahl der Kategoriespalten geht hier in den Code ein:
Sub test()
Dim s As Long
With Sheets("Tabelle1")
For s = 3 To .Cells(2, .Columns.Count).End(xlToLeft).Column Step 2
Intersect(Union(.Columns(1).Resize(, 2), .Columns(s).Resize(, 2)), _
.Columns(s).Resize(, 2).SpecialCells(xlCellTypeConstants).EntireRow).Copy
Sheets((s + 1) / 2).Cells(1, 1).PasteSpecial xlPasteAll
Next
End With
End Sub

die Anzahl der Länderspalten geht hier in den Code ein:
Sub test()
Dim s As Long
With Sheets("Tabelle1")
For s = 3 To .Cells(2, .Columns.Count).End(xlToLeft).Column Step 2
Intersect(Union(.Columns(1).Resize(, 2), .Columns(s).Resize(, 2)), _
.Columns(s).Resize(, 2).SpecialCells(xlCellTypeConstants).EntireRow). _
Copy
Sheets((s + 1) / 2).Cells(1, 1).PasteSpecial xlPasteAll
Next
End With
End Sub
an diese stelle (s + 1) / 2) so umrechnen, dass die entsprechende Blattnummer berechnet wird.
die generelle Formel wäre:
(s - Schleifen-Startwert) / Step der Schleife + Indexnummer des ersten Blattes
ich habs im Codebeispiel etwas anders gerechnet.
Gruß Daniel
Anzeige
AW: Aufteilen und leere Zeilen löschen
28.06.2018 15:24:07
Markus
Hi Daniel,
danke für deine ausführliche Antwort.
Diesen Punkt habe ich ehrlichweise nicht so ganz verstanden:
"diese stelle (s + 1) / 2) so umrechnen, dass die entsprechende Blattnummer berechnet "
Leider bekomme ich eine Fehlermeldung:
Sub test()
Dim s As Long
With Sheets("Tabelle1")
For s = 3 To .Cells(2, .Columns.Count).End(xlToLeft).Column Step 11
Intersect(Union(.Columns(1).Resize(, 4), .Columns(s).Resize(, 2)), _
.Columns(s).Resize(, 11).SpecialCells(xlCellTypeConstants).EntireRow).Copy
Sheets((s + 1) / 2).Cells(1, 1).PasteSpecial xlPasteAll 'Fehlermeldung ?
Next
End With
End Sub
Danke dir!
Anzeige

326 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige