Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.06.2010, 13:24   #1
Алёна
Форумчанин
 
Аватар для Алёна
 
Регистрация: 11.03.2007
Сообщений: 149
Восклицание построение графиков

привет, друзья! подскажите как с помощью макроса построить простой график(диаграмму) по например, первым двум стоблцам, причем кол-во строк может меняться на листе.Заранее спасибо всем откликнувшимся.
Если это глупо, но работает, значит это не глупо.
Алёна вне форума Ответить с цитированием
Старый 18.06.2010, 17:27   #2
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

А в чём сложность?
Я в таких случаях пользуюсь макрорекордером, а потом убираю из кода лишнее.

Запишите макрос, выложите код, скажите, как надо определять диапазон данных для диаграммы, - и мы подправим код под ваши нужды.
EducatedFool вне форума Ответить с цитированием
Старый 22.06.2010, 09:45   #3
Алёна
Форумчанин
 
Аватар для Алёна
 
Регистрация: 11.03.2007
Сообщений: 149
По умолчанию

Цитата:
Сообщение от EducatedFool Посмотреть сообщение
А в чём сложность?
Я в таких случаях пользуюсь макрорекордером, а потом убираю из кода лишнее.

Запишите макрос, выложите код, скажите, как надо определять диапазон данных для диаграммы, - и мы подправим код под ваши нужды.
спасибо, что отозвались!
выкладываю:
Код:
Sub Макрос1()
'
' Макрос3 Макрос
'

'
    Range("A2:A11,B2:B11").Select// здесь разное кол-во записей может быть
    Range("B2").Activate
    ActiveSheet.Shapes.AddChart.Select
    ActiveChart.SetSourceData Source:=Range("'101'!$A$2:$A$11;'101'!$B$2:$B$11")
    ActiveChart.ChartType = xlLine
    ActiveWindow.ScrollRow = 2//надо передвинуть график на столько пунктов вниз сколько записей(под набор записей получается он должен встать)
    ActiveWindow.ScrollRow = 3
    ActiveWindow.ScrollRow = 4
    ActiveWindow.ScrollRow = 5
    ActiveWindow.ScrollRow = 6
    ActiveWindow.ScrollRow = 5
    ActiveWindow.ScrollRow = 4
    ActiveWindow.ScrollRow = 3
    ActiveWindow.ScrollRow = 2
    ActiveWindow.ScrollRow = 1
    Range("A2:A11,C2:C11").Select
    Range("C2").Activate
    ActiveSheet.Shapes.AddChart.Select
    ActiveChart.SetSourceData Source:=Range("'101'!$A$2:$A$11;'101'!$C$2:$C$11")
    ActiveChart.ChartType = xlLine
    ActiveWindow.SmallScroll Down:=3
    ActiveWindow.ScrollRow = 8
    ActiveWindow.ScrollRow = 7
    ActiveWindow.ScrollRow = 5
    ActiveWindow.ScrollRow = 4
    ActiveWindow.ScrollRow = 2
    ActiveWindow.ScrollRow = 1
    Range("A2,A2:A11,D2:D11").Select
    Range("D2").Activate
    ActiveSheet.Shapes.AddChart.Select
    
End Sub
тема еще актуальна, помогите плиз!!!!
Если это глупо, но работает, значит это не глупо.

Последний раз редактировалось Stilet; 24.06.2010 в 09:47.
Алёна вне форума Ответить с цитированием
Старый 23.06.2010, 21:07   #4
R Dmitry
Форумчанин
 
Регистрация: 07.03.2010
Сообщений: 796
По умолчанию

Цитата:
Сообщение от Алёна Посмотреть сообщение
тема еще актуальна, помогите плиз!!!!
из вашего вопроса мало что понятно
но посоветую вам этот ресурс
все что связано с chart там хорошо дано
http://www.intuit.ru/department/office/vbaexcel/3/
Логика?!.... она где то рядом... E_mail: dg_rusak@mail.ru Если спасибо мало: Яндекс . Деньги - 41001731366021 WM R269866874234
R Dmitry вне форума Ответить с цитированием
Старый 23.06.2010, 23:35   #5
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Прикрепите пример файла с диаграммами, которые надо построить.
(а то ваш макрос почему-то не сработал ни в Excel 2003, ни в Excel 2007)
Сколько надо создать диаграмм?
EducatedFool вне форума Ответить с цитированием
Старый 24.06.2010, 08:09   #6
Алёна
Форумчанин
 
