Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
24.04.2024 17:19:09
Anzeige
Archiv - Navigation
1640to1644
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

Variable Spalten kopieren + leere Zeilen löschen

Variable Spalten kopieren + leere Zeilen löschen
04.09.2018 00:06:48
Markus
Liebes Forum,
ich möchte gerne meine Ursprungstabelle (Tabelle1) auf verschiedene Tabellenblätter aufteilen. In der Ursprungstabellen befinden sich in den Spalten 1-4 diverse Kategorien. Dann folgen in 11er Spalten-Schritten verschiedene Länder. Der fixe Spaltenbereich 1-4 (diverse Kategorien) wird immer mitkopiert und anschließend folgen die 11 variablen Spalten des jeweiligen Landes. Danach wird das nächste Tabellenblatt befüllt.
Abschließend möchte ich die ganze Zeile, welche nur leere Zellen oder Zellen mit dem Inhalt „0“ ab Spalte 5 aufweist, pro Tabellenblatt löschen.
Wie müsste ich folgenden Code anpassen?
Sub kopieren()
Dim s As Long
With Sheets("Tabelle1")
For s = 5 To .Cells(2, .Columns.Count).End(xlToLeft).Column Step 11
Intersect(Union(.Columns(1).Resize(, 4), .Columns(s).Resize(, 11)), _
.Columns(s).Resize(, 11).SpecialCells(xlCellTypeConstants).EntireRow).Copy
Sheets((s + 17) / 11).Cells(1, 1).PasteSpecial xlPasteAll
Next
End With
End Sub
Vielen Dank euch!

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Variable Spalten kopieren + leere Zeilen löschen
10.09.2018 13:15:53
fcs
Hallo Markus,
Frage: Sind die Tabellen-Blätter für die einzelnen Länder schon alle vorhanden (ab blatt 2)? Oder sollen sie neu angelegt werden?
Mir erscheint es einfacher, wenn man das Kopieren jeweils in 2 Schritten durchführt.
1. Spalten A bis D, dann die 11 Spalten des jeweiligen Landes.
Dannach prüft man im Zielblatt in allen Zeilen in einer For-Next-Schleife ob in den Spalten D bis O andere Zeichen als "0" oder "" vorkommen und markiert die Zeilen in Spalte P zum löschen.
Zum Schluss werden die markierten Zeilen via SpecialCells gelöscht.
Ich melde mich heute Abend noch einmal.
Gruß
Franz
Anzeige
AW: Variable Spalten kopieren + leere Zeilen löschen
10.09.2018 23:34:51
fcs
Hallo Markus,
hier 2. Varianten fr das kopieren der Daten + eine Routine zum Löschen der Zeilen mit nur 0-Werten und(oder leeren Zellen.
Gruß
Franz

Sub kopieren_2()
'Zielblätter werden jeweils neu angelegt
Dim s As Long
Dim wksQuelle As Worksheet
Dim wksZiel As Worksheet
Const iStep As Long = 11 'Anzahl Spalten je Land
Const lSpa2 As Long = 5  'Spalte E - Spalte 1 des 1. Landes
With Application
.ScreenUpdating = False
End With
Set wksQuelle = Sheets("Tabelle1")
With wksQuelle
For s = lSpa2 To .Cells(2, .Columns.Count).End(xlToLeft).Column Step iStep
With ActiveWorkbook
'neues Blatt anfügen
Set wksZiel = .Worksheets.Add(after:=.Sheets(.Sheets.Count))
End With
'Spalten A bis D kopieren
.Range(.Columns(1), .Columns(lSpa2 - 1)).Copy wksZiel.Cells(1, 1)
'Länder-Spalten kopieren
.Range(.Columns(s), .Columns(s + iStep - 1)).Copy wksZiel.Cells(1, lSpa2)
Call prcZeilenLoeschen(wks:=wksZiel, Spa1:=lSpa2, lSpaL:=lSpa2 + iStep - 1)
Next
End With
With Application
.ScreenUpdating = True
End With
End Sub
Sub kopieren_3()
'die Zielblätter sind schon vorhanden
Dim s As Long, iBlatt As Integer
Dim wksQuelle As Worksheet
Dim wksZiel As Worksheet
Const iStep As Long = 11 'Anzahl Spalten je Land
Const lSpa2 As Long = 5  'Spalte E - Spalte 1 des 1. Landes
With Application
'        .ScreenUpdating = False
End With
Set wksQuelle = Sheets("Tabelle1")
iBlatt = 2 '1. Blatt in das Länder-Daten eingetragen werden sollen
With wksQuelle
For s = lSpa2 To .Cells(2, .Columns.Count).End(xlToLeft).Column Step iStep
With ActiveWorkbook
'Zielblatt setzen
Set wksZiel = .Worksheets(iBlatt)
End With
'Spalten A bis D kopieren
.Range(.Columns(1), .Columns(lSpa2 - 1)).Copy wksZiel.Cells(1, 1)
'Länder-Spalten kopieren
.Range(.Columns(s), .Columns(s + iStep - 1)).Copy wksZiel.Cells(1, lSpa2)
Call prcZeilenLoeschen(wks:=wksZiel, Spa1:=lSpa2, lSpaL:=lSpa2 + iStep - 1)
iBlatt = iBlatt + 1 'Blattzähler erhöhen
Next
End With
With Application
'        .ScreenUpdating = True
End With
End Sub
Sub prcZeilenLoeschen(wks As Worksheet, Spa1 As Long, lSpaL As Long)
Dim Zeile As Long, Spalte As Long, bolLoeschen As Boolean
Dim Zeile_L As Long
Dim SpaM As Long
SpaM = lSpaL + 1 'Nr. der Hilfsspalte zum markieren der zu löschenden Spalten
With wks
Zeile_L = .UsedRange.Row + .UsedRange.Rows.Count - 1
'zu löschenden Zeilen markieren
For Zeile = 2 To Zeile_L
bolLoeschen = True
For Spalte = Spa1 To lSpaL
If Trim(.Cells(Zeile, Spalte).Text)  "" And .Cells(Zeile, Spalte).Text  "0"  _
Then
bolLoeschen = False
Exit For
End If
Next
If bolLoeschen = True Then
.Cells(Zeile, SpaM).Value = True
End If
Next
'markierte Zeilen löschen
With .Range(.Cells(1, SpaM), .Cells(Zeile_L, SpaM))
If Application.WorksheetFunction.CountA(.Cells) > 0 Then
.SpecialCells(xlCellTypeConstants, xlLogical).EntireRow.Delete shift:=xlShiftUp
End If
End With
End With
End Sub

Anzeige
AW: Variable Spalten kopieren + leere Zeilen löschen
12.09.2018 00:19:39
Markus
Hallo Franz,
Vielen Dank dir für deine Mühe und Arbeit! Ich komme erst nächste Woche dazu es zu testen - gebe dir dann Rückmeldung.
Besten Dank und viele Grüße!

319 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige