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

Alle Tabellen in ein Registerblatt

Alle Tabellen in ein Registerblatt
13.08.2021 08:55:13
Sascha
Hallo zusammen,
dieses Thema wurde hier sicher schon 100x diskutiert, aber die Lösung von @Basti fand ich ganz interessant:
https://www.herber.de/forum/archiv/1520to1524/1521660_VBA_Tabellen_untereinander_kopieren.html#1521673
Im Prinzip habe ich X Registerkarten, welche ich alle im Tabellenblatt "Zusammenfuegen" untereinander kopieren möchte. Leider verschluckt sich das Skript und kopiert einige Zellen nicht bzw. einige Zeilen sogar doppelt.
Hat jmd. eine Ahnung woran das liegt? (Ein Link zu einem zuverlässigeren Skript wäre mir natürlich auch recht.)
Vielen Dank.
Sascha

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

Betreff
Datum
Anwender
Anzeige
AW: Alle Tabellen in ein Registerblatt
13.08.2021 08:59:54
Werner
Hallo,
und helfen soll dir jetzt wer, ohne auch nur ansatzweise eine Ahnung vom Aufbau deiner Tabellenblätter zu kennen?
Also am besten mal eine Beispielmappe hochladen.
Gruß Werner
AW: Alle Tabellen in ein Registerblatt
13.08.2021 10:08:49
Sascha
Hallo Werner,
ich wollte es erstmal simpel halten. Sry für die zu kurze Beschreibung.
Was habe ich vor?:
Ich habe eine Tabelle mit mehreren Registerkarten. Dort sind Bewertungen hinterlegt (leider spuckt das Free Tool keine Gesamttabelle aus). Person E mochte bspw. das Thema A (von Personen A, B, C und D) und hat 100/100Punkten vergeben. Zum Schluss sollen diese Werte in einer Bewertungsmatrix stehen (Anzahl der Spalten und Zeilen noch ungewiss).
Was möchte ich in Excel realisieren?:
1. Dabei möchte ich zunächst alle Tabellen dieser Registerkarten in eine kopieren (untereinander). In der anonymisierten Tabelle funktioniert das Skript von Basti, aber in der richtigen Zusammenfassungs-Tabelle lässt das Skript einige Zellen, wo eig. die Zuordnungen der Fragen drinstehen sollten heraus. Ebenso sind einige doppelt abgefragt und ich weiss nicht warum.
2. Danach möchte ich irgendwie eine Matrix erstellen
hier ist die Datei: https://www.herber.de/bbs/user/147599.xlsm
Ich bedanke mich schonmal vorab für deine Hilfe.
Anzeige
AW: Alle Tabellen in ein Registerblatt
13.08.2021 09:33:25
Wolfgang
Hallo,
ich hatte einmal ein ähnliches Problem und ich konnte hier eine Lösung finden.
Anbei eine Musterdatei mit den entsprechenden Makros.
Hier die Datei: https://www.herber.de/bbs/user/147598.xlsm
Grüße
AW: Alle Tabellen in ein Registerblatt
13.08.2021 10:23:01
Sascha
Hallo Wolfgang,
vielen Dank für dein Skript. So wie ich es Verstehe, listet dein Skript die Reiter auf, nicht deren Inhalte. Das ist leider nicht das, was ich suche.
Ich möchte zunächst den INHALT aller Reiter in einen Reiter kopieren (Zeilenweise).
AW: Alle Tabellen in ein Registerblatt
13.08.2021 10:35:38
GerdL
Ohne deine Datei u. deinen Code hier zu sehen, wird es nichts; verstehst du.
Gruß Gerd
Anzeige
AW: Alle Tabellen in ein Registerblatt
13.08.2021 10:50:37
Sascha
Hallo Gerd,
die Datei habe ich weiter oben hochgeladen. Hier ist die Datei nochmal: https://www.herber.de/bbs/user/147599.xlsm
Mittlerweile habe ich eine Lösung gefunden. Die doppelten Werte stammen vom letzten Reiter, d.h. der Auslesereiter hat sich selber ausgelesen. Nun muss ich nur noch herausfinden, warum sich das Skript verschluckt und einige Zellen auslässt
Hier die Teillösung, siehe Kommentar

Sub TabellenKopierenUntereinander()
Dim i As Integer
Dim z As Integer
Dim r As Long, c As Long
Dim SZ As Worksheet
Dim rng()
Set SZ = Sheets("Zusammenfuegen")
With SZ
z = .Cells(.Rows.Count, 1).End(xlUp).Row
If z = 1 Then z = 2
.Range(.Cells(2, 1), .Cells(z, 3)).ClearContents
End With
z = 2
With ActiveWorkbook
For i = 1 To .Worksheets.Count - 1 '-1, da das letzte Worksheet "Zusammenfügen nicht mitgezählt werden soll"
rng = .Worksheets(i).UsedRange.Value
For r = LBound(rng, 1) + 1 To UBound(rng, 1)
For c = LBound(rng, 2) To UBound(rng, 2)
With SZ
.Cells(z, c) = rng(r, c)
End With
Next
z = z + 1
Next
Next
End With
End Sub

Anzeige
AW: Alle Tabellen in ein Registerblatt
13.08.2021 10:49:52
Werner
Hallo,

Public Sub TabellenKopierenUntereinander()
Dim ws As Worksheet, loLetzte As Long
Application.ScreenUpdating = False
With Worksheets("Zusammenfuegen")
loLetzte = .Cells(.Rows.Count, "A").End(xlUp).Row
If loLetzte > 1 Then
.Range("A2:E" & loLetzte).ClearContents
End If
End With
For Each ws In ThisWorkbook.Worksheets
If ws.Name Like "RATING*" Then
With ws
loLetzte = .Cells(.Rows.Count, "A").End(xlUp).Row
If loLetzte > 1 Then
.Range("A2:E" & loLetzte).Copy
With Worksheets("Zusammenfuegen")
.Cells(.Cells(.Rows.Count, "A").End(xlUp).Row, "A").Offset(1).PasteSpecial _
Paste:=xlPasteValuesAndNumberFormats
End With
End If
End With
End If
Next ws
End Sub
Gruß Werner
Anzeige
AW: Alle Tabellen in ein Registerblatt
13.08.2021 11:06:56
Sascha
Herzlichen Dank Werner,
das Skript funktioniert.
Ebenso funktioniert nun (sollten einige Zellen leer sein, liegt es daran, dass die Formatierung nicht mitkopiert wurde oder eine Zelle einen Umbruch hat. Der Inhalt ist dennoch vorhanden - einfach Zelle anklicken.):

Sub TabellenKopierenUntereinander()
Dim i As Integer
Dim z As Integer
Dim r As Long, c As Long
Dim SZ As Worksheet
Dim rng()
Set SZ = Sheets("Zusammenfuegen")
With SZ
z = .Cells(.Rows.Count, 1).End(xlUp).Row
If z = 1 Then z = 2
.Range(.Cells(2, 1), .Cells(z, 3)).ClearContents
End With
z = 2
With ActiveWorkbook
For i = 1 To .Worksheets.Count - 2 'Minus die Anzahl der Letzten Reiter, da die letzten Worksheet "Zusammenfügen" und "Matrix" nicht nochmal aufgelistet werden sollen"
rng = .Worksheets(i).UsedRange.Value
For r = LBound(rng, 1) + 1 To UBound(rng, 1)
For c = LBound(rng, 2) To UBound(rng, 2)
With SZ
.Cells(z, c) = rng(r, c)
End With
Next
z = z + 1
Next
Next
End With
End Sub

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige