0

データをグラフ化するマクロがあります。マクロのすべてが機能しますが、1 つの例外があります。x 軸のラベルを再指定したいのです。マクロはこれを行いますが、正しく行いません。場合によっては、カテゴリがフレーム シフトされ、他の場合には、カテゴリが完全に間違ってラベル付けされます。このマクロは、製品 ID ごとにデータをグラフ化し (製品 ID ごとに 1 つのグラフ)、x 軸のカテゴリを "グラフ データ" の列 F のラベルに変更することになっています。

よろしくお願いします。

以下は、グラフを作成し、その後 x 軸を変更するマクロの一部です。

Sub MakeCharts()
Dim sh As Worksheet
Dim rAllData As Range
Dim rChartData As Range
Dim cl As Range
Dim rwStart As Long, rwCnt As Long
Dim chrt As Chart

Set sh = ActiveSheet
ActiveSheet.Range("a1").Select
With sh

' Get reference to all data
    Set rAllData = .Range(.[A2], .[A2].End(xlDown)).Resize(, 5)
    ' Get reference to first cell in data range
    rwStart = 1
    Set cl = rAllData.Cells(rwStart, 1)
    Do While cl <> ""
        ' cl points to first cell in a station data set
        ' Count rows in current data set
        rwCnt = Application.WorksheetFunction. _
           CountIfs(rAllData.Columns(1), cl.Value)
        ' Get reference to current data set range
        Set rChartData = rAllData.Cells(rwStart, 1).Resize(rwCnt, 5)
        ' Create Chart next to data set
        Set chrt = .Shapes.AddChart(xlLineMarkers, _
           rChartData.Width, .Range(.[A2], cl).Height).Chart
        With chrt
            .SetSourceData Source:=rChartData.Offset(0, 1).Resize(, 4)
            ' -----> Set any chart properties here <-----

            ' Add Title
            .SetElement msoElementChartTitleCenteredOverlay
            .ChartTitle.Caption = cl.Value

            'Change chart name
            .Parent.Name = cl.Value

            'Remove Legend
            .SetElement (msoElementLegendNone)

            ' Adjust plot size to allow for title
            .PlotArea.Height = .PlotArea.Height - .ChartTitle.Height
            .PlotArea.Top = .PlotArea.Top + .ChartTitle.Height

            'Change the x-axis to a more organized set
            .SeriesCollection(1).XValues = "='Chart Data'!$F$2:$F$1048576"

            'Set Max and Min for charts
            .Axes(xlValue).MinimumScale = Sheets("Chart Data").Range("K1")
            .Axes(xlValue).MaximumScale = Sheets("Chart Data").Range("K2")

            'Adjust x-axis to tilt 45 degrees top left to bottom right
            .Axes(xlCategory).TickLabels.Orientation = 45



        End With


        ' Get next data set
        rwStart = rwStart + rwCnt
        Set cl = rAllData.Cells(rwStart, 1)
    Loop

End With
4

1 に答える 1

0

「x 軸をより整理されたセットに変更する」の下で、次のコードを使用しました。

.SeriesCollection(1).XValues = "='Chart Data'!" & rChartData.Offset(, 5).Resize(, 1).Address
于 2013-02-21T15:05:06.883 に答える