Страницы: 1
RSS
Макрос построения графиков по данным других листов
 
Добрый день уважаемые форумчане! Столкнулся с проблемой построения нескольких графиков по данным с разных листов.
На итоговом листе graf строятся графики по данным с листов list1 и list2. В графике со второго листа (list2) EXCEL неправильно выставляет вертикальную шкалу и, соответственно, неправильно строятся сами графики
Код
Sub graf_1()
    Worksheets("list1").Select
    Application.ScreenUpdating = False: On Error Resume Next
    Dim ra_n1 As Range: Set ra_n1 = Range(Worksheets("list1").Cells(2, 1), Range("A" & Rows.Count).End(xlUp))
    Dim ra_1 As Range: Set ra_1 = Range(Worksheets("list1").Cells(2, 2), Range("D" & Rows.Count).End(xlUp))
 '   Dim ra_2 As Range: Set ra_2 = Range(Worksheets("list1").Cells(2, 5), Range("G" & Rows.Count).End(xlUp))
 '   Dim ra_3 As Range: Set ra_3 = Range(Worksheets("list1").Cells(2, 8), Range("I" & Rows.Count).End(xlUp))

    ChartTop = 20
    
    txt1 = "Title 1"
 '   txt2 = "Title 2"
 '   txt3 = "Title 3"
    
    CreateChart ra_n1, ra_1, ChartTop, txt1: ChartTop = ChartTop + 220
 '   CreateChart ra_n1, ra_2, ChartTop, txt2: ChartTop = ChartTop + 220
 '   CreateChart ra_n1, ra_3, ChartTop, txt3: ChartTop = ChartTop + 220
    
    
    Worksheets("list2").Select
    Dim ra_n2 As Range: Set ra_n2 = Range(Worksheets("list2").Cells(2, 1), Range("A" & Rows.Count).End(xlUp))
    Dim ra_4 As Range: Set ra_4 = Range(Worksheets("list2").Cells(2, 2), Range("E" & Rows.Count).End(xlUp))
    
    txt4 = "Title 4"
 
    CreateChart ra_n2, ra_4, ChartTop, txt4: ChartTop = ChartTop + 220
    
    Worksheets("graf").Cells(1, 1).Select
    
End Sub


Sub CreateChart(ByRef ra1 As Range, ByRef ra2 As Range, ByVal ChartTop, ByVal Caption)
    Dim MyCh As Chart    ' (Left, Top, Width, Height)
    Set MyCh = ra1.Parent.ChartObjects.Add(10, ChartTop, 600, 200).Chart
    MyCh.SeriesCollection.Add Source:=ra2, RowCol:=xlColumns    'Добавить ряды данных
    MyCh.ChartType = xlLineStacked    ' тип диаграммы
    MyCh.Axes(xlCategory).CategoryNames = ra1    'Изменить ось категорий
    MyCh.HasLegend = True ' легенда
    MyCh.HasTitle = True:    MyCh.ChartTitle.Characters.Text = Caption ' заголовок
    MyCh.Location Where:=xlLocationAutomatic, Name:="graf"
    
End Sub

В чем ошибка ?
Изменено: Ferrit - 07.05.2015 00:18:47
 
Может, исходник облегчит процесс ?
 
На одной картинке выводятся два графика. Второй на вертикальной оси отображается неправильно.
Код
Private Sub CommandButton1_Click()
Dim oChart As Chart
Set oChart = ActiveWorkbook.Charts.Add(, ActiveSheet)
oChart.SetSourceData (Sheets("List1").Range("B1:B10,C1:C10"))

oChart.Axes(xlCategory).CategoryNames = Sheets("List1").Range("A1:A10")
oChart.ChartType = xlLineStacked

oChart.Location xlLocationAsObject, "graf"
End Sub
Ошибка аналогичная?  В чем?
 
(по последнему файлу)
ошибка, скорее всего, здесь - название листа... да и диапазон не весь берёте
Код
oChart.SetSourceData (Sheets("List1").Range("B1:B10,C1:C10"))
...
oChart.Axes(xlCategory).CategoryNames = Sheets("List1").Range("A1:A10")
не оптимизировала ваш макрос... использовала такой (см вложение)
Изменено: JeyCi - 07.05.2015 21:10:21
чтобы не гадать на кофейной гуще, кто вам отвечает и после этого не совершать кучу ошибок - обратитесь к собеседнику на ВЫ - ответ на ваш вопрос получите - а остальное вас не касается (п.п.п. на форумах)
 
Код
oChart.ChartType = xlLine
фрилансер Excel, VBA - контакты в профиле
"Совершенствоваться не обязательно. Выживание — дело добровольное." Э.Деминг
 
:) смотрите лучше ответ ikki   - он лучше расшифровал вашу ошибку...
мой файл можете посмотреть из любопытства... успехов
Изменено: JeyCi - 07.05.2015 19:44:02
чтобы не гадать на кофейной гуще, кто вам отвечает и после этого не совершать кучу ошибок - обратитесь к собеседнику на ВЫ - ответ на ваш вопрос получите - а остальное вас не касается (п.п.п. на форумах)
 
Урррааааа!!! Заррработало!!! Как мало надо для счастья! Спасибо ikki и JeyCi !  
Страницы: 1
Читают тему
Наверх