Страницы: 1
RSS
Двумерный массив как источник данных для диаграммы
 
Уважаемые гуру  форума, проконсультируйте, пожалуйста можно ли и как сделать следующее. Ситуация такая: по умолчанию при помощи словаря формируется и выгружается двумерный массив Arr_r и в дальнейшем эти выгруженные данные используются при формировании диаграммы:
Код
...
  Sheets("Диаграммы").Range("A1").Resize(UBound(Arr_R, 1), UBound(Arr_R, 2)).Value = Arr_R 'выгрузка результата
...
Все работает правильно, но родился вопрос :oops: . А можно ли и как, если можно, сразу, без выгрузки указать готовый массив как источник данных для диаграммы? Ведь массив имеет правильную структуру и правильные данные. Немного пытался сделать это так, но не вышло (разумеется эти строки находятся ниже строк уже сформированного массива):                                    
Код
 Set oChart = Charts.Add(, ActiveSheet) 'создание диаграммы
'       Set rRng = Arr_R
    
     With oChart
         .ChartType = xlPie 'указание на тип диаграммы
         .SetSourceData (rRng) 'привязка к указанному диапазону данных
...
Пытался, методом "научного тыка" определить rRng как  Set rRng = Range(UBound(Arr_R, 1), UBound(Arr_R, 2)) или Set rRng = Array(Arr_R) результат тот же.
Сейчас rRng определяется приблизительно так
Код
Set rRng = Range("A1:B4")
Все работает, но можно ли сделать иначе?
Заранее спасибо за помощь
 
Уважаемые гуру, вопрос конечно чисто консультационный, но все-таки ответьте, пожалуйста, вариант использования массива в качестве источника данных для диаграммы вообще реален или не стоит об этом ломать голову?
 
OlegO, да. Основываясь на вашем коде
Код
Sub bb()
Dim oChart As Chart
  Set oChart = Charts.Add(, ActiveSheet)                'создание диаграммы
  With oChart
    .ChartType = xlPie                                'указание на тип диаграммы
    With .SeriesCollection.NewSeries
      .Values = Array(1, 2, 3)
    End With
  End With
End Sub
 
Прошу пояснить, Казанский. Если я указываю массив для источника как предлагаете Вы:
Код
...
.Values = Array(1, 2, 3)
...
то какая-то диаграммы действительно формируется, НО мне то необходимо указать не вручную прописанный массив, а уже готовый и сформированный массив Arr_r, это возможно?
 
OlegO, попробуйте, не бойтесь, Excel Вас не укусит :)
Возможно, из вашего двумерного массива надо будет сформировать одномерные - для каждого ряда. Я же ваших данных не вижу!
 
Цитата
Казанский написал:
Я же ваших данных не вижу!
Просто предположил что файл с данными не потребуется, вот и не выложил 8-0 . Итак, по кнопке на листе "Диаграммы" правильно формируется двумерный массив Arr_R, если его выгрузить, то, что делать далее я знаю (обозначить через переменные диапазон для диаграммы, ну и далее настроить ее внешний вид, тут все ОК). НО прошу показать, если такое возможно, как в качестве источника данных для диаграммы использовать полученный массив БЕЗ выгрузки на лист. Ну и параллельно возник еще вопрос: если такой финт ушами возможен, то как будет вести себя excel в ситуации, когда требуется сформировать и распечатать несколько диаграмм циклом (для выгруженных данных я так уже умею), Предположим мы сформировали диаграмму, настроили ее внешний вид и размеры, переместили на другой лист и приступили к формированию следующей. А как первая диаграмма будет помнить о своих параметрах, если массив будет формироваться новый? Придется формировать уникальные массивы для каждой диаграммы (их будет 2 или 3) или "превращать" диаграммы в картинки и работать и выводить на печать уже их? Как считают глубокоуважаемые гуру? :)  
 
Доброе время суток.
Цитата
OlegO написал:
Придется формировать уникальные массивы для каждой диаграммы
Не придётся. Если на входе данных Values у диаграммы массив, то он копируется во внутренний массив констант. Может дальше работать с массивом. Просто сами логически рассудите. Вы закрыли Excel, что будет с вашим массивом в коде, если вы закрыли книгу и, вообще, Excel?
 
Андрей VG, все не так страшно, в полной версии планируется следующее: формируется диаграмма (или диаграммы циклом), оформляются согласно ситуации, лист с ними распечатывается, диаграммы удаляются и так до следующего запроса на печать диаграмм. Ни про какое хранение где-либо сформированных диаграмм речь не идет. Просто, для пополнения своих весьма скудных знаний, я бы хотел узнать, можно ли проделать все вышеописанное БЕЗ выгрузки массива (с выгрузкой все  уже работает). Если Вы знаете как это сделать, то буду крайне признателен, если Вы покажете на прилагаемом примере (до этапа форматирования диаграммы, дальше я сам)
 
Цитата
OlegO написал:
Если Вы знаете как это сделать, то буду крайне признателен
Так коллега Казанский в #3 показал вам как сделать. На входе Values может быть или ссылка на диапазон (вы об этом знаете) или одномерный массив значений. Поэтому вам нужно переписать данные столбца из исходного Arr_R в одномерный массив и уже его его использовать с Values.
 
Цитата
Андрей VG написал:
нужно переписать данные столбца из исходного Arr_R в одномерный массив
Андрей, совсем у меня голова не варит сегодня, покажите как это делается, плиз
Страницы: 1
Читают тему
Наверх