Вывод несколько графиков из одной таблицы, по определенному значению ячейки. - VB

Узнай цену своей работы

Формулировка задачи:

привет
есть такое задание:
на первом листе формируется таблица сколько n количество строк и n количество столбцов.
в первом столбце начиная с А2 и ниже идут значения:
ГЗ01
ГЗ01
ГЗ02
ГЗ02
нужно построить 2 графика по значениям ГЗ01 и ГЗ02 захватив при этому всю строку до последней заполненной колонки А1-...
работающий код есть. но, он завязан на явное указание границ таблицы.

как отвязаться от букв?
попробовал:

где step, first - это счетчики
а NumColl это номер последнего столбца, вычесленный NumColl = ExecuteExcel4Macro("GET.DOCUMENT(12,""[макрос.xlsm]Лист1"")")
прилагаю таблицу, запускается по кнопке на первом листе. графики строятся на втором.
и вопрос еще один. как эти графики упорядочить, а то они друг на друга ложатся.

Решение задачи: «Вывод несколько графиков из одной таблицы, по определенному значению ячейки.»

textual
Листинг программы
Sub gibiz()
NumRows = ExecuteExcel4Macro("GET.DOCUMENT(10,""[макрос.xlsm]Лист1"")")
NumColl = ExecuteExcel4Macro("GET.DOCUMENT(12,""[макрос.xlsm]Лист1"")")
Dim x As Integer
A = Range("A2").Value
Range("A2").Select
step = 1
first = 2
For x = 0 To NumRows
If ActiveCell.Value = A Then
step = step + 1
Else
    Response = MsgBox("Cells(NumColl, step)=" + CStr(Cells(NumColl, step)) + "   first=" + CStr(first) + "   step=" + CStr(step) + "   iClm=" + CStr(iClm) + "Cells(NumColl, 1)=" + CStr(Cells(NumColl, 1)), vbInformation, vbOKOnly)
    Sheets("Лист2").Select
    ActiveSheet.Shapes.AddChart.Select
    ActiveChart.ChartType = xlLine
    ActiveChart.SetSourceData Source:=Sheets("Лист1").Range("A1:E1,A" + CStr(first) + ":E" + CStr(step))
    'ActiveChart.SetSourceData Source:=Sheets("Лист1").Range(Sheets("Лист1").Range(Sheets("Лист1").Cells(1, 1).Value, Sheets("Лист1").Cells(NumColl, 1).Value), Sheets("Лист1").Range(Sheets"Лист1").Cells(1, first).Value, Sheets("Лист1").Cells(NumColl, step).Value))
    'ActiveChart.SetSourceData Source:=Sheets("Лист1").Range("R1C1:R2C6")
    Sheets("Лист1").Select
    step = step + 1
    first = step
    A = ActiveCell.Value
End If  
ActiveCell.Offset(1, 0).Select
Next
End Sub

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

10   голосов , оценка 4.1 из 5
Похожие ответы