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
1452to1456
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

Bestimmte Tabellenspalten kopieren

Bestimmte Tabellenspalten kopieren
24.10.2015 20:21:40
Hermann
Hallo zusammen,
Vielleicht kann mir jemand weiterhelfen.
Ich habe eine Exceltabelle (Tabelle1)
Für die Spalten A bis V habe ich den Namen "Stammdaten" vergeben.
Die ersten drei Spalten mit den spezifischen Daten sind: W,X,Y, ; die 2.spez.: Z,AA,AB ; die 3. usw.
Blatt1 besteht also aus den Spalten A – V(Stammdaten) plus W,X,Y ;
Blatt2: A – V(Stammdaten) plus Z,AA,AB ;
Blatt3: A – V(Stammdaten) plus AC,AD,AE usw.
Wie kann ich mit einem Makro die Stammdaten (A bis V) und die spez.Dat (W, Y, Z) in ein neues Tabellenblatt kopieren?
Das nächste Tabellenblatt soll dann die Daten der Spalten A bis V und im Anschluß die
Spalten Z, AA, AB enthalten. Es sollen soviele Tabellenblätter erstellt werden wie spez. Daten (also immer drei Spalten) vorhanden sind.
Bisher verwende ich in meiner Tabelle1 eine Spaltenfixierung nach der Spalte V. und rücke für jedes kompl. Blatt immer drei Spalten nach links nach. (Ein Blatt besteht immer aus den Spalten A - V und den drei spezifischen Spalten.)
Das ich für jede komplette Blattansicht nicht immer drei Spalten nach links scrollen muß, hätte ich dafür gerne eigene Tabellenblätter. Format und Formeln dürfen mit kopiert werden.
Die Stammdaten kann ich bereits mit folgendem Makro kopieren.
Sub SpaltenKopieren()
Worksheets("Tabelle1").Range("Stammdaten").Copy _
Destination:=Worksheets("Tabelle2").Range("A1")
Es scheitert aber an der Schleife, die immer die drei nächsten Spalten hinzufügt.
Gruß, Hermann

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Bestimmte Tabellenspalten kopieren
25.10.2015 08:15:52
Christian
hallo Hermann
zB so
Beachte:
- alle Tabellen außer "Tabelle1" werden zuerst gelöscht
- "Tabelle1" wird bis zu der letzten Spalte durchlaufen, die in Zeile 1 einen Eintrag hat
Gruß
Christian
Option Explicit
Sub VerteilDat()
Dim wksSrc As Worksheet
Dim wksDst As Worksheet
Dim lngLC As Long
Dim i As Long, k As Long
Application.ScreenUpdating = False
With ThisWorkbook
Set wksSrc = .Sheets("Tabelle1")
' Tabellen löschen
Application.DisplayAlerts = False
For Each wksDst In .Sheets
If wksDst.Name  wksSrc.Name Then
wksDst.Delete
End If
Next
Application.DisplayAlerts = True
' letzter Eintrag in Zeile 1
lngLC = wksSrc.Cells(1, wksSrc.Columns.Count).End(xlToLeft).Column
'Daten verteilen
For i = 23 To lngLC Step 3
k = k + 1
Set wksDst = .Sheets.Add(, .Sheets(k))
wksDst.Name = "Tabelle" & k + 1
wksSrc.Columns(1).Resize(, 22).Copy wksDst.Cells(1, 1)
wksSrc.Columns(20 + 3 * k).Resize(, 3).Copy wksDst.Cells(1, 23)
Next
End With
Application.ScreenUpdating = True
Set wksDst = Nothing
Set wksSrc = Nothing
End Sub

Anzeige
AW: Bestimmte Tabellenspalten kopieren
25.10.2015 18:05:47
Hermann
Hallo Christian,
soeben habe ich Deine Antwort gelesen.
Was soll ich sagen? Ich war so begeistert, mit welcher Perfektion du diesen Code
geschrieben hast. Ich habe den Code vor lauter Freude gleich mehrmals ausprobiert .
Er funktioniert perfekt.
Vielen Dank.
Wenn Du nochmal Zeit hast, hätte ich noch eine Modifikation.
1. Ist es denn möglich, daß die neu erstellten Tabellenblätter den Blattname "Tabelle"
und den Text aus jeweils W2, Z2, AC2 usw. also von den jeweils drei spezifischen Spalten
immer die erste Spalte, Zeile 2.
2. Ist es Dir möglich, mir den Code ein bisschen zu erklären.
Nochmals vielen Dank für Deine perfekte Arbeit.
Gruß, Hermann

Anzeige
AW: Bestimmte Tabellenspalten kopieren
25.10.2015 18:05:58
Hermann
Hallo Christian,
soeben habe ich Deine Antwort gelesen.
Was soll ich sagen? Ich war so begeistert, mit welcher Perfektion du diesen Code
geschrieben hast. Ich habe den Code vor lauter Freude gleich mehrmals ausprobiert .
Er funktioniert perfekt.
Vielen Dank.
Wenn Du nochmal Zeit hast, hätte ich noch eine Modifikation.
1. Ist es denn möglich, daß die neu erstellten Tabellenblätter den Blattname "Tabelle"
und den Text aus jeweils W2, Z2, AC2 usw. also von den jeweils drei spezifischen Spalten
immer die erste Spalte, Zeile 2.
2. Ist es Dir möglich, mir den Code ein bisschen zu erklären.
Nochmals vielen Dank für Deine perfekte Arbeit.
Gruß, Hermann

Anzeige
AW: Bestimmte Tabellenspalten kopieren
30.10.2015 19:17:26
Esmo
Hallo Hermann,
1. Ersetze die Zeile
wksDst.Name = "Tabelle" & k + 1
durch
wksDst.Name = "Tabelle" & wksSrc.cells(2,20+3*k)
2. Der erste For Each wksDst... Next Block löscht wie gesagt alle Tabellen ausser Deinem Quellblatt (wksSrc, was ja das Blatt "Tabelle1" ist.
Dann wird geschaut, was Deine letzte gefüllte Spalte ist (lngLC). Dann wird von der Spalte W bis zum Ende für jede 3. Spalte des Quellblatts ein neues Blatt angelegt (Set wksDst = .Sheets.Add), umbenannt (wksDst.Name=....) und dann die entsprechenden Daten kopiert?
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige