Anzeige
Archiv - Navigation
1684to1688
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

kopierten Daten einen Text anfügen

kopierten Daten einen Text anfügen
12.04.2019 13:29:45
Fred
Hallo Excel-Profis,
ich habe im Netz ein VBA-Code gezogen und den soweit meinen Möglichkeiten angepasst.
Es werden aus allen Tabellenblättern der Mappe gefilterte Daten in Tabelle "Zusammenfassung" kopiert.
Im Ergebnis stehen dann die Daten in "Zusammenfassung" von "A3" bis "J"

Sub Zusammenfassung()
Application.Calculation = xlCalculationManual
'Es werden die Daten aller Tabellenblätter innerhalb einer Datei auf einem neuen Tabellenblatt   _
_
_
gelistet.
'die Daten stehen ab Zeile 9
' Die Anzahl der Zeilen   _
_
spielt keine Rolle.
'Ein Tabellenblatt mit dem Namen "Zusammenfassung" wird, wenn nicht bereits vorhanden, ganz  _
links erstellt.
Dim wks As Worksheet      'Tabelle Zusammenfassung
Dim intSh As Integer      'Zähler für Tabelle1 bis TabelleX
Dim intLastS As Integer   'Letzte benutzte Spalte in den Tabellen
Dim bln As Boolean
Dim wksGefiltert As Worksheet
Dim LZ As Long
Set wksGefiltert = Worksheets("Zusammenfassung")
Worksheets("Zusammenfassung").Activate
If (ActiveSheet.AutoFilterMode And ActiveSheet.FilterMode) Or ActiveSheet.FilterMode Then
ActiveSheet.ShowAllData
End If
With wksGefiltert
LZ = .Cells(.Rows.Count, 3).End(xlUp).Row
.Range(.Rows(4), .Rows(Application.WorksheetFunction.Max(2, LZ))).Delete 'löscht nach Zeile3    _
_
_
alle Zeilen
End With
'Prüfung ob Blatt "Zusammenfassung" bereits vorhanden ist.
For intSh = 1 To ActiveWorkbook.Worksheets.Count
If Worksheets(intSh).Name = "Zusammenfassung" Then
Set wks = Worksheets("Zusammenfassung")
bln = True
Exit For
End If
Next
'Falls nicht vorhanden dann erstellen
If bln = False Then
Set wks = Worksheets.Add
wks.Name = "Zusammenfassung"
End If
'Blatt Zusammenfassung nach links schieben
wks.Move Before:=Sheets(1)
'Daten auf Blatt "Zusammenfassung" löschen und die Überschrift aus Tabelle1 holen
'Anzahl der Spalten zählen. Gilt dann für alle Blätter da Aufbau identisch sein muss
wks.Range("A3:J20").ClearContents
Worksheets(2).Rows(1).Copy Destination:=wks.Range("A1")
intLastS = wks.Cells(1, Columns.Count).End(xlToLeft).Column - 38
'meine gefilterten Daten aus allen Tabellen nach Tabelle "Zusammenfassung" übertragen
For intSh = 2 To ActiveWorkbook.Worksheets.Count
With Worksheets(intSh)
.Range(.Cells(9, 1), .Cells(fncLastRow(intSh, intLastS), intLastS)).SpecialCells( _
xlCellTypeVisible).Copy
wks.Cells(wks.UsedRange.Rows.Count, 1).Offset(1, 0).PasteSpecial Paste:=xlValues
End With
Next
Application.CutCopyMode = False
MsgBox "Die Daten aus " & intSh - 2 & " Tabellenblättern wurden gelistet.", 64
Application.CutCopyMode = False
Application.Calculation = xlCalculationAutomatic
End Sub
Public Function fncLastRow(ByVal intSh As Integer, intLastS As Integer) As Long
Dim intS As Integer
With Worksheets(intSh)
For intS = 1 To intLastS
If .Cells(Rows.Count, intS).End(xlUp).Row > fncLastRow Then
fncLastRow = .Cells(Rows.Count, intS).End(xlUp).Row
End If
Next
End With
End Function

