Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Pivotfelder - Liste der Elemente wird immer länger

10 views
Skip to first unread message

Ralf Reimann

unread,
Oct 22, 2005, 10:38:14 AM10/22/05
to
Hallo zusammen,

ich habe in Excel 2002 eine Pivottabelle, die auf Datensätze aus einem
benannten Bereich der gleichen Arbeitsmappe zurückgreift. Je nach dem was
ausgewertet soll, werden die Datensätze neu zusammengestellt und in den
bennanten Bereich kopiert, bzw. es wird über "usedrange" der bennante
Bereich neu definiert.

Jetzt habe ich festgestellt, dass in den Drop-Down-Listen der Pivotfelder
(um zu wählen welche Elemante angezeigt werden sollen) alle Elemente
aufgelistet sind, die jemals in den Datensätzen vorhanden waren, also auch
solche, die derzeit NICHT in der Datenquelle der Pivottabelle gespeichert
sind.

Warum und an welcher Stelle werden diese (veralteten) Daten abgelegt?
Die Drop-Down-Liste wird jedenfalls unpraktikabel lang.

Zum anderen durchlaufe ich die Einträge mittels VBA, wodurch der
Schleifendurchlauf immer langsamer wird, je mehr Einträge vorhanden sind.

Set pt = Sheets("Auswertung").PivotTables(1)
Set pf = pt.PivotFields("Datum")
Set pi = pf.PivotItems
For Each obj In pi
Debug.Print obj.Value
Next obj

Im Direktfenster ist nun beispielsweise jedes Datum aufgelistet, was jemals
in der Datenquelle vorhanden war, auch wenn es in der aktuellen Datenquelle
definitiv nicht vorhanden ist.

Wie kann ich die Liste (Items) auf die nur wirklich vorhandenen Einträge
der Datenquelle reduzieren?

Gruß Ralf
--

Thomas Ramel

unread,
Oct 22, 2005, 10:47:43 AM10/22/05
to
Grüezi Ralf

Ralf Reimann schrieb am 22.10.2005

[Pivot-Tabelle mit xl2002]

> Jetzt habe ich festgestellt, dass in den Drop-Down-Listen der Pivotfelder
> (um zu wählen welche Elemante angezeigt werden sollen) alle Elemente
> aufgelistet sind, die jemals in den Datensätzen vorhanden waren, also auch
> solche, die derzeit NICHT in der Datenquelle der Pivottabelle gespeichert
> sind.
>
> Warum und an welcher Stelle werden diese (veralteten) Daten abgelegt?

Diese sind im Hintergrund weiterhin gespeichert - es gibt auch einen
KB-Artikel dazu.

> Wie kann ich die Liste (Items) auf die nur wirklich vorhandenen Einträge
> der Datenquelle reduzieren?

Verwende dazu z.b. den folgenden Code:

Sub DeleteOldPivotItemsWB()
'löschen von nicht mehr verwendeten Einträgen in Pivot-Tabellen
'basierend auf MSKB (Q202232)
Dim ws As Worksheet
Dim pt As PivotTable
Dim pf As PivotField
Dim pi As PivotItem

On Error Resume Next
For Each ws In ActiveWorkbook.Worksheets
For Each pt In ws.PivotTables

pt.RefreshTable
For Each pf In pt.PivotFields
For Each pi In pf.PivotItems
If pi.RecordCount = 0 And _
Not pi.IsCalculated Then
pi.Delete
End If
Next
Next
Next
Next
'Oder als Alternative ab xl2002
For Each ws In ActiveWorkbook.Worksheets
For Each pt In ws.PivotTables
pt.PivotCache.MissingItemsLimit = xlMissingItemsNone
Next pt
Next ws

End Sub

Mit freundlichen Grüssen
Thomas Ramel

--
- MVP für Microsoft-Excel -
[Win XP Pro SP-2 / xl2000 SP-3]
Microsoft Excel - Die ExpertenTipps:
(http://tinyurl.com/9ov3l und http://tinyurl.com/cmned)

Ralf Reimann

unread,
Oct 24, 2005, 12:51:48 PM10/24/05
to
Am 22.10.2005 16:47:43 schrieb Thomas Ramel:

> Verwende dazu z.b. den folgenden Code:

Super!
Besten Dank für die Hilfe.

Gruß Ralf
--

Thomas Ramel

unread,
Oct 24, 2005, 3:19:02 PM10/24/05
to
Grüezi Ralf

Ralf Reimann schrieb am 24.10.2005

> Am 22.10.2005 16:47:43 schrieb Thomas Ramel:
>
>> Verwende dazu z.b. den folgenden Code:
>
> Super!
> Besten Dank für die Hilfe.

Aber gerne doch; Danke auch fürs Feedback.

0 new messages