Аватар для Алёна
 
Регистрация: 11.03.2007
Сообщений: 149
По умолчанию

Цитата:
Сообщение от EducatedFool Посмотреть сообщение
Прикрепите пример файла с диаграммами, которые надо построить.
(а то ваш макрос почему-то не сработал ни в Excel 2003, ни в Excel 2007)
Сколько надо создать диаграмм?
надо создать по 3 диаграммы на каждом листе (всего 8 листов будет), диапазоны совпадают на всех листах (по кол-ву записей).
Вложения
Тип файла: rar Графики цен на недвижимость.rar (5.9 Кб, 54 просмотров)
Если это глупо, но работает, значит это не глупо.
Алёна вне форума Ответить с цитированием
Старый 24.06.2010, 08:54   #7
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Вопрос: как макросу определять размеры диапазона с данными?

Обычно в таких случаях макрос ищет последнюю заполненную ячейку в столбце А, но в вашем примере в ячейке А22 (под диаграммой) присутствует какая-то дата.
Если такие "лишние" данные будут встречаться на листе, то надо сначала придумать другой алгоритм определения границ диапазона данных.
EducatedFool вне форума Ответить с цитированием
Старый 24.06.2010, 09:50   #8
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Вот что у меня получилось:

Код:
Sub CreatingChart() ' основной макрос
    Application.ScreenUpdating = False: On Error Resume Next
    Dim ra As Range: Set ra = Range([A2], Range("A" & Rows.Count).End(xlUp))
    ChartTop = ra.Cells(ra.Cells.Count).Offset(3).Top
    
    txt1 = "Динамика количества предложений 1-ком. квартир за май-июнь 2010г."
    txt2 = "Общий объем ценовых предложений 1-ком. квартир за май-июнь 2010 г. "
    txt3 = "Динамика ср. цены за 1 кв.м по1-ком. квартирам за май-июнь 2010 г."
    
    CreateChart ra, ra.Offset(, 1), ChartTop, txt1: ChartTop = ChartTop + 220
    CreateChart ra, ra.Offset(, 2), ChartTop, txt2: ChartTop = ChartTop + 220
    CreateChart ra, ra.Offset(, 3), ChartTop, txt3: ChartTop = ChartTop + 220
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, 320, 200).Chart
    MyCh.SeriesCollection.Add Source:=ra2, RowCol:=xlColumns    'Добавить ряды данных
    MyCh.ChartType = xlLineStacked    ' тип диаграммы
    MyCh.Axes(xlCategory).CategoryNames = ra1    'Изменить ось категорий
    MyCh.HasLegend = False ' без легенды
    MyCh.HasTitle = True:    MyCh.ChartTitle.Characters.Text = Caption ' заголовок
End Sub
Пример в файле:

EducatedFool вне форума Ответить с цитированием
Старый 25.06.2010, 09:45   #9
Алёна
Форумчанин
 
Аватар для Алёна
 
Регистрация: 11.03.2007
Сообщений: 149
Хорошо СПАСИБО!

Спасибо большое!!! Нет, дат внизу никаких нету, просто наборы данных, единственно что, сделала диапазон на 3 даты, нарисовал только 1 график первы йнормально, остальные 2 пустые
Если это глупо, но работает, значит это не глупо.
Алёна вне форума Ответить с цитированием
Старый 27.02.2016, 10:00   #10
Z0RGE
Пользователь
 
Регистрация: 13.02.2015
Сообщений: 48
По умолчанию

Добрый день!
А подскажите, пожалуйста, как сделать так, чтобы данные для графиков брались не из столбцов, а из строк, т.е. например:
дата (всегда разное кол-во) - строка 7
числа1 (всегда разное кол-во) - строка 10
числа2 (всегда разное кол-во) - строка 15
числа3 (всегда разное кол-во) - строка 18

...

числа10 (всегда разное кол-во) - строка 78

Заранее благодарю.
Z0RGE вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Построение графиков <3myworld Microsoft Office Excel 2 18.03.2010 07:48
Построение графиков Vitul'k Помощь студентам 15 18.05.2009 17:37
построение графиков zetrix Microsoft Office Excel 4 17.06.2008 14:06
Построение графиков на C# TheGuardian123 Общие вопросы .NET 2 29.01.2008 14:50
построение графиков 4eCHoK PHP 1 20.09.2007 04:35