so weit alles ok
Was ich nun noch gerne -wenn möglich- als Ergänzung hätte;
Es wird aus allen Tabellenblättern kopiert, außer 2 Blättern "Inhalt" und "Vorlage".
Des weiteren steht in allen Blättern in "A4" ein Titel. Dieser Titel soll entsprechend angefügt werden (wäre in Spalte "K" der Tabelle "Zusammenfassung").
Kann mir bitte jemand diese zwei Ergänzungen schreiben?
Eine vereinfachte Mappe zur Verdeutlichung
https://www.herber.de/bbs/user/129107.xlsb
Mit freundlichen Gruß
Fred Neumann

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

Betreff
Datum
Anwender
Anzeige
AW: kopierten Daten einen Text anfügen
12.04.2019 13:50:17
Daniel
Hallo Fred,
versuch mal so abzuändern:
'meine gefilterten Daten aus allen Tabellen nach Tabelle "Zusammenfassung" übertragen
For intSh = 2 To ActiveWorkbook.Worksheets.Count
If Worksheets(intSh).Name  "Inhalt" And Worksheets(intSh).Name  "Vorlage" Then
With Worksheets(intSh)
.Range(.Cells(9, 1), .Cells(fncLastRow(intSh, intLastS), intLastS)).SpecialCells( _
xlCellTypeVisible).Copy
wks.Cells(wks.UsedRange.Rows.Count, 1).Offset(1, 0).PasteSpecial Paste:=xlValues
Range(wks.Cells(3, 11), wks.Cells(wks.ListObjects("Tabelle1").DataBodyRange.Rows.Count  _
+ 2, 11)) = wks.Cells(4, 1).Value
End With
End If
Next
Gruß
Daniel
Anzeige
AW: kopierten Daten einen Text anfügen
12.04.2019 14:42:34
Fred
Hallo Daniel,
danke für die Unterstützung!
Das die zwei Blätter "Inhalt" + "Vorlage" nicht berücksichtigt werden, klappt bestens!
(wenn auch nur, wenn beide Blätter in Reihenfolge mit anderen zum Ende stehen,- ist aber überhaupt kein Problem)
Allerdings klappt die Zuordnung der Titel nicht. In "A4" steht ja ein "Titel", welcher den Daten in jeweiligem Tabellenblatt zugeordnet ist.
Also zB Daten von Blatt1 haben den Titel "Titel 1", von Blatt2 den Titel "Titel 2"
Ändere ich deinen Code zB
+ 2, 11)) = wks.Cells(4, 1).Value

