Графики Excel на разных листах

Графики Excel на разных листах

Я пытаюсь сократить объем механической работы, которую мне нужно сделать в документе Excel. В нем 13 рабочих листов, по одному на каждый месяц + один, который подводит итоги всего года. На каждом рабочем листе есть некоторые данные и некоторые графики. Я хочу создать график, который занимает два столбца и рисует их. Затем я хочу скопировать график и вставить его на следующую страницу, где он будет брать данные из тех же столбцов. Проблема в том, что когда я создаю график, он записывает следующий диапазон

='02.2016 Д2'!$A$2:$A$30,'02.2016 Д2'!$C$2:$C$30

поэтому, когда я копирую его на следующий рабочий лист, он все еще использует данные с предыдущего рабочего листа. Я бы обошел и исправил их один за другим, но там 13 рабочих листов * 8 графиков, и я склонен полагать, что есть более простой способ.

решение1

Сначала плохие новости:в диаграммах Excel нельзя использовать относительные ссылки. Им приходится указывать на конкретный лист и везде ставить знак «$».

Лучшая идея — этокопировать листы вместо диаграмм. Если диаграмма указывает на данные на том же листе, Excel скорректирует ссылку. Затем вам нужно будет только поместить соответствующие данные на каждый лист.

Я делаю подобные вещи каждый день, и, на мой взгляд, оптимальный рабочий процесс выглядит следующим образом:

1) Создайте нужный вам лист на один месяц.

2) Параметризовать все, что зависит от листа, и поместить данные на отдельный лист. Идея состоит в том, чтобы вручную изменить только 1 ячейку на каждом листе*.

3) Копируем лист и меняем параметр. Конец. :)

Это также соответствует правильному дизайну таблицы: раздельные данные и анализ, причем первые представлены в максимально сжатой форме (например, одна таблица для всего :)).

*) На самом деле вы можете использовать название листа, но обычно это не рекомендуется.


Если по какой-либо причине вышеприведенное решение неприемлемо, вы можете заменить исходные ссылки в листах с помощью VBA. Инструкция проста:

refChart.SetSourceData Source:=Range("A1:C4")

Однако перебирать выбранные листы и назначать правильные диапазоны может быть непросто.

Связанный контент