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

VBA: dyn. Quelldatenbereich für Pivot

VBA: dyn. Quelldatenbereich für Pivot
02.06.2022 12:54:07
Max
Hallo,
ein Makro wird regelmäßig ausgeführt. Es soll eine Pivottabelle erstellt werden. Der Quelldatenbereich ist nicht fix, sondern flexibel. Insb. ändert sich immer die Zeilenanzahl des Quelldatenbereichs.
Unter dem Quelldatenbereich (mit einigen Leerzeilen Abstand) befinden sich weitere Daten, die nicht in die Pivot einfließen sollen.
Durch Aufzeichnen mit dem Makro-Recorder wird der Quelldatenbereich hart definiert. Ich schaffe es nicht, den Datenbereich flexibel zu definieren.
Vielen Dank für Eure Hilfe!
Das ist der aktuelle Code:

Sub Pivot_dyn_Quelldatenbereich()
' Pivot_dyn_Quelldatenbereich Makro
Range("A2").Select
Range(Selection, Selection.End(xlToRight)).Select
Range(Selection, Selection.End(xlDown)).Select
Application.CutCopyMode = False
Sheets.Add
ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
"Quelldaten dynamisch!R2C1:R6C4", Version:=8).CreatePivotTable _
TableDestination:="Tabelle1!R3C1", TableName:="PivotTable1", _
DefaultVersion:=8
Sheets("Tabelle1").Select
Cells(3, 1).Select
End Sub
Im Folgenden mein fehlgeschlagener Versuch, den Quellbereich flexibel zu definieren, insb. die Zeilen:

Sub Pivot_dyn_Quelldatenbereich()
' Definition Variable
Dim Zeilenzahl As Integer
Range("a2").Select
Zeilenzahl = Selection.CurrentRegion.Rows.Count
' Pivot_dyn_Quelldatenbereich Makro
Range("A2").Select
Range(Selection, Selection.End(xlToRight)).Select
Range(Selection, Selection.End(xlDown)).Select
Application.CutCopyMode = False
Sheets.Add
ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
"Quelldaten dynamisch!R2C1:R"&Zeilenzahl&"C4", Version:=8).CreatePivotTable _
TableDestination:="Tabelle1!R3C1", TableName:="PivotTable1", _
DefaultVersion:=8
Sheets("Tabelle1").Select
Cells(3, 1).Select
End Sub
https://www.herber.de/bbs/user/153384.xlsm

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA: dyn. Quelldatenbereich für Pivot
02.06.2022 13:29:59
ChrisL
Hi
Wenn du eine "intelligente Tabelle" (Menü Start, Als Tabelle formatieren) verwenden würdest, wärst du deine Sorgen los, weil sich der Tabellenbereich automatisch erweitert.
Aber OK, lass uns spielen :)
- Menü Formeln, Namens-Manager, einen Namen für den Quellbereich definieren "MeinBereich"
- Menü PivotTable-Analyse, Datenquelle ändern, Tabelle/Bereich:MeinBereich
Und wenn man dann den Bereichsnamen noch per VBA aktualisieren möchte z.B.

Sub Pivot_dyn_Quelldatenbereich()
ThisWorkbook.Names("MeinBereich").RefersToR1C1 = "='Quelldaten dynamisch'!R2C1:" & _
Worksheets("Quelldaten dynamisch").Range("A2").End(xlToRight).End(xlDown).Address(1, 1, xlR1C1)
ThisWorkbook.RefreshAll
End Sub
cu
Chris
Anzeige
dyn. Quelldatenbereich für Pivot ohne VBA
02.06.2022 14:58:51
Rudi
Hallo,
vergib einen Namen
Name: DerBereich
Bezug: = INDEX('Quelldaten dynamisch'!$A:$A; 2):INDEX('Quelldaten dynamisch'!$D:$D;ANZAHL2('Quelldaten dynamisch'!$D:$D)+1)
und ändere die Datenquelle deiner PT auf DerBereich.
Gruß
Rudi
AW: dyn. Quelldatenbereich für Pivot ohne VBA
02.06.2022 15:25:43
Max
Vielen Dank. Die Lösung funktioniert.
Interessehalber: Warum läuft denn der Code nicht, den ich ausprobiert hatte? (das "Quelldaten dynamisch!R2C1:R"&Zeilenzahl&"C4") ...das sieht so logisch und simpel aus...
AW: dyn. Quelldatenbereich für Pivot ohne VBA
02.06.2022 16:11:54
Rudi
Hallo,
1. ist in deiner BspTab Currentregion.Rows.Count = 5. Da die Tabelle erst in Zeile2 beginnt musst du 1 addieren.
2. musst du TableDestination auch dynamisieren.

Sub aaaa()
Dim strSheet As String, lLastRow As Long
lLastRow = Sheets("Quelldaten dynamisch").Range("A2").CurrentRegion.Rows.Count + 1
strSheet = Sheets.Add.Name
ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
"Quelldaten dynamisch!R2C1:R" & lLastRow & "C4", Version:=7).CreatePivotTable _
TableDestination:=strSheet & "!R3C1", TableName:="PivotTable2", _
DefaultVersion:=7
Application.Goto Sheets(strSheet).Range("A3")
End Sub
Gruß
Rudi
Anzeige
AW: dyn. Quelldatenbereich für Pivot ohne VBA
02.06.2022 20:26:13
Max
Super, vielen Dank!

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige