Laden...

Excel Diagramm mit Sekundärachse erstellen

Erstellt von stb_abe vor 10 Jahren Letzter Beitrag vor 10 Jahren 3.101 Views
S
stb_abe Themenstarter:in
11 Beiträge seit 2010
vor 10 Jahren
Excel Diagramm mit Sekundärachse erstellen

Hallo Miteinander,

Ich möchte ein paar Messdaten, die ich ich während des Prozesses in einem Array ablege, in einem Excel Diagramm darstellen und speichern.
Das übertragen der Werte in ein Excel und das erstellen des Diagramm ist bereits erledigt und funktioniert einwandfrei.
Da aktuell nur eine Y-Achse (Vertikal) dargestellt wird und eine Tabellenspalte (Kraft) viel größere Werte (z.B. 1000) besitzt, als die anderen beiden Tabellenspalten (z.B. 10), ist die Skalierung des Diagramm nicht gerade perfekt. Nun möchte ich, dass im Diagramm die Tabellespalte (Kraft) als Sekundärachse dargestellt wird.
Wie kann nun die Sekundärachse hinzugefügt werden und an die gewünchte Tabellenspalte zugewiesen werden?

Aktueller Code: Erstellen des Diagramms


            // Name des dritten Arbeitsblattes
            myExcelWorkSheet3 = (Excel.Worksheet)myExcelWorkbook.Sheets["Diagramm"];

            // Diagramm erstellen
            Excel.Range chartRange;
            Excel.ChartObjects xlCharts = (Excel.ChartObjects)myExcelWorkSheet3.ChartObjects(Type.Missing);
            Excel.ChartObject myChart = (Excel.ChartObject)xlCharts.Add(10, 50, 650, 400);
            Excel.Chart chartPage = myChart.Chart;

            chartRange = myExcelWorkSheet2.get_Range("B6", "E" +(i+7).ToString());      // Daten für Diagramm einlesen


            //Achsen Beschriftung X-Achse
            Excel.Axis xAchse = (Excel.Axis)chartPage.Axes(Excel.XlAxisType.xlCategory, Excel.XlAxisGroup.xlPrimary);
            xAchse.HasTitle = true;
            xAchse.AxisTitle.Text = "Zeit [s]";

            //Achsen Beschriftung Y-Achse
            Excel.Axis yAchse = (Excel.Axis)chartPage.Axes(Excel.XlAxisType.xlValue, Excel.XlAxisGroup.xlPrimary);
            yAchse.HasTitle = true;
            yAchse.AxisTitle.Text = "Weg [mm], Temperatur [°C]";

            chartPage.SetSourceData(chartRange, misValue);                            // Datenübergabe an Diagramm
            chartPage.ChartType = Excel.XlChartType.xlLine;                             // Diagramm Type

Habe nun das die Änderung der Sekundärachse im Excel mit der Funktion "Makro aufzeichnen" gespeichert (in VB). Leider bin ich daraus noch nicht schlau geworden, wie ich die Funktion " FullSeriesCollection" in C# verwenden kann.


Sub Sekundärachse()
'
' Sekundärachse Makro
'

'
    ActiveChart.FullSeriesCollection(2).AxisGroup = 2
    ActiveSheet.ChartObjects("Diagramm 1").Activate
    ActiveChart.FullSeriesCollection(2).Select
End Sub

Habt ihr dazu eine Idee?

Vielen Dank.

S
stb_abe Themenstarter:in
11 Beiträge seit 2010
vor 10 Jahren

Habe nun die Lösung selbst herausgefunden:



//Auswahl der gewünschten Reihe als Sekundärachse (Y-Achse)
Excel.Series series2 = (Excel.Series)chartPage.FullSeriesCollection(2); //2=Reihe2
series2.Select();
series2.AxisGroup = Excel.XlAxisGroup.xlSecondary;                          //Sekundärachse

Je nach Wunsch kann noch die zweite X-Achse hinzufügt werden:


chartPage.set_HasAxis(Excel.XlAxisType.xlCategory, Excel.XlAxisGroup.xlSecondary, true);