Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Вроде бы простая, но для меня неразрешимая проблема с графиками.

30K
16 марта 2009 года
asmel
50 / / 05.03.2009
Вторые сутки не могу понять в чем дело. При помощи макроса выстраиваю в Exelе график, после того, как он появился на рабочем листе, хочу добавить в этот же график еще одну линию. Линия добавляется, но значения новой линии суммируются с предыдущей линией. В чем дело! Помогите пожалуйста.
Код:
'Начало графика
 Charts.Add
 Charts(1).Activate
 
 'Построение графика указанного вида
 ActiveChart.ChartType = xlLineStacked 'xlColumnClustered
   
 'шкала х
 ActiveChart.SeriesCollection(1).XValues = Sheets(m_list). _
 Range(Sheets(m_list).Cells(2, 2), Sheets(m_list).Cells(97, 2))

'Название графика
 ActiveChart.SeriesCollection(1).Name = Sheets(m_list).Cells(2, 5)

'размещение графика на листе "Лист2" (m_list)
ActiveChart.Location Where:=xlLocationAsObject, Name:=m_list

'Разактивация графического окна
ActiveWindow.Visible = False

Добавка еще одной линии в существующий график
ActiveSheet.ChartObjects.Select
Selection.Activate
ActiveChart.SeriesCollection.NewSeries

'новый график(почему-то графики суммируются !!!!)
ActiveChart.SeriesCollection(2).Values = Sheets(m_list). _
 Range(Sheets(m_list).Cells(2, 7), Sheets(m_list).Cells(97, 7))
275
16 марта 2009 года
pashulka
985 / / 19.09.2004
 
Код:
.SeriesCollection(1).Values = Worksheets(m_list).Range("B2:B97")

.SeriesCollection(2).Values = Worksheets(m_list).Range("G2:G97")


или сразу построить график на основании нужного диапазона ячеек

 
Код:
With Worksheets(m_list).ChartObjects _
     .Add(Width:=250, Height:=150, Left:=0, Top:=0).Chart
     .ChartType = xlLineStacked 'xlColumnClustered
     .SetSourceData Source:=Worksheets(m_list).Range("B2:B97,G2:G97")

     .SeriesCollection(1).Name = Worksheets(m_list).Range("E2")
End With


Если же проблема заключается в том, что подписи находятся в столбце , а числа в столбце [G], то :

 
Код:
With Worksheets("Лист2").ChartObjects.Add(0, 0, 250, 150).Chart
     .ChartType = xlLineStacked 'xlColumnClustered
     With .SeriesCollection.NewSeries
          .Name = Worksheets("Лист2").[E2]
          .Values = Worksheets("Лист2").[G2:G97]
          .XValues = Worksheets("Лист2").[B2:B97]
     End With
End With


Тоже самое, но с использованием кодового имени рабочего листа (которое, конечно же, может отличаться от нижеприведённого)

 
Код:
With Лист2.ChartObjects.Add(0, 0, 250, 150).Chart
     .ChartType = xlLineStacked 'xlColumnClustered
     With .SeriesCollection.NewSeries
          .Name = Лист2.[E2]
          .Values = Лист2.[G2:G97]
          .XValues = Лист2.[B2:B97]
     End With
End With
30K
17 марта 2009 года
asmel
50 / / 05.03.2009
Спасибо PASHULKA! Проблема в том, чтобы правильно добавить линию на уже существующий и торчащий на активном листе график. По Вашим кодам, либо строится отдельный график для новой линии, либо надо сразу указывать оба диапазона для построения на вновь создаваемом графике. При добавке линии в существующий график, выстраиваемая линия суммируется с предыдущей. Какой в этом смысл не понятно, а главное меня это не устраивает. Еще раз спасибо.

Разобрался!!! Я неправильно указывал тип линии, надо было xlLine, а я делал xlLineStacked. PASHULKA спасибо за красивый код!
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог