2013-11-27 4 views
0

Я пытаюсь автоматизировать создание графиков в Excel с помощью макроса. В основном у меня много данных (41 столбец, начиная с столбца C до столбца AQ), каждый из которых содержит другое имя. В одном столбце есть две серии в двух разных строках строк (одна из строк 3-8, одна из строк от 12 до 17).Создание макроса Excel для нескольких графиков с одинаковыми значениями x, но разными значениями y

Я хочу один граф за столбец, поэтому в общей сложности у меня будет 41 график. Каждый график содержит две серии. В столбце B указаны значения по оси X, и это для каждого графика одинаково.

Целью является создание следующего цикла с значениями оси Y и их одновременное создание.

Я пробовал кодирование первой части (просто создав один граф с по оси х значениями из B3: B8 и по оси Y значения из C3: C8, а вторая серия - всего несколько строк вниз.

Я получаю сообщение об ошибке, и я не понимаю, почему, я пробовал разные подходы, но он никогда не работает. Ошибка находится в этой строке: ActiveChart.SeriesCollection (1) .Values ​​= Range (Cells (3, 3)), Cells (8, 3)). Значение

кто-нибудь есть какие-либо идеи, что может быть неправильно или как решить эту проблему?

Sub Macro5() 

    ActiveSheet.Shapes.AddChart.Select 
    ActiveChart.ChartType = xlXYScatterSmoothNoMarkers 
    ActiveChart.SeriesCollection.NewSeries 
    ActiveChart.SeriesCollection(1).Name = "='Blad1'!$A$1" 
    ActiveChart.SeriesCollection(1).XValues = "='Blad1'!$B$3:$B$8" 
    ActiveChart.SeriesCollection(1).Values = Range(Cells(3, 3), Cells(8, 3)).Value 
    ActiveChart.SeriesCollection.NewSeries 
    ActiveChart.SeriesCollection(2).Name = "='Blad1'!$A$10" 
    ActiveChart.SeriesCollection(2).XValues = "='Blad1'!$B$12:$B$17" 
    ActiveChart.SeriesCollection(2).Values = Range(Cells(12, 3), Cells(17, 3)).Value 
    ActiveChart.ChartType = xlXYScatterSmoothNoMarkers 
    ActiveChart.Axes(xlValue).MajorGridlines.Select 
    Selection.Delete 
    ActiveChart.SeriesCollection(1).Trendlines.Add 
    ActiveChart.SeriesCollection(1).Trendlines(1).Select 
    Selection.DisplayEquation = True 
    Selection.DisplayRSquared = True  
    ActiveChart.SeriesCollection(2).Trendlines.Add 
    ActiveChart.SeriesCollection(2).Trendlines(1).Select 
    Selection.DisplayEquation = True 
    Selection.DisplayRSquared = True 

End Sub 
+0

, что это ошибка, что вы получаете? –

ответ

0

Диапазон не квалифицирован, и массив, который вы преобразовываете его в использование .Values, вероятно, не понимает Excel.

Изменить

ActiveChart.SeriesCollection(1).Values = Range(Cells(3, 3), Cells(8, 3)).Value 

в

ActiveChart.SeriesCollection(1).Values = Worksheets("Blad1").Range(Cells(3, 3), Cells(8, 3)) 

или

ActiveChart.SeriesCollection(1).Values = "='Blad1'!$C$3:$C$8" 
+0

спасибо! это сделал трюк :-). – blaaat

0

В excel 2007, SeriesCollection.Add() ожидает диапазон.

+0

Да. Я всегда использую Set NewSrs = SeriesCollection.NewSeries, а затем NewSrs для добавления данных и применения форматирования. –

Смежные вопросы