Excel vba chart - возникают проблемы при разбиении ряда на создание нескольких рядов - PullRequest
0 голосов
/ 31 октября 2018

Я записал макрос для запуска диаграммы, где ряд не соответствует ожидаемому это изменение серии и категории на графике

    Sub Macro13()

 ' Macro13 Macro
 '
 ' Keyboard Shortcut: Ctrl+b
 Dim myString As String
myString = Selection.Address
ActiveSheet.Shapes.AddChart2(227, xlLineMarkers).Select
ActiveChart.SetSourceData Source:=Range(myString),PlotBy:=xlRows
ActiveChart.Legend.Select
Selection.Delete
End Sub

когда я удалил график и запустил макрос. Получил следующий график

enter image description here

Но хотел следующий график enter image description here

Месяц-год должен быть на оси х (категория), а серии должны быть 0,1,2,3 и т. Д. Следующие данные

series  Sep-10  Oct-10  Nov-10  Dec-10  Jan-11  Feb-11
0   7   8   90  80  110 1
1   5   1   18  36  97  1
2   5   1   18  36  97  1
3   5   1   18  36  97  1
4   5   1   18  36  97  1
5   5   1   18  36  97  1
6   5   1   18  36  97  1
7   5   1   18  36  100 1
8   5   1   18  40  97  1
9   5   7   18  36  97  1
10  5   1   89  36  97  1
11  5   1   18  36  97  1
12  5   1   18  36  97  1
 ActiveChart.SetSourceData Source:=Range("Sheet1!$A$1:$G$14") 'was changed to 
ActiveChart.SetSourceData Source:=Range("Sheet1!$A$1:$G$14"), PlotBy:=xlRows then it added the series name to it but got like this with series included in x-axis

enter image description here

Когда я записывал макрос, это была диаграмма, которую я выбрал и удалил легенду. enter image description here

Ответы [ 2 ]

0 голосов
/ 31 октября 2018

Попробуйте это.

Sub test()
    Dim obj As ChartObject, Cht As Chart
    Dim Ws As Worksheet
    Dim Srs As Series
    Dim rngDB As Range, rngHead As Range
    Dim rng As Range

    Set Ws = ActiveSheet
    With Ws
        Set rngHead = .Range("b1", "g1")
        Set rngDB = .Range("a2", "a14")
    End With
    Set obj = Ws.ChartObjects.Add(400, 200, 600, 400)
    Set Cht = obj.Chart
    With Cht
        .HasLegend = False
        .HasTitle = True
        .ChartType = xlLineMarkers
        With .ChartTitle
            .Characters.Text = "Chart Title"
            .Characters.Font.Size = 12
        End With
        For Each rng In rngDB
            Set Srs = .SeriesCollection.NewSeries
            With Srs
                .Name = rng
                .XValues = rngHead
                .Values = rng.Offset(, 1).Resize(1, 6)
            End With
        Next rng
    End With
End Sub

Речь идет о графике, который формируется в соответствии с динамическим диапазоном.

Sub setChart()
    Dim obj As ChartObject, Cht As Chart
    Dim Ws As Worksheet
    Dim Srs As Series
    Dim rngDB As Range, rngHead As Range
    Dim rng As Range
    Dim rngChart As Range
    Dim r As Integer, c As Integer

    Set Ws = ActiveSheet
    Set rngChart = Selection
    r = rngChart.Rows.Count - 1
    c = rngChart.Columns.Count - 1
    If r < 1 Or c < 1 Then
        MsgBox "set the range correctly!"
        Exit Sub
    End If


    With rngChart
        Set rngHead = .Range("b1").Resize(1, c)
        Set rngDB = .Range("a2").Resize(r)
    End With
    Set obj = Ws.ChartObjects.Add(400, 200, 600, 400)
    Set Cht = obj.Chart
    With Cht
        .HasLegend = False
        .HasTitle = True
        .ChartType = xlLine
        With .ChartTitle
            .Characters.Text = "Chart Title"
            .Characters.Font.Size = 12
        End With
        For Each rng In rngDB
            Set Srs = .SeriesCollection.NewSeries
            With Srs
                .Name = rng
                .XValues = rngHead
                .Values = rng.Offset(, 1).Resize(1, c)
            End With
        Next rng
    End With
End Sub
0 голосов
/ 31 октября 2018
  1. Убедитесь, что ячейка в левом верхнем углу пуста

Blank

  1. Начните запись вашего макроса
  2. Выберите диапазон данных

Select

  1. Вставьте стиль графика по вашему выбору

Pick

  1. Щелкните правой кнопкой мыши на графике и выберите «Выбрать данные».

Select Data

  1. Левый клик на кнопке переключения строки / столбца

Switch

  1. Отформатируйте график по своему вкусу
  2. Добавить текст в верхний левый угол

Add

  1. Остановите запись
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...