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

Diagramm SeriesCollection(1).Values lesen und bear

Diagramm SeriesCollection(1).Values lesen und bear
27.02.2013 21:38:14
Muge
Für folgende Aufgabe suche ich eine Lösung:
Der Anzeigebereich mehrerer Diagramme soll wie folgt verändert werden.
Sub Makro6()
ActiveSheet.ChartObjects("Diagramm 1").Activate
ActiveChart.SeriesCollection(1).XValues = "=Tabelle4!$C$7:$C$120"
ActiveChart.SeriesCollection(1).Values = "=Tabelle4!$aD$7:$aD$120"
End Sub

Nun wird allerdings die Datei auch mit Diagrammen und -mit unter - auch Spalten erweitert.
Daher möchte ich die Adresse, z.B aus
„SeriesCollection(1).XValues“ auslesen,
die Spalte ermitteln
um zusammen mit den neu vergebenen Zeilen die neuen Adressen zu kreieren. Aber wie?
Zwar kann ich
Dim X
X= ActiveChart.SeriesCollection(1).Values
Allerdings kann ich x nicht weiterverarbeiten -zumal ich auch nicht weiß welchem Typ x entspricht.?
Auf die Lösung freue ich mich jetzt schon.
Danke und Gruß
Muge

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Diagramm SeriesCollection(1).Values lesen und bear
28.02.2013 08:30:51
fcs
Hallo Muge,
hier mein Lösungsvorschlag.
Das Makro löst die Formel der Datenreihe in die Einzelbestandteile auf, ermittelt die Letzte Datenzeile der Y-Werte-Spalte und aktualisiert dann die Formel der Datenreihe.
Gruß
Franz
Sub Diagramm_aktualisieren()
Dim objChart As Chart
Dim objSerie As Series
Dim wks As Worksheet
Dim strRangeX As String, strRangeY As String
Dim lngSpalteX As Long, lngSpalteY As Long
Dim rngRangeX As Range, rngRangeY As Range
Dim lngZeile_1 As Long, lngZeile_L As Long
Dim strTab As String, wksQuelle As Worksheet
Dim strSourceData As String
Set wks = ActiveSheet
Set objChart = wks.ChartObjects(1).Chart
Set objSerie = objChart.SeriesCollection(1)
With objSerie
strSourceData = .FormulaLocal
strRangeX = VBA.Split(strSourceData, ";")(1)
strRangeY = VBA.Split(strSourceData, ";")(2)
strTab = Left(strRangeX, InStr(strRangeX, "!") - 1)
If Left(strTab, 1) = "'" Then
strTab = Mid(strTab, 2, Len(strTab) - 2)
End If
strRangeX = Mid(strRangeX, InStr(strRangeX, "!") + 1)
strRangeY = Mid(strRangeY, InStr(strRangeY, "!") + 1)
Set wksQuelle = ActiveWorkbook.Worksheets(strTab)
With wksQuelle
lngZeile_1 = .Range(strRangeY).Row
lngSpalteX = .Range(strRangeX).Column
lngSpalteY = .Range(strRangeY).Column
lngZeile_L = .Cells(.Rows.Count, lngSpalteY).End(xlUp).Row
Set rngRangeX = .Range(.Cells(lngZeile_1, lngSpalteX), _
.Cells(lngZeile_L, lngSpalteX))
Set rngRangeY = .Range(.Cells(lngZeile_1, lngSpalteY), _
.Cells(lngZeile_L, lngSpalteY))
End With
.FormulaLocal = VBA.Split(strSourceData, ";")(0) & ";" _
& "'" & wksQuelle.Name & "'!" & rngRangeX.AddressLocal & ";" _
& "'" & wksQuelle.Name & "'!" & rngRangeY.AddressLocal & ";" _
& VBA.Split(strSourceData, ";")(3)
End With
End Sub

