Создание графиков по неизвестному количеству данных

Программирование на Visual Basic for Applications
Zakin
Начинающий
Начинающий
 
Сообщения: 6
Зарегистрирован: 25.12.2005 (Вс) 1:22

Создание графиков по неизвестному количеству данных

Сообщение Zakin » 06.02.2006 (Пн) 13:36

Помогите, пожалуйста... :roll: Столкнулся с такой проблемной на работе, и не знаю как её решить думаю, что для вас это будет не сложно. :wink: Из программы телеметрии выгружается в Excel данные в виде 3 столбцов, в таком виде ....

2032 работа 5:59:47
2032 отстой 5:00:17
2032 работа 5:59:45
2032 отстой 4:59:53
2032 работа 6:00:10
2032 отстой 2:25:46

1032 отстой 5:00:17
1032 работа 5:59:50

1054 работа 5:54:23
1054 отстой 7:42:54
1054 работа 5:55:37
1054 отстой 9:35:08

Надо при помощи макросов создать 3 графика (каждый на отдельном листе) по столбикам (один столбик "работа" другой "отстой"). Числа в 1 столбце это название графика.

Проблема в том что количество столбиков постоянно меняется, их может быть (как на примере 1график - 6 столб, 2 график - 2 столб, 3 граф - 4 столб), а может с совсем по-другому. Надо как-то задать программе, когда есть свободная строка - начинать делать следующий график (на новом листе).

Конечно, если бы графиков было 3 проблем бы не было, можно было бы сделать и в ручную, но всего таких отрывков программа выгрузит около 115, и делать в ручную 115 графиков очень сложно. Спасибо!

RayShade
Scarmarked
Scarmarked
Аватара пользователя
 
Сообщения: 5511
Зарегистрирован: 02.12.2002 (Пн) 17:11
Откуда: Russia, Saint-Petersburg

Сообщение RayShade » 06.02.2006 (Пн) 13:54

Отстой... Хм...

Может, переименовать в "простой" чтоли :)



А насчет решения задачи можно сделать так:

1. Делаем сервисную функцию, которая смотрит лист с начала и ищет пустую строку. Пусть она нам создаст, range, от начала листа до этой строки, и еще 2 range, дальше, соответственно.



2. Ну а еще одна функция просто построит нам на новом листе, 3 графика по данным от первой.

Zakin
Начинающий
Начинающий
 
Сообщения: 6
Зарегистрирован: 25.12.2005 (Вс) 1:22

Сообщение Zakin » 06.02.2006 (Пн) 17:18

Насчёт "простоя" я так и сделаю. :)
А вот насчёт функции я не понял, объясни поподробнее, был бы благодарен если бы ты сразу код выложил, я с ним по разбираюсь...

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 06.02.2006 (Пн) 17:26

Для начала, хотелось бы увидеть саму диаграмму, ибо неясно, как её строить...
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Zakin
Начинающий
Начинающий
 
Сообщения: 6
Зарегистрирован: 25.12.2005 (Вс) 1:22

Сообщение Zakin » 06.02.2006 (Пн) 17:55

Стандартная гистограмма, ось у - часы, ось х - работа, простой, работа, простой. т.е столбик - работа, столбик -простой.

Zakin
Начинающий
Начинающий
 
Сообщения: 6
Зарегистрирован: 25.12.2005 (Вс) 1:22

Сообщение Zakin » 06.02.2006 (Пн) 18:39

GSerg Ты же знаешь как сделать подскажи, или просто я неправильно объясняю, спрашивай ....

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 07.02.2006 (Вт) 5:11

Не, я просто не думал, что такая диаграмма имеет смысл :roll:

Перед запуском курсор поставить в любую ячейку первого куска.
Код: Выделить всё
Option Explicit

Sub sfdh()
  Dim r As Excel.Range, rc As Long
 
  If TypeOf Selection Is Excel.Range Then
    rc = Selection.Worksheet.Rows.Count
    Set r = Selection
   
    Do
      c r.CurrentRegion
      Set r = r.End(xlDown).End(xlDown)
    Loop While r.Rows(r.Rows.Count).Row < rc
  End If
End Sub

Private Function c(ByVal r As Excel.Range) As Chart
  Set c = r.Worksheet.Parent.Charts.Add
  c.ChartWizard Range(r.Cells(1, 2), r.Cells(r.Rows.Count, r.Columns.Count)), xlColumn, , xlColumns, 1, 0, False, r.Cells(1, 1).Value
  c.SizeWithWindow = True
 
  On Error Resume Next
  c.Name = r.Cells(1, 1).Value
End Function
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Zakin
Начинающий
Начинающий
 
Сообщения: 6
Зарегистрирован: 25.12.2005 (Вс) 1:22

Сообщение Zakin » 07.02.2006 (Вт) 14:29

GSerg
Красавец, уважаю... Всё работает.... :shock: Спасибо огромное выручил :)

Starik
Обычный пользователь
Обычный пользователь
 
Сообщения: 73
Зарегистрирован: 05.11.2002 (Вт) 16:55
Откуда: Russia

Сообщение Starik » 09.02.2006 (Чт) 10:36

GSerg, очнь красиво всё получается и код маленький. Здорово!
Только я не все понял (просто скопировал код и запустил), если тебя не затруднит, помочь осмыслить этот код.
И ещё, почему-то строятся сразу несколько сотен графиков?


Вернуться в VBA

Кто сейчас на конференции

Сейчас этот форум просматривают: Yandex-бот и гости: 83

    TopList