PDA

Vollständige Version anzeigen : Pivot aktualisiert sich nicht korrekt (Test-Datei im Anhang)


rainerZZ
02.09.2017, 20:18
Hallo zusammen,

ich exportiere Daten aus Access in Zelle A11 (Anzahl Datensätze variiert).
Auf Basis dieser Tabelle erstelle ich rechts daneben eine Pivot-Tabelle. Mein Ziel ist es, dass die Pivot Tabelle beim aktualisieren nur die Zellen betrachtet, die auch gefüllt sind. Dazu habe ich über den Namens-Manager einen dynamischen Bereich angelegt.

Was ich jetzt mal probiert habe:

Von den 4 Zeilen, die importiert wurden, habe ich die 4 gelöscht und danach in der Pivot über Analysieren -> Aktualisieren die Pivot-DAten aktualisiert. Das Ergebnis habe ich euch als Screenshot darunter gepostet. Obwohl der Bereich (Analysieren -> Datenquelle ändern) richtig eingegrenzt wird nach dem Löschen, zeigt die Pivot die Daten falsch an.

Habt ihr eine Idee/Lösung?

Luschi
03.09.2017, 14:48
Hallo rainerZZ,

ich importiere lieber in Excel Daten aus Access statt die Daten von Access heraus nach Excel, weil
- beim Import Excel eine formatierte Tabelle erstellt
- beim Export aus Access nach Excel passiert dies nicht

Nach dem Daten-Import in der formatierten Tabelle Daten händisch zu löschen ist keine gute Idee. Da mache lieber eine weiter Abfrage drauf und definiere, welchen Daten nicht übernommen werden soll.

So muß ich nur die 1/oder 2 Abfragen und anschließend die Pivor-Tabelle per Ribbon-Menü aktualisieren, oder mache es besser noch per Vba über einen Command-Button.

Gruß von Luschi
aus klein-Paris

rainerZZ
03.09.2017, 15:48
ich importiere lieber in Excel Daten aus Access statt die Daten von Access heraus nach Excel, weil
- beim Import Excel eine formatierte Tabelle erstellt
- beim Export aus Access nach Excel passiert dies nicht

Die Daten exportiere ich ja in eine unformatierte Tabelle und greife mir daraus die werte in eine formatierte Tabelle ab, das klappt ja wunderbar.

Nach dem Daten-Import in der formatierten Tabelle Daten händisch zu löschen ist keine gute Idee. Da mache lieber eine weiter Abfrage drauf und definiere, welchen Daten nicht übernommen werden soll.

In der formatierten Tabelle wird ja nichts gelöscht, sondern nur in der unformatierten, wo es egal ist.


Hat sonst jemand das beschriebene Problem mit der Pivot getestet und versteht, wieso die Pivot sich nicht korrekt aktualisiert?

Luschi
03.09.2017, 16:27
Hallo reinerZZ,

Die Daten exportiere ich ja...
wenn Du von Excel aus Daten holst, dann ist der Begriff Export einfach falsch.
Wieso besitzt Du 'unformatierte' Daten in der Tabelle - also startest Du doch den Daten-EXPORT von Access aus. Nur dann gibt es eine unformatierte Daten in der Exceltabelle. Bei einem Daten-IMPORT von Access-Daten erzeugt Excel seit Version 2003 immer eine intelligente (formatierte) Tabelle.
Ich habe mir das Beispiel angeschaut und da gibt es keine formatierte Tabelle drin.

Gruß von Luschi
aus klein-Paris

rainerZZ
03.09.2017, 21:18
Nochmal das Problem zusammengefasst:

-Ich exportiere aus Access heraus Daten in Excel in das Arbeitsblatt "Access_Import" in Zelle A11 (ist für das eigentliche Problem aber völlig unrelevant).
- Ich entferne den Inhalt in Zeile 14 von Spalte A bis T.
- Ich aktualisiere die Pivot-Tabelle (das Ergebnis NACH der Aktualisierung habe ich unter die eigentliche Pivot-Tabelle als Screenshot eingepflegt). Dort wird auf einmal "EEQ" mit 3 Modellen aufgelistet (die Werte sind alle leer) und das entspricht ja nicht der Datenbasis.

Meine Frage: Wieso wird das falsch dargestellt?

Luschi
03.09.2017, 23:49
Hallo rainerZZ,

um alte , eigentlich nicht mehr vorhandene PivotTable-Einträge zu löschen hast Du 2 Möglichkeiten:

- https://excelnova.org/2012/08/alte-elemente-in-pivot-tabelle-lschen/

- oder per Vba:Sub DeleteOldPivotItemsWB()
'Aktualisieren aller PivotTables in der AM und
'Löschen von nicht mehr verwendeten Einträgen in denPivot-Tabellen
'basierend auf MSKB (Q202232)
'Quelle: Thomas Ramel

Dim ws As Worksheet
Dim pt As PivotTable
Dim pf As PivotField
Dim pi As PivotItem

On Error Resume Next

If Val(Application.Version) > 9 Then
'ab Excel-XP
For Each ws In ActiveWorkbook.Worksheets
For Each pt In ws.PivotTables
pt.ManualUpdate = False
pt.PivotCache.Refresh
pt.PivotCache.MissingItemsLimit = xlMissingItemsNone
pt.ManualUpdate = True
Next pt
Next ws
Else
'bis Excel 2000
For Each ws In ActiveWorkbook.Worksheets
For Each pt In ws.PivotTables
pt.ManualUpdate = False
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
pt.ManualUpdate = True
Next
Next
End If
Set ws = Nothing
Set pt = Nothing
Set pf = Nothing
Set pi = Nothing
End SubGruß von Luschi
aus klein-Paris

PS: trotzdem ziehe ich den Daten-Import vor. Dabei hole ich mir die Daten aus Access, wobei ich
- in einer Userform die Filterbedingungen auswähle
- per ADOX eine Access-Abfrage manipuliere entsprechend dem Filter der UF
- per Query die Daten holen (nicht Power-Query)
TabelleX.ListObjects("blablabla").QueryTable.Refresh
BackgroundQuery:=False

Dabei werden die ankommenden Daten in eine intelligente Tabelle geschrieben und darauf basiert ja die Pivottabelle.
Inzwischen stelle ich aber wieder auf den DAO-Datenzugriff um, da MS das im Jahr 2000 gegebene Versprechen, daß ADODB/ADOX die Zukunft ist und DAO ablöst,. vergessen hat.
Doch heute sieht die Access-Welt ganz anders aus und DAO steht wieder in voller Blüte und wurde mächtig aufgebohrt. In DAO ist die Anzahl der Befehle einfach weniger.