Anzeige
AW: Diagramm SeriesCollection(1).Values lesen und bear
28.02.2013 10:27:50
Luschi
Hallo Muge,
manchmal frage ich mich, ob sich beim Wechsel der Office-Version überhaupt jemand mit den Neuerungen dieser Version beschäftigt. Das ging schon in Excel 2003 los, als man die Listenformatierung von Tabellenbereichen einführte. Diese wuchsen automatisch mit, wenn man unterhalb der Liste weitere Daten anfügte oder rechts davon neue Spalteninhalte schrieb.
Ab Office 2007 hat man dieses System noch erweitert und nennt sich von da an 'als Tabelle formatieren".
Dieser Bereich erhält einen Namen, den man auch umbenennen kann aber der dahinterliegende Zellbezug ist geschützt. Kommen jetzt Daten unterhalb oder rechs daneben dazu, wird der Rangebereich dieser Formatvorlage automatisch erweitert.
Auf der Grundlage dieses so speziell formatierten Tabellenbereiches kann man nun die Pivottabelle aufbauen. Ändert sich der Ausgangsdatenbestand, braucht man nur noch die Pivottabelle aktualisieren und die neuen Spalten sind in der Feldliste vorhanden und müssen nur noch aktiviert werden.
Neue Zeilen werden automatisch in der Pivotliste übernommen.
Hier könnte man natürlich auch per Vba ran aber das sind dann nur noch wenige Vba-Zeilen.
In Excel 2013 ist man sogar noch einen (nein zwei!) Schritt(e) weiter gegangen. Ist der Ausgangsbereich so formatiert, kann man sofort ein Diagramm mit Live-Vorschaubild erstellen. Erkennt Excel, daß Daten zusammengefaßt werden können/müssen, wird die dazugehörige Pivot-Tabelle automatisch in einem neuen Tabellenblatt erstellt!!! - und die Grafik ist fertig. Ein bischen Feinjustierung kann aber nie schaden.
Ich habe mal auf der Grunlage der Ausgangsdaten eine Pivottabelle erstellt und daraus ein _ Diagramm gemacht. Anschließend wurde per Makroaufzeichnung eine neue Spalte (mwsdt) in den Ausgangsdaten angefügt und die Werte dazu berechnet. Durch den Aktualisierungsbefehl der Pivottabelle und der Zuweisung des neuen Feldes zum Wertebereich war auch die Grafik auf dem neuesten Stand. Hier die aufgezeichneten Befehle:

Sub Makro6()
'neue rechte Überschrift
Range("G3").Select
ActiveCell.FormulaR1C1 = "mwst"
'neue Berechnungsformel für Zelle 'G4'
Range("G4").Select
ActiveCell.FormulaR1C1 = "=[@gp]*R1C10"
'Entertaste gedrückt
Range("G5").Select
'alle anderen Formeln für die darunterlierenden Zellen
'wurden von Excel automatisch aufgefüllt
'Tabelle mit der Pivottabelle
Sheets("Tabelle6").Select
'Cursor in Pivottabelle gesetzt
Range("B6").Select
'hat excel selbt reingeschrieben
Selection.ShowDetail = True
'Pivottabelle aktualisiert durch drücken des Ribbon-Buttons
ActiveSheet.PivotTables("PivotTable42").PivotCache.Refresh
'mwst-Checkbox in der Feldliste amgeklickt
ActiveSheet.PivotTables("PivotTable42").AddDataField ActiveSheet.PivotTables( _
"PivotTable42").PivotFields("mwst"), "Summe von mwst", xlSum
ActiveWorkbook.Save
'und alles war fertig
End Sub
Da die Pivottabelle und die Grafik schon erstellt sind, kann das Excel 2007 auch.
Gruß von Luschi
aus klein-Paris

Anzeige
AW: Diagramm SeriesCollection(1).Values lesen und bear
28.02.2013 19:10:06
Muge
Hallo Luschi
Danke für Deine Mühe!
Das Ziel ist allerdings nicht nur die neu hinzukommenden Daten auch mit auszugeben, sonder auch den Bereich wählen zu können. Also eine Art Lupe die übe die Datenzeilen geschoben wird.
Trotzdem sind Deine Ausführungen sehr interessant.
Schade ist nur das ich Dein kleines Programm nicht zum Laufen gebracht habe.
Hängt sich in der Zeile:
ActiveCell.FormulaR1C1 = "=[@gp]*R1C10"
auf. Mich hätte die Tabelle doch interessiert, da ich Pivottabelle nur als Daten Verdichtungsinstrument kenne.
Zu Deiner Kritik:
Ja, ich muss zugeben das ich kein Profi bin. Was ich in Excel kann habe ich mir nach und nachzusammengesucht und vieles ist mir unbekannt! Tatsächlich ist es so, dass wenn ich etwas über Neuerungen in den Programmen lese, ich das oft nicht überreisen und die Tragweite nicht erkennen kann.
Bleibt mir nur der Trost das nicht jeder ein Genie sein kann!
Gruß
Muge

Anzeige
AW: Diagramm SeriesCollection(1).Values lesen und bear
28.02.2013 18:51:11
Muge
Hallo fcs
Mehr als ich zu hoffen gewagt habe.
Noch ein paar Daten Übergeben, in die Programmzeilen einfügen und fertig ist das Unterprogramm!
Fielen Danke
Du ersparst mir damit ein aufwändiges erstellen von zig Tabellen und vor allem die Pflege der Tabellendaten.
Gruß
Muge

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige