Mehrere Tabellentexte auf einem Tabellenblatt zusammenfassen?
Hallo gutefrage Team,
ich müsste einen VBA-Code abwandeln der so noch nicht passt/funktioniert.
Ich muss aus 12 Tabellen Texte in die 13 Tabelle einfügen ohne Leerzeilen.
Tabelle 1 Texte von A45:47
Tabelle 2 Texte von A35:37; 68:80; 105:117; 141:155; 178:196
Tabelle 3 - 7 Texte von A40:45; 85:90; 130:135; 175:180
Tabelle 8 A42:44
Tabelle 9 A44:48
Tabelle 10 A37:40
Tabelle 11 A27:48
Tabelle 12 A27:31
Die Zusammenfassung sollte untereinander in Tabelle 13 ab A95 eingefügt werden und die Zeilen in denen kein Text ist sollten nicht kopiert werden.
Sub Tabellentext_zusammenfassen()
Dim i As Integer
Dim Zusammenfassen As Worksheet
Set Zusammenfassen = Worksheets("Zusammenfassung")
For i = 1 To Workshheet.Count
Set BereichZielTab = Worksheets(i).UsedRange
Set LetzteZeileZusammenfassung = Worksheets(1).Cells(Rows.Count, "A45:47").End(xlUp)
BereichZielTab.Copy Destination:=LetzteZeileZusammenfassung
Next i
End Sub
Danke Vorab
Hallo DanKirpan,
kannst du mir bei der Anpassung nochmal helfen?
!! Info alle Blätter haben noch einen Blattschutz!!
Tabelle 1 = Deckblatt
Tabelle 2 = VDE und Funktionsprüfung
Tabelle 3 = Stromdurchflutung
Tabelle 4 = Jochmagnetisierung
Tabelle 5 = Spulenmagnetisierung
Tabelle 6 = Hilfsdurchflutung
Tabelle 7 = Induktionsdurchflutung
Tabelle 8 = ASTM
Tabelle 9 = Entmagn., Feldlagen und UV-Beleuchtung
Tabelle 10 = EM6
Tabelle 11 = Prüfmittel
Tabelle 12 = Bewertung
Tabelle 13 Zertifikat (Ziel Tabelle A95)
Danke schon mal im Voraus.
1 Antwort
Hallo,
dazu kannst du dies verwenden:
Sub Tabellentext_zusammenfassen()
Dim i As Long, lZei As Long
Dim CopBer As Range, Zelle As Range
Dim AusBer As String, AusBlatt As String
For i = 1 To 12
'Bereiche und Blatt festlegen das ausgelesen wird
AusBlatt = "Tabelle" & i
Select Case i
Case 1
AusBer = "A45:A47"
Case 2
AusBer = "A35:A37, A68:A80, A105:A117, A141:A155, A178:A196"
Case 3 'gilt für 3-7 da die Fälle 4-7 nicht anders festgelegt sind
AusBer = "A40:A45, A85:A90, A130:A135, A175:A180"
Case 8
AusBer = "A42:A44"
Case 9
AusBer = "A44:A48"
Case 10
AusBer = "A37:A40"
Case 11
AusBer = "A27:A48"
Case 12
AusBer = "A27:A31"
End Select
Set CopBer = ActiveWorkbook.Sheets(AusBlatt).Range(AusBer)
'Inhalte kopieren unter Ausschluss von Leerwerten
With ActiveWorkbook.Sheets("Tabelle13")
For Each Zelle In CopBer
If Zelle.Value <> "" Then
lZei = Application.WorksheetFunction.Max(95, .Range("A" & .Rows.Count).End(xlUp).Row + 1)
.Range("A" & lZei) = Zelle.Value
End If
Next Zelle
End With
Next i
End Sub
Es wird jedes Blatt durchgegangen, darauf der gewünschte Bereich festgelegt und Zelle für Zelle aufgelistet. Sollten deine Blätter nicht tatsächlich Tabelle1 , Tabelle2 etc. heißen müsstest du den Blattnamen noch mit in den Fällen anpassen.
Hallo,
hatte erst jetzt wieder etwas Zeit. Wenn das Zertifkat-blatt ebenfalls einen Schutz hat, müsstest du diesen temporär aufheben, auf den anderen Blättern hat er für das Makro keine Auswirkung.
Sonst genügt es wie gesagt den Blattnamen mit in der Case-Anweisung festzulegen. Tabelle9 "Entmagn., Feldlagen und UV-Beleuchtung" ist bei mir allerdings ein unmöglicher Blattname da er länger als 31 Zeichen ist, da müsstest du nochmal prüfen ob Excel den geplanten Namen bei dir nicht automatisch gekürzt hat und entsprechend Case 9 anpassen.
Sub Tabellentext_zusammenfassen()
Dim i As Long, lZei As Long
Dim CopBer As Range, Zelle As Range
Dim AusBer As String, AusBlatt As String
For i = 1 To 12
'Bereiche und Blatt festlegen das ausgelesen wird
AusBlatt = "Tabelle" & i
Select Case i
Case 1
AusBer = "A45:A47"
AusBlatt = "Deckblatt"
Case 2
AusBer = "A35:A37, A68:A80, A105:A117, A141:A155, A178:A196"
AusBlatt = "VDE und Funktionsprüfung"
Case 3
AusBer = "A40:A45, A85:A90, A130:A135, A175:A180" 'gilt für 3-7 da die Fälle 4-7 nicht anders festgelegt sind
AusBlatt = "Stromdurchflutung"
Case 4
AusBlatt = "Jochmagnetisierung"
Case 5
AusBlatt = "Spulenmagnetisierung"
Case 6
AusBlatt = "Hilfsdurchflutung"
Case 7
AusBlatt = "Induktionsdurchflutung"
Case 8
AusBer = "A42:A44"
AusBlatt = "ASTM"
Case 9
AusBer = "A44:A48"
AusBlatt = "Tabelle9"
'AusBlatt = "Entmagn., Feldlagen und UV-Beleuchtung" 'Name länger als 31 Zeichen
Case 10
AusBer = "A37:A40"
AusBlatt = "EM6"
Case 11
AusBer = "A27:A48"
AusBlatt = "Prüfmittel"
Case 12
AusBer = "A27:A31"
AusBlatt = "Bewertung"
End Select
Set CopBer = ActiveWorkbook.Sheets(AusBlatt).Range(AusBer)
'Inhalte kopieren unter Ausschluss von Leerwerten
With ActiveWorkbook.Sheets("Zertifikat") 'Tabelle13 = Zertifikat
For Each Zelle In CopBer
If Zelle.Value <> "" Then
lZei = Application.WorksheetFunction.Max(95, .Range("A" & .Rows.Count).End(xlUp).Row + 1)
.Range("A" & lZei) = Zelle.Value
End If
Next Zelle
End With
Next i
End Sub
Fehler bei:
Set CopBer = ActiveWorkbook.Sheets(AusBlatt).Range(AusBer)
Sub Tabellentext_zusammenfassen()
Dim i As Long, lZei As Long
Dim CopBer As Range, Zelle As Range
Dim AusBer As String, AusBlatt As String
For i = 1 To 12
'Bereiche und Blatt festlegen das ausgelesen wird
AusBlatt = "Tabelle" & i
Select Case i
Case 1
AusBer = "A45:A47"
AusBlatt = "Deckblatt"
Case 2
AusBer = "A35:A37, A68:A80, A105:A117, A141:A155, A178:A196"
AusBlatt = "VDE und Funktionsprüfung"
Case 3
AusBer = "A40:A45, A85:A90, A130:A135, A175:A180" 'gilt für 3-7 da die Fälle 4-7 nicht anders festgelegt sind
AusBlatt = "Stromdurchflutung"
Case 4
AusBlatt = "Jochmagnetisierung"
Case 5
AusBlatt = "Spulenmagnetisierung"
Case 6
AusBlatt = "Hilfsdurchflutung"
Case 7
AusBlatt = "Induktionsdurchflutung"
Case 8
AusBer = "A42:A44"
AusBlatt = "ASTM"
Case 9
AusBer = "A44:A48"
AusBlatt = "Entmag.,Feldlagen und UV-Beleuc"
'AusBlatt = "Entmagn., Feldlagen und UV-Beleuchtung" 'Name länger als 31 Zeichen
Case 10
AusBer = "A37:A40"
AusBlatt = "EM6"
Case 11
AusBer = "A27:A48"
AusBlatt = "Prüfmittel"
Case 12
AusBer = "A27:A31"
AusBlatt = "Bewertung"
End Select
Set CopBer = ActiveWorkbook.Sheets(AusBlatt).Range(AusBer)
'Inhalte kopieren unter Ausschluss von Leerwerten
With ActiveWorkbook.Sheets("Zertifikat") 'Tabelle18 = Zertifikat
For Each Zelle In CopBer
If Zelle.Value <> "" Then
lZei = Application.WorksheetFunction.Max(95, .Range("A" & .Rows.Count).End(xlUp).Row + 1)
.Range("A" & lZei) = Zelle.Value
End If
Next Zelle
End With
Next i
End Sub
Ah okay und kein Problem wegen den Umständen^^
Das ist dasselbe Blatt wie das auf das die Einträge geschrieben werden oder? Dann müsste man sie entweder zwischenspeichern oder die Eintragszeile anders festlegen.
(Nicht auf senden geklickt hier der überarbeitete Absatz des Codes)
'Inhalte kopieren unter Ausschluss von Leerwerten
With ActiveWorkbook.Sheets("Zertifikat") 'Tabelle13 = Zertifikat
For Each zelle In CopBer
If zelle.Value <> "" Then
lZei = Application.WorksheetFunction.Max(95, lZei + 1)
.Range("A" & lZei).EntireRow.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
.Range("A" & lZei) = zelle.Value
End If
Next zelle
End With
Next i
Hallo DanKirpan,
kannst du mir bei der Anpassung nochmal helfen?
!! Info alle Blätter haben noch einen Blattschutz!!
Tabelle 1 = Deckblatt
Tabelle 2 = VDE und Funktionsprüfung
Tabelle 3 = Stromdurchflutung
Tabelle 4 = Jochmagnetisierung
Tabelle 5 = Spulenmagnetisierung
Tabelle 6 = Hilfsdurchflutung
Tabelle 7 = Induktionsdurchflutung
Tabelle 8 = ASTM
Tabelle 9 = Entmagn., Feldlagen und UV-Beleuchtung
Tabelle 10 = EM6
Tabelle 11 = Prüfmittel
Tabelle 12 = Bewertung
Tabelle 13 Zertifikat (Ziel Tabelle A95)
Danke schon mal im Voraus.