Microsoft Excel

Herbers Excel/VBA-Archiv

Automatisch aktualisieren und kopieren | Herbers Excel-Forum


Betrifft: Automatisch aktualisieren und kopieren von: Ralf
Geschrieben am: 14.10.2008 14:21:26

Hallo Excel - Experten,

ich habe eine Excel - Datei mit zwei Tabellenblättern.
Nun möchte ich von Tab.1 aus die Pivottab. in Tab. 2 aktualisieren
und gleichzeitig die Felder ( in Tab.2 ) A 9 bis A 10.000 mit der 1
aus A 5 multiplizieren ( wegen den Zahlenformats :-)

Meine bisherigen Versuche waren leider nur von
"Laufzeitfehlermeldungen" gekrönt :-( 424, 1004,...

Hat hierzu jemand eine Idee ?
Bin echt für jeden Tipp dankbar !!!

Viele Grüße
Ralf

  

Betrifft: AW: Automatisch aktualisieren und kopieren von: fcs
Geschrieben am: 15.10.2008 09:33:53

Hallo Ralf,

die Zellen innerhalb einer Pivot-Tabelle können nicht durch Kopier- oder Rechenoperatioen geändert werden.

Du muss also entweder die Texte in den Ursprungsdaten in Zahlen konvertieren oder die in der Pivottabelle vorhandenen Text-Zahlen in einer Spalte außerhalb der Pivottabelle in Zahlen umwandeln.

Gruß
Franz

Beispielmakro (im VBA-Editor unter der Tabelle einfügen, die den Pivotbericht enthält)

Private Sub Worksheet_PivotTableUpdate(ByVal Target As PivotTable)
  Dim pvField As PivotField, rngZelle As Range
  Const intSpaltenOffset As Integer = 5
  Set pvField = Target.RowFields(1) '1. Zeilenfeld in Pivotbericht
  With pvField
    'Datenbereich des Zeilenfeldes formatieren
    .DataRange.NumberFormat = "#,##0.00"
    'Inhalte in Spalte für konvertierte Zahlen löschen
    Me.Columns(.DataRange.Column + intSpaltenOffset).ClearContents
    'Name des Zeielnfeldes eintragen
    .DataRange.Range("a1").Offset(-1, intSpaltenOffset).Value = .Name
    'Zahlenwerte konvertieren
    For Each rngZelle In .DataRange
      If IsNumeric(rngZelle) Then
        rngZelle.Offset(0, intSpaltenOffset).Value = CDbl(rngZelle.Value)
      End If
    Next
  End With
End Sub




  

Betrifft: AW: Automatisch aktualisieren und kopieren von: Ralf
Geschrieben am: 15.10.2008 11:10:59

Hallo Franz,

vielen Dank für Deine supergute Antwort !!!
Es ist mir ziiiiiiiiemlich peinlich, aber ich habe einen Fehler gemacht,
ich habe nämlich vergessen zu erwähnen, daß die Pivottabelle weiter rechts
in Tab.2 steht und die Spalte A ( wo die Zellen mit der 1 multipliziert werden sollen)
ganz normale Zelle sind ( keine Pivottabelle :-)

Es wäre ganz toll, wenn Du mir vor diesem Hintergrund nochmal antworten würdest !!!

Viele Grüße
Ralf


  

Betrifft: AW: Automatisch aktualisieren und kopieren von: fcs
Geschrieben am: 15.10.2008 12:11:03

Hallo Ralf,

dann muss das Makro etwa wie folgt aussehen. Wenn du immer mit 1 multiplizieren willst, dann kanst du die Multiplikation im Code natürlich auch weglassen.

Gruß
Franz

Private Sub Worksheet_PivotTableUpdate(ByVal Target As PivotTable)
  Dim pvField As PivotField, rngZelle As Range
  Set pvField = Target.RowFields(1) 'oder Target.RowFields("FeldName")
  'vorhandene Inhalte in Spalte 1 für konvertierte Zahlen löschen
  With Me
    .Range(.Cells(pvField.DataRange.Row, 1), .Cells(.Rows.Count, 1).End(xlUp)).ClearContents
  End With
  With pvField
    'Name des Zeilenfeldes in Spalte 1 eintragen
    Me.Cells(.DataRange.Row - 1, 1).Value = .Name
    'Zahlenwerte im Zeilebereich konvertieren und in Spalte 1 eintragen
    For Each rngZelle In .DataRange
      If IsNumeric(rngZelle) Then
        Me.Cells(rngZelle.Row, 1).Value = CDbl(rngZelle.Value) * Me.Range("A9")
      Else
        Me.Cells(rngZelle.Row, 1).Value = rngZelle.Value
      End If
    Next
  End With
End Sub




  

Betrifft: Danke Franz !!! von: Ralf
Geschrieben am: 15.10.2008 14:16:44

Hallo Franz,

vielen Dank für Deine erneute große Mühe !
Ich fürchte nur, ich versteh´s leider nicht und
daher fällt mir auch das anpassen mit den
Tabellennamen ziiiiiemlich schwer !

Vielleicht muß ich nochmal drüber schlafen :-)

Viele Grüße
Ralf


Beiträge aus den Excel-Beispielen zum Thema "Automatisch aktualisieren und kopieren"