powered by simpleCommunicator - 2.0.52     © 2025 Programmizd 02
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / VBA+Excel+Автоматизация построения диаграмм
11 сообщений из 11, страница 1 из 1
VBA+Excel+Автоматизация построения диаграмм
    #35694309
chief-worker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте! С VBA до сего дня не сталкивался =)
Подскажите плиз, как составить (как будет выглядеть) макрос, который строит n-ное число диаграмм, где, n= кол-ву строк в таблице.
Т.е., как вот это:

Range("A1:B1").Select
Charts.Add
ActiveChart.ChartType = xlColumnClustered
ActiveChart.SetSourceData Source:=Sheets("Лист1").Range("A1:B1")
ActiveChart.Location Where:=xlLocationAsObject, Name:="Лист1"

можно вставить в какой-нить цикл, где А1:В1 будет с каждым разом увеличиваться на 1, т.е. приобретать вид А2:В2, затем А3:В3 и так далее до конца таблицы.
P.S. Строк в табл 1.5k, так что итогом работы цикла будет А1500:В1500, руками делать все - заманаюсь, очень нужен макрос =)

Всем спасибо!
...
Рейтинг: 0 / 0
VBA+Excel+Автоматизация построения диаграмм
    #35694465
PlanB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
киньте-ка лучше пример, точнее будет ответ!
-каждая диаграмма - на новом листе или не этом же?
-цикл будет какой-то такой:

Sub sss()
foi i% = 1 to 1500 'протестируйте для начала от 1 до 50, а то, чую, долго будет
range(cells(i,1),cells(i,2)).activate

'ваши действия

next i
end sub
...
Рейтинг: 0 / 0
VBA+Excel+Автоматизация построения диаграмм
    #35694469
PlanB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
сорри: fo r i%
...
Рейтинг: 0 / 0
VBA+Excel+Автоматизация построения диаграмм
    #35694890
chief-worker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Большое спасибо PlanB!
К сожалению проблема не до конца решена =( У меня получилось вот что:

Sub sss()
For i% = 1 To 5
Range("A1:B5").Select
Charts.Add
ActiveChart.ChartType = xlColumnClustered
ActiveChart.SetSourceData Source:=Sheets("Лист1").Range("A1:B1")
ActiveChart.Location Where:=xlLocationAsObject, Name:="Лист1"
Next i
End Sub

т.е. одна и таже диаграмма стороится 4 раза (но это уже прогресс!) ;-)
вся загвоздка в Range("A1:B1"), как заставить эту часть изменяться на A2:B2 и т.д??

СПАСИБО!
...
Рейтинг: 0 / 0
VBA+Excel+Автоматизация построения диаграмм
    #35695255
PlanB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
Sub Charts_View()
For i% =  1  To  1500 
'Построим диаграммы
    Range(Cells(i,  1 ), Cells(i,  5 )).Select
    Charts.Add
        ActiveChart.ChartType = xlColumnClustered
        ActiveChart.SetSourceData Source:=Sheets("Лист1").Range(Cells(i,  1 ), Cells(i,  5 ))
        ActiveChart.Location Where:=xlLocationAsObject, Name:="Лист1"
Next i
End Sub
Range просто надо было в формате R1C1 записать и к счётчику привязать. Я же писал уже вот тут
PlanBrange(cells(i,1),cells(i,2)).activateТолько обратите внимание на значения Cells(i,5) в строке
Код: plaintext
Range(Cells(i,  1 ), Cells(i,  5 )).Select
Там поставьте не 5, а то, что вам нужно (5 означает, что диаграмма строится в диапазоне A:E. Поставите 2 - будет A:B)

Получилось тем не удобно, что у вас все диаграммы друг на друге... 1500 не знаю как вы будете передвигать Дайте пример, говорил же, ответ точнее получится.
...
Рейтинг: 0 / 0
VBA+Excel+Автоматизация построения диаграмм
    #35695698
chief-worker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
PlanB
Код: plaintext
1.
        ActiveChart.SetSourceData Source:=Sheets("Лист1").Range(Cells(i,  1 ), Cells(i,  5 ))

ругается на эту строчку, мол - Рун-тайм эррор 1004: "указано измерение, недопустимое для текущего типа диаграмм" =( и строитя первая таблица на отдельном листе =/
Юзаю Excel 2003/2007. Пример с желаемым рез-том лежит тут: http://crpo.info/doc/excel.rar только в оригинале 1,5к строчек =)

Огромное спасибо за внимание!!!
...
Рейтинг: 0 / 0
VBA+Excel+Автоматизация построения диаграмм
    #35695714
chief-worker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
chief-workerPlanB
Код: plaintext
1.
        ActiveChart.SetSourceData Source:=Sheets("Лист1").Range(Cells(i,  1 ), Cells(i,  5 ))

ругается на эту строчку, мол - Рун-тайм эррор 1004: "указано измерение, недопустимое для текущего типа диаграмм" =( и строитя первая таблица на отдельном листе =/
Юзаю Excel 2003/2007. Пример с желаемым рез-том лежит тут: http://crpo.info/doc/excel.rar только в оригинале 1,5к строчек =)

Огромное спасибо за внимание!!!

В примере макроса естейственно нет =/ диаграммки нарисованы руками
1500 наложенных друг на друга диаграмм будут перелопачены с помощью [Ctrl] + A / [Ctrl] + C / [Ctrl] + V и прочие горячие кнопки =)))
...
Рейтинг: 0 / 0
VBA+Excel+Автоматизация построения диаграмм
    #35699464
chief-worker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Готово! Разобрался! =) ВСЕМ СПАСИБО!!!
Вот что получилось:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
Sub МАКРОС()
    Dim i As Long, j As Long, k As Long, l As Long
    i =  56 
    j =  1 
    k =  1 
    l =  1 
    For x% =  1  To  8 
    With Sheets("Лист2")
        Charts.Add
        ActiveChart.ChartType = xlColumnClustered
        ActiveChart.SetSourceData Source:=.Range(.Cells(i, j), .Cells(k, l))
        ActiveChart.Location Where:=xlLocationAsObject, Name:=.Name
        ActiveChart.SeriesCollection( 1 ).XValues = "=Лист2!$A$2:$A$56"
    End With
    i = i
    j = j +  1 
    k = k
    l = l +  1 
    Next x
End Sub

это если строить по вертикали, т.е. графики строим по столбцам, ежели нужно по строчкам, то:
Код: plaintext
1.
2.
3.
4.
    
    i = i +  1 
    j = j
    k = k + 1 
    l = j

и переменная i в начале кода = 1
=)
P.S. С VBA не знаком вообще =)
...
Рейтинг: 0 / 0
VBA+Excel+Автоматизация построения диаграмм
    #35699786
PlanB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У меня работало так, как я написал... Ну вы и наворотили Проще надо, проще
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
VBA+Excel+Автоматизация построения диаграмм
    #38604826
cheb87
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
PlanB,ваш макрос работает,спасибо! Но как его доработать,когда данные есть не только в столбцах,но и в строках? Тип диаграммы:xlSurfaceTopView (Поверхность)
...
Рейтинг: 0 / 0
VBA+Excel+Автоматизация построения диаграмм
    #38605643
PlanB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cheb87, да там все то же самое. целевой область только будет прямоугольником, у которого длина и ширина, выраженные в ячейках будут больше 1. Соответственно двигать надо будет не на 1, а на ширину этого диапазона. примерно так: For i% = 1 To 1500 step 10, где 10 - это ширина области.
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / VBA+Excel+Автоматизация построения диаграмм
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]