ändern in
+ 2, 11)) = wks.Cells(1, 1).Value
wird zumindest für Blatt "1" zumindest der richtige Titel angezeigt,- allerdings der selbe auch in den Zeilen mit den Daten von Blatt "2"
Gruß
Fred
Anzeige
AW: kopierten Daten einen Text anfügen
12.04.2019 14:46:11
Daniel
Ja, ist natürlich Blödsinn. Es muss heißen
… = Worksheets(intSh).Cells(4,1).Value
Sorry, unkonzentriert von mir.
AW: kopierten Daten einen Text anfügen
12.04.2019 15:12:44
Fred
Daniel, man kommt der Sache aber näher :-)
nun ist es so, dass der Titel von dem "letzten Blatt" als Titel bei allen in meiner Zusammenfassung erscheint.
Gruß
Fred
AW: kopierten Daten einen Text anfügen
12.04.2019 15:42:22
Daniel
Seufz, stimmt... es ist halt Freitag :)
Nun mit ordentlichen Titeleinträgen:
Sub Zusammenfassung()
Application.Calculation = xlCalculationManual
'Es werden die Daten aller Tabellenbl?tter innerhalb einer Datei auf einem neuen Tabellenblatt  _
gelistet.
'Die Tabellenbl?tter haben eine ?berschrift in Zeile 1 ab A1, die Daten stehen ab Zeile 9
'Die Tabellenbl?tter haben einen identischen Aufbau ( Anzahl Spalten ). Die Anzahl der Zeilen  _
spielt keine Rolle.
'Ein Tabellenblatt mit dem Namen "Zusammenfassung" wird, wenn nicht bereits vorhanden, ganz  _
links erstellt.
Dim wks As Worksheet      'Tabelle Zusammenfassung
Dim intSh As Integer      'Z?hler f?r Tabelle1 bis TabelleX
Dim intLastS As Integer   'Letzte benutzte Spalte in den Tabellen
Dim bln As Boolean
Dim wksGefiltert As Worksheet
Dim LZ As Long
Dim lngFreieZeile As Long
Set wksGefiltert = Worksheets("Zusammenfassung")
Worksheets("Zusammenfassung").Activate
If (ActiveSheet.AutoFilterMode And ActiveSheet.FilterMode) Or ActiveSheet.FilterMode Then
ActiveSheet.ShowAllData
End If
With wksGefiltert
LZ = .Cells(.Rows.Count, 3).End(xlUp).Row
.Range(.Rows(4), .Rows(Application.WorksheetFunction.Max(2, LZ))).Delete 'l?scht nach Zeile3  _
alle Zeilen
End With
'Pr?fung ob Blatt "Zusammenfassung" bereits vorhanden ist.
For intSh = 1 To ActiveWorkbook.Worksheets.Count
If Worksheets(intSh).Name = "Zusammenfassung" Then
Set wks = Worksheets("Zusammenfassung")
bln = True
Exit For
End If
Next
'Falls nicht vorhanden dann erstellen
If bln = False Then
Set wks = Worksheets.Add
wks.Name = "Zusammenfassung"
End If
'Blatt Zusammenfassung nach links schieben
wks.Move Before:=Sheets(1)
'Daten auf Blatt "Zusammenfassung" l?schen und die ?berschrift aus Tabelle1 holen
'Anzahl der Spalten z?hlen. Gilt dann f?r alle Bl?tter da Aufbau identisch sein muss
wks.Range("A3:J20").ClearContents
Worksheets(2).Rows(1).Copy Destination:=wks.Range("A1")
intLastS = wks.Cells(1, Columns.Count).End(xlToLeft).Column - 38
'meine gefilterten Daten aus allen Tabellen nach Tabelle "Zusammenfassung" ?bertragen
For intSh = 2 To ActiveWorkbook.Worksheets.Count
If Worksheets(intSh).Name  "Inhalt" And Worksheets(intSh).Name  "Vorlage" Then
With Worksheets(intSh)
.Range(.Cells(9, 1), .Cells(fncLastRow(intSh, intLastS), intLastS)).SpecialCells( _
xlCellTypeVisible).Copy
lngFreieZeile = wks.Cells(wks.UsedRange.Rows.Count, 1).Row + 1
wks.Cells(lngFreieZeile, 1).PasteSpecial Paste:=xlValues
Range(wks.Cells(lngFreieZeile, 11), wks.Cells(wks.ListObjects("Tabelle1"). _
DataBodyRange.Rows.Count + 2, 11)) = .Cells(4, 1).Value
End With
End If
Next
Application.CutCopyMode = False
MsgBox "Die Daten aus " & intSh - 2 & " Tabellenbl?ttern wurden gelistet.", 64
Application.CutCopyMode = False
Application.Calculation = xlCalculationAutomatic
End Sub

Anzeige
AW: kopierten Daten einen Text anfügen
12.04.2019 15:44:58
Daniel
Eine Kleinigkeit noch. Ändere mal diese Zeile
wks.Range("A3:J20").ClearContents
in
wks.Range("A3:K20").ClearContents
Grüße
Danke Daniel M.
12.04.2019 16:18:42
Fred
Daniel M. Perfekt !!
Danke für deine kompetente Hilfe.
Gruß
Fred
Gerne und schönes WE
12.04.2019 16:25:05
Daniel

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige