Sheet in hinter letzten, verwenderten Spalte einfügen
Moin Zusammen
Ausgangslage:
Ich habe zwei Sheets. Sheet "SCData" ist Variabel in der Grösse. Darin befindet sich eine Pivot,
die je nach Daten Import mehr Spalten und mehr Zeilen hat. Im Sheet "Hardware" habe ich eine
Fixe Anzahl von Spalten und 2500 Zeilen. Jede Zelle enthält eine Formel.
Ziel:
Ich möchte aus beiden Sheets ein einziges machen. Als erstes soll das Sheet SCData in das
neue kopiert werden. Hier wäre es vorteilhaft, wenn nur der Range bis zur letzten Befüllten Zelle
nach rechts unten kopiert wird (eingefügt werden sollen lediglich die Werte, da im Sheet eine
Pivot Tabelle ist und diese für weitere Bearbeitungen störend ist). Nach dieser wird das Sheet
Hardware eingefügt. Das Zielsheet heisst im übrigen "Finished_Data".
Hinzu kommt, dass im selben Skript die Spalte A im Zielsheet Finished_Data bearbeitet werden
muss. Und zwar habe ich durch die Pivot Tabelle teilweise leere Felder. Dies überall dort, wo der
Schlüssel der Pivot Tabelle zweimal verwendet wurde. Das heisst, es muss bei jeder leeren Zelle
in Spalte A den Wert der oberen Zelle herunter kopieren.
Bereits bestehend:
Was muss wo und wie angepasst werden, damit der Skriptaufruf die gewünschten Aktionen durchführt?
Danke im Voraus und Grüsse,
Aivilon
Ausgangslage:
Ich habe zwei Sheets. Sheet "SCData" ist Variabel in der Grösse. Darin befindet sich eine Pivot,
die je nach Daten Import mehr Spalten und mehr Zeilen hat. Im Sheet "Hardware" habe ich eine
Fixe Anzahl von Spalten und 2500 Zeilen. Jede Zelle enthält eine Formel.
Ziel:
Ich möchte aus beiden Sheets ein einziges machen. Als erstes soll das Sheet SCData in das
neue kopiert werden. Hier wäre es vorteilhaft, wenn nur der Range bis zur letzten Befüllten Zelle
nach rechts unten kopiert wird (eingefügt werden sollen lediglich die Werte, da im Sheet eine
Pivot Tabelle ist und diese für weitere Bearbeitungen störend ist). Nach dieser wird das Sheet
Hardware eingefügt. Das Zielsheet heisst im übrigen "Finished_Data".
Hinzu kommt, dass im selben Skript die Spalte A im Zielsheet Finished_Data bearbeitet werden
muss. Und zwar habe ich durch die Pivot Tabelle teilweise leere Felder. Dies überall dort, wo der
Schlüssel der Pivot Tabelle zweimal verwendet wurde. Das heisst, es muss bei jeder leeren Zelle
in Spalte A den Wert der oberen Zelle herunter kopieren.
Bereits bestehend:
Sub alleszusammenkopieren()
'
'In diesem Sub ist das, was ich mit der Makroaufzeichnung erreichen konnte.
'Im Code fehlend ist das Ausfüllen der leeren Zellen in Spalte A
'
Columns("A:ZZ").Select 'ich habe mit der Makro Aufzeichnung nicht die Möglichkeit, Variabel zu wählen, deshalb habe ich bis Column ZZ gewählt
'hier sollte wie beschrieben, bestenfalls der Range bis zur letzten, wirklich verwendeten Spalte gesetzt werden.
Selection.Copy
ActiveWindow.ScrollColumn = 693
ActiveWindow.ScrollColumn = 691
ActiveWindow.ScrollColumn = 685
ActiveWindow.ScrollColumn = 678
ActiveWindow.ScrollColumn = 672
ActiveWindow.ScrollColumn = 664
ActiveWindow.ScrollColumn = 653
ActiveWindow.ScrollColumn = 643
ActiveWindow.ScrollColumn = 635
ActiveWindow.ScrollColumn = 627
ActiveWindow.ScrollColumn = 622
ActiveWindow.ScrollColumn = 616
ActiveWindow.ScrollColumn = 610
ActiveWindow.ScrollColumn = 603
ActiveWindow.ScrollColumn = 595
ActiveWindow.ScrollColumn = 582
ActiveWindow.ScrollColumn = 571
ActiveWindow.ScrollColumn = 556
ActiveWindow.ScrollColumn = 543
ActiveWindow.ScrollColumn = 527
ActiveWindow.ScrollColumn = 512
ActiveWindow.ScrollColumn = 498
ActiveWindow.ScrollColumn = 487
ActiveWindow.ScrollColumn = 474
ActiveWindow.ScrollColumn = 466
ActiveWindow.ScrollColumn = 457
ActiveWindow.ScrollColumn = 451
ActiveWindow.ScrollColumn = 443
ActiveWindow.ScrollColumn = 435
ActiveWindow.ScrollColumn = 426
ActiveWindow.ScrollColumn = 414
ActiveWindow.ScrollColumn = 403
ActiveWindow.ScrollColumn = 388
ActiveWindow.ScrollColumn = 375
ActiveWindow.ScrollColumn = 363
ActiveWindow.ScrollColumn = 351
ActiveWindow.ScrollColumn = 339
ActiveWindow.ScrollColumn = 326
ActiveWindow.ScrollColumn = 315
ActiveWindow.ScrollColumn = 301
ActiveWindow.ScrollColumn = 288
ActiveWindow.ScrollColumn = 276
ActiveWindow.ScrollColumn = 264
ActiveWindow.ScrollColumn = 252
ActiveWindow.ScrollColumn = 244
ActiveWindow.ScrollColumn = 236
ActiveWindow.ScrollColumn = 231
ActiveWindow.ScrollColumn = 225
ActiveWindow.ScrollColumn = 220
ActiveWindow.ScrollColumn = 216
ActiveWindow.ScrollColumn = 212
ActiveWindow.ScrollColumn = 208
ActiveWindow.ScrollColumn = 205
ActiveWindow.ScrollColumn = 202
ActiveWindow.ScrollColumn = 198
ActiveWindow.ScrollColumn = 195
ActiveWindow.ScrollColumn = 193
ActiveWindow.ScrollColumn = 191
ActiveWindow.ScrollColumn = 187
ActiveWindow.ScrollColumn = 184
ActiveWindow.ScrollColumn = 180
ActiveWindow.ScrollColumn = 176
ActiveWindow.ScrollColumn = 171
ActiveWindow.ScrollColumn = 163
ActiveWindow.ScrollColumn = 156
ActiveWindow.ScrollColumn = 149
ActiveWindow.ScrollColumn = 141
ActiveWindow.ScrollColumn = 130
ActiveWindow.ScrollColumn = 124
ActiveWindow.ScrollColumn = 117
ActiveWindow.ScrollColumn = 112
ActiveWindow.ScrollColumn = 106
ActiveWindow.ScrollColumn = 100
ActiveWindow.ScrollColumn = 95
ActiveWindow.ScrollColumn = 91
ActiveWindow.ScrollColumn = 87
ActiveWindow.ScrollColumn = 84
ActiveWindow.ScrollColumn = 80
ActiveWindow.ScrollColumn = 78
ActiveWindow.ScrollColumn = 75
ActiveWindow.ScrollColumn = 71
ActiveWindow.ScrollColumn = 67
ActiveWindow.ScrollColumn = 63
ActiveWindow.ScrollColumn = 60
ActiveWindow.ScrollColumn = 57
ActiveWindow.ScrollColumn = 54
ActiveWindow.ScrollColumn = 50
ActiveWindow.ScrollColumn = 47
ActiveWindow.ScrollColumn = 43
ActiveWindow.ScrollColumn = 40
ActiveWindow.ScrollColumn = 37
ActiveWindow.ScrollColumn = 35
ActiveWindow.ScrollColumn = 34
ActiveWindow.ScrollColumn = 32
ActiveWindow.ScrollColumn = 31
ActiveWindow.ScrollColumn = 30
ActiveWindow.ScrollColumn = 28
ActiveWindow.ScrollColumn = 27
ActiveWindow.ScrollColumn = 25
ActiveWindow.ScrollColumn = 23
ActiveWindow.ScrollColumn = 21
ActiveWindow.ScrollColumn = 20
ActiveWindow.ScrollColumn = 18
ActiveWindow.ScrollColumn = 17
ActiveWindow.ScrollColumn = 15
ActiveWindow.ScrollColumn = 14
ActiveWindow.ScrollColumn = 12
ActiveWindow.ScrollColumn = 11
ActiveWindow.ScrollColumn = 9
ActiveWindow.ScrollColumn = 7
ActiveWindow.ScrollColumn = 6
ActiveWindow.ScrollColumn = 4
ActiveWindow.ScrollColumn = 2
ActiveWindow.ScrollColumn = 1
Range("A4").Select
Sheets("Finished_Data").Select
ActiveSheet.Buttons.Add(150, 19.5, 409.5, 144).Select
Range("A1").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
ActiveWindow.SmallScroll ToRight:=58
Range("BS3").Select
Sheets("Hardware").Select
Columns("A:FW").Select 'Dieser Bereich ist Fix. Lediglich die Anzahl Zeilen ist variabel.
Application.CutCopyMode = False
Selection.Copy
Sheets("Finished_Data").Select
Range("BS1").Select 'Hier müsste nun wiederum erste Zelle der ersten wirklich freien Spalte gewählt werden.
ActiveSheet.Paste
ActiveWindow.ScrollColumn = 60
ActiveWindow.ScrollColumn = 62
ActiveWindow.ScrollColumn = 64
ActiveWindow.ScrollColumn = 65
ActiveWindow.ScrollColumn = 68
ActiveWindow.ScrollColumn = 70
ActiveWindow.ScrollColumn = 72
ActiveWindow.ScrollColumn = 74
ActiveWindow.ScrollColumn = 75
ActiveWindow.ScrollColumn = 77
ActiveWindow.ScrollColumn = 79
ActiveWindow.ScrollColumn = 80
ActiveWindow.ScrollColumn = 81
ActiveWindow.ScrollColumn = 83
ActiveWindow.ScrollColumn = 84
ActiveWindow.ScrollColumn = 85
ActiveWindow.ScrollColumn = 86
ActiveWindow.ScrollColumn = 87
ActiveWindow.ScrollColumn = 88
ActiveWindow.ScrollColumn = 89
ActiveWindow.ScrollColumn = 90
ActiveWindow.ScrollColumn = 91
ActiveWindow.ScrollColumn = 92
ActiveWindow.ScrollColumn = 93
ActiveWindow.ScrollColumn = 95
ActiveWindow.ScrollColumn = 96
ActiveWindow.ScrollColumn = 97
ActiveWindow.ScrollColumn = 98
ActiveWindow.ScrollColumn = 99
ActiveWindow.ScrollColumn = 101
ActiveWindow.ScrollColumn = 103
ActiveWindow.ScrollColumn = 104
ActiveWindow.ScrollColumn = 106
ActiveWindow.ScrollColumn = 108
ActiveWindow.ScrollColumn = 111
ActiveWindow.ScrollColumn = 113
ActiveWindow.ScrollColumn = 115
ActiveWindow.ScrollColumn = 117
ActiveWindow.ScrollColumn = 119
ActiveWindow.ScrollColumn = 121
ActiveWindow.ScrollColumn = 123
ActiveWindow.ScrollColumn = 125
ActiveWindow.ScrollColumn = 126
ActiveWindow.ScrollColumn = 128
ActiveWindow.ScrollColumn = 130
ActiveWindow.ScrollColumn = 131
ActiveWindow.ScrollColumn = 133
ActiveWindow.ScrollColumn = 134
ActiveWindow.ScrollColumn = 135
ActiveWindow.ScrollColumn = 136
ActiveWindow.ScrollColumn = 137
ActiveWindow.ScrollColumn = 138
ActiveWindow.ScrollColumn = 139
ActiveWindow.ScrollColumn = 140
ActiveWindow.ScrollColumn = 141
ActiveWindow.ScrollColumn = 144
ActiveWindow.ScrollColumn = 145
ActiveWindow.ScrollColumn = 152
ActiveWindow.ScrollColumn = 156
ActiveWindow.ScrollColumn = 159
ActiveWindow.ScrollColumn = 160
ActiveWindow.ScrollColumn = 161
ActiveWindow.ScrollColumn = 162
ActiveWindow.ScrollColumn = 163
ActiveWindow.ScrollColumn = 164
ActiveWindow.ScrollColumn = 165
ActiveWindow.ScrollColumn = 166
ActiveWindow.ScrollColumn = 167
ActiveWindow.ScrollColumn = 168
ActiveWindow.ScrollColumn = 169
ActiveWindow.ScrollColumn = 170
ActiveWindow.ScrollColumn = 171
ActiveWindow.ScrollColumn = 172
ActiveWindow.ScrollColumn = 173
ActiveWindow.ScrollColumn = 174
ActiveWindow.ScrollColumn = 175
ActiveWindow.ScrollColumn = 176
ActiveWindow.ScrollColumn = 177
ActiveWindow.ScrollColumn = 180
ActiveWindow.ScrollColumn = 182
ActiveWindow.ScrollColumn = 185
ActiveWindow.ScrollColumn = 187
ActiveWindow.ScrollColumn = 190
ActiveWindow.ScrollColumn = 192
ActiveWindow.ScrollColumn = 194
ActiveWindow.ScrollColumn = 195
ActiveWindow.ScrollColumn = 196
ActiveWindow.ScrollColumn = 197
ActiveWindow.ScrollColumn = 198
ActiveWindow.ScrollColumn = 199
ActiveWindow.ScrollColumn = 200
ActiveWindow.ScrollColumn = 201
ActiveWindow.ScrollColumn = 202
ActiveWindow.ScrollColumn = 203
ActiveWindow.ScrollColumn = 205
ActiveWindow.ScrollColumn = 207
ActiveWindow.ScrollColumn = 209
ActiveWindow.ScrollColumn = 210
ActiveWindow.ScrollColumn = 213
ActiveWindow.ScrollColumn = 216
ActiveWindow.ScrollColumn = 219
ActiveWindow.ScrollColumn = 222
ActiveWindow.ScrollColumn = 225
ActiveWindow.ScrollColumn = 228
ActiveWindow.ScrollColumn = 232
ActiveWindow.ScrollColumn = 233
ActiveWindow.ScrollColumn = 235
ActiveWindow.ScrollColumn = 237
ActiveWindow.ScrollColumn = 238
ActiveWindow.ScrollColumn = 239
ActiveWindow.ScrollColumn = 240
ActiveWindow.ScrollColumn = 242
ActiveWindow.ScrollColumn = 244
ActiveWindow.ScrollColumn = 245
ActiveWindow.ScrollColumn = 246
ActiveWindow.ScrollColumn = 247
ActiveWindow.ScrollColumn = 248
ActiveWindow.ScrollColumn = 247
ActiveWindow.ScrollColumn = 246
ActiveWindow.ScrollColumn = 245
ActiveWindow.ScrollColumn = 244
ActiveWindow.ScrollColumn = 243
ActiveWindow.ScrollColumn = 242
ActiveWindow.ScrollColumn = 241
ActiveWindow.ScrollColumn = 240
ActiveWindow.ScrollColumn = 239
ActiveWindow.ScrollColumn = 238
ActiveWindow.ScrollColumn = 237
ActiveWindow.ScrollColumn = 236
ActiveWindow.ScrollColumn = 235
ActiveWindow.ScrollColumn = 234
ActiveWindow.ScrollColumn = 233
ActiveWindow.ScrollColumn = 232
ActiveWindow.ScrollColumn = 231
ActiveWindow.ScrollColumn = 229
ActiveWindow.ScrollColumn = 228
ActiveWindow.ScrollColumn = 227
ActiveWindow.ScrollColumn = 226
ActiveWindow.ScrollColumn = 225
Range("AL3:IO3").Select
Range("IO3").Activate
Application.CutCopyMode = False
With Selection
.VerticalAlignment = xlBottom
.Orientation = 90
.AddIndent = False
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With
With Selection
.HorizontalAlignment = xlGeneral
.VerticalAlignment = xlBottom
.Orientation = 90
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With
With Selection
.HorizontalAlignment = xlLeft
.VerticalAlignment = xlBottom
.Orientation = 90
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With
Range("A3:IO3").Select
Range("IO3").Activate
Selection.Font.Bold = False
Selection.Font.Bold = True
ActiveWindow.ScrollColumn = 226
ActiveWindow.ScrollColumn = 224
ActiveWindow.ScrollColumn = 223
ActiveWindow.ScrollColumn = 221
ActiveWindow.ScrollColumn = 220
ActiveWindow.ScrollColumn = 218
ActiveWindow.ScrollColumn = 216
ActiveWindow.ScrollColumn = 212
ActiveWindow.ScrollColumn = 208
ActiveWindow.ScrollColumn = 203
ActiveWindow.ScrollColumn = 198
ActiveWindow.ScrollColumn = 193
ActiveWindow.ScrollColumn = 187
ActiveWindow.ScrollColumn = 183
ActiveWindow.ScrollColumn = 179
ActiveWindow.ScrollColumn = 176
ActiveWindow.ScrollColumn = 173
ActiveWindow.ScrollColumn = 171
ActiveWindow.ScrollColumn = 168
ActiveWindow.ScrollColumn = 165
ActiveWindow.ScrollColumn = 163
ActiveWindow.ScrollColumn = 160
ActiveWindow.ScrollColumn = 157
ActiveWindow.ScrollColumn = 154
ActiveWindow.ScrollColumn = 151
ActiveWindow.ScrollColumn = 149
ActiveWindow.ScrollColumn = 147
ActiveWindow.ScrollColumn = 145
ActiveWindow.ScrollColumn = 144
ActiveWindow.ScrollColumn = 142
ActiveWindow.ScrollColumn = 140
ActiveWindow.ScrollColumn = 139
ActiveWindow.ScrollColumn = 136
ActiveWindow.ScrollColumn = 134
ActiveWindow.ScrollColumn = 131
ActiveWindow.ScrollColumn = 128
ActiveWindow.ScrollColumn = 124
ActiveWindow.ScrollColumn = 120
ActiveWindow.ScrollColumn = 116
ActiveWindow.ScrollColumn = 113
ActiveWindow.ScrollColumn = 109
ActiveWindow.ScrollColumn = 106
ActiveWindow.ScrollColumn = 103
ActiveWindow.ScrollColumn = 97
ActiveWindow.ScrollColumn = 93
ActiveWindow.ScrollColumn = 90
ActiveWindow.ScrollColumn = 86
ActiveWindow.ScrollColumn = 82
ActiveWindow.ScrollColumn = 78
ActiveWindow.ScrollColumn = 75
ActiveWindow.ScrollColumn = 71
ActiveWindow.ScrollColumn = 66
ActiveWindow.ScrollColumn = 61
ActiveWindow.ScrollColumn = 57
ActiveWindow.ScrollColumn = 53
ActiveWindow.ScrollColumn = 48
ActiveWindow.ScrollColumn = 44
ActiveWindow.ScrollColumn = 39
ActiveWindow.ScrollColumn = 35
ActiveWindow.ScrollColumn = 32
ActiveWindow.ScrollColumn = 27
ActiveWindow.ScrollColumn = 22
ActiveWindow.ScrollColumn = 16
ActiveWindow.ScrollColumn = 14
ActiveWindow.ScrollColumn = 11
ActiveWindow.ScrollColumn = 9
ActiveWindow.ScrollColumn = 6
ActiveWindow.ScrollColumn = 4
ActiveWindow.ScrollColumn = 1
Rows("2:2").Select
Selection.Font.Size = 11
Selection.Font.Bold = True
Rows("1:1").Select
Selection.Font.Size = 11
Selection.Font.Size = 12
Selection.Font.Bold = True
Range("A4").Select
End Sub
Was muss wo und wie angepasst werden, damit der Skriptaufruf die gewünschten Aktionen durchführt?
Danke im Voraus und Grüsse,
Aivilon
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 305318
Url: https://administrator.de/contentid/305318
Ausgedruckt am: 18.11.2024 um 01:11 Uhr
9 Kommentare
Neuester Kommentar
Sub MergeSheets()
With Sheets("Finished_Data")
Sheets("SCData").UsedRange.Copy
.Range("A1").PasteSpecial xlPasteValuesAndNumberFormats
Sheets("Hardware").UsedRange.Copy
.Cells(1, .UsedRange.SpecialCells(xlCellTypeLastCell).Column + 1).PasteSpecial xlPasteValuesAndNumberFormats
End With
End Sub
Hinzu kommt, dass im selben Skript die Spalte A im Zielsheet Finished_Data bearbeitet werden muss. > Und zwar habe ich durch die Pivot Tabelle teilweise leere Felder.
Das muss man nicht machen, dafür gibt in der Pivot-Tabelle extra eine Option: Rechtsklick auf die Spalte -> Feldeinstellungen -> Elementnamen wiederholenGruß skybird
Zitat von @aivilon:
Das ergibt Laufzeitfehler 451, Let Prozedur der Eigenschaft ist nicht definiert.
Das kann ja so auch nicht weil ein Integer hat keine Eigenschaft "Name" das hat nur das Range-Objekt. Und Count ist keine Funktion sondern eine Eigenschaft!ActiveSheet.UsedRange.Rows.Count(-3).Name = _
> "Finished_Data"
Das ergibt Laufzeitfehler 451, Let Prozedur der Eigenschaft ist nicht definiert.
With Sheets("Finished_Data")
.UsedRange.Resize(.UsedRange.Rows.Count -3, .UsedRange.Columns.count).Name = "FinishedData"
End with
Du solltest den Bereich ja auch nicht so benennen wie das Sheet selber
Und wenn der Name schon existiert sollte man ihn vorher löschen.
Geht hier problemlos.
Und wenn der Name schon existiert sollte man ihn vorher löschen.
Geht hier problemlos.
Ja, das hast du ja nicht erwähnt das die Zeilen von "Oben" abgezogen werden sollen. Bei meinem Beispiel werden sie von "unten" abgezogen!
Wenn von oben:
Wenn von oben:
With Sheets("Finished_Data")
.UsedRange.Resize(.UsedRange.Rows.Count -3, .UsedRange.Columns.count).Offset(3,0).Name = "FinishedData"
End with
Jo, das hatte ich zu dem Zeitpunkt nicht gesehen..
Na dann ist das ja geklärt
Dann vielleicht noch paar Seiten für deine nächsten VBA Ausflüge
Gruß und schönen Tag
skybird
Na dann ist das ja geklärt
Dann vielleicht noch paar Seiten für deine nächsten VBA Ausflüge
Gruß und schönen Tag
skybird