Перейти к содержимому

Excel. Диаграмма, изменяющаяся при добавлении данных

Вас, наверное, не раз напрягало, что после добавления данных область диаграммы следует увеличить. Этого можно избежать, если в диаграммах вместо ссылок на ячейки использовать ссылки на именованные динамические диапазоны.

В качестве пример возьмем курс доллара (рис. 1). Для начала создадим обычную диаграмму (тип «График с маркерами»).

Рис. 1. График с маркерами

Скачать заметку в формате Word, примеры в формате Excel

Далее создадим два именованных динамических диапазона: один для меток категорий (Даты), второй – для точек данных (Курс $). Для создания именованного диапазона пройдите по меню Формулы → Диспетчер имен (рис. 2).

Рис. 2. Диспетчер имен

В открывшемся окне «Диспетчер имен» нажмите кнопку создать, и в окне «Создание имени» введите имя диапазона – «Даты» и формулу для ссылки на диапазон: =СМЕЩ(Лист1!$A$1;1;0;СЧЁТЗ(Лист1!$A$1:$A$100)-1;1)

Рис. 3. Присвоение имени динамическому диапазону

Если вы не сталкивались ранее с функцией СМЕЩ, рекомендую почитать о ней в заметках Диаграммы в Excel. Отображение части данных с использованием элементов управления и  Автоматическое обновление сводной таблицы.

Обратите внимание, что сразу же за аргументом функции СЧЁТЗ стоит «–1». Благодаря этому заголовок ряда не будет включен в именованный диапазон. Заметьте также, что в качестве аргумента функции СЧЁТЗ указан не весь столбец А, а лишь первые 100 ячеек. Если вы используете большой массив данных, укажите соответствующее число, например, 1000 или 10 000. В ранних версиях Excel такое ограничение весьма желательно, дабы не перегружать вычисления. Указывая колонку полностью, вы заставляете Excel просматривать тысячи ненужных ячеек. Некоторые функции Excel достаточно умны, чтобы определить, какие ячейки содержат данные, некоторые сделать этого не могут. В новых версиях Excel не обязательно строго ограничивать диапазон, так как обработка больших диапазонов в них улучшена.

Затем создайте второй именованный диапазон для данных столбца В (рис. 4)

Рис. 4. Динамический диапазон «Курс»

Теперь можно заменить в диаграмме ссылки на диапазоны данных именами динамических диапазонов. Выделяем диаграмму и щелчком правой кнопкой мыши вызываем контекстное меню, строчку «Выбрать данные» (рис. 5).

Рис. 5. Выбрать данные

В открывшемся окне «Выбор источника данных» выделяем ряд и жмем «Изменить» (рис. 6).

Рис. 6. Изменить ряд

В открывшемся окне «Изменение ряда» заменяем ссылки на ячейки на имя ряда «Курс» (рис. 7). Обратите внимание, что имя листа Excel следует оставить в неизменном виде «=Лист1!»

Рис. 7. Замена ссылок на имя диапазона

Аналогично заменяем подписи горизонтальной оси (категории): жмем другую кнопку «Изменить» в правой части окна «Выбор источника данных» (см. рис. 6) и вводим имя «Даты» вместо ссылок на ячейки (рис. 8).

Рис. 8. Замена подписей оси (категорий)

Все наши манипуляции не привели к изменению диаграммы. Мы лишь подготовились к грядущим изменениям. Как говорится: «подальше положишь, поближе возьмешь». А теперь наслаждайтесь автоматическим расширением области диаграммы при добавлении новых значений в таблицу данных, например, как на рис. 9.

Рис. 9. Новые данные, добавленные в таблицу (выделены желтым) автоматически отражаются на диаграмме

В своей работе менеджера мне приходится контролировать довольно много параметров, так что подобные хитрости я использую давно, и они значительно облегчают мне работу. А вот недавно в книге Д.Холи, Р. Холи «Excel 2007. Трюки» я прочитал о еще одной возможности, основанной на том же свойстве.

Добавление от 19 июня 2018 г. Эту же проблему гораздо проще решить, если встать на любую ячейку диапазона, и нажать Ctrl+T (англ.). Диапазон превратится в Таблицу. Создайте на ее основе диаграмму. При добавлении строк в Таблицу, диаграмма будет отражать их автоматически.

Построение диаграммы для фиксированного числа последних данных

Еще один тип именованных диапазонов, который можно использовать с диаграммами, – это диапазоны, выбирающие только последние N значений (можно указать любое число).

См. пример на Лист2 в Excel-файле. Для данных в столбце А создайте динамический именованный диапазон с именем Даты30 (последние 30 дней), который ссылается на следующие данные: =СМЕЩ($A$1;СЧЁТЗ($A$1:$A$100)-30;0;30;1). Для данных в столбце В создайте динамический именованный диапазон с именем Курс30, который ссылается на следующие данные: =СМЕЩ($B$1;СЧЁТЗ($B$1:$B$100)-30;0;30;1). Замените в диаграмме ссылки на диапазоны данных именами динамических диапазонов. Получится диаграмма, отражающая последние 30 значений (рис. 10).

Рис. 10. На диаграмме отражаются 30 последних значений

При добавлении данных в таблицу область отражения на диаграмме сместится (рис 11).

Рис. 11. При добавлении данных диаграмма по-прежнему отражает 30 последних значений

Использование динамических именованных диапазонов с диаграммами обеспечит исключительную гибкость и сэкономит огромное количество времени и усилий, которые вы потратили бы на настройку диаграмм после добавления еще одной записи к исходным данным!

17 комментариев для “Excel. Диаграмма, изменяющаяся при добавлении данных”

  1. Здравствуйте! Подскажите, а можно реализовать то же самое, только с учетом времени, а не только даты. То есть, когда временной формат имеет значение не «дд.мм.гггг», а «дд.мм.гггг чч.мм.сс» или «дд.мм.гггг» «чч.мм.сс». Чтобы на графике было видно изменение значения на протяжении дня. Заранее Вам спасибо.

  2. Роман, я выбрал ось дат в качестве примера. В качестве оси Х может использоваться и время, и числа, и деньги… То есть, трюк не связан с каким-то конкретным типом данных. Если проблемы у Вас остались, пришлите в личку файл Excel с описанием, чего хотите добиться. Попробую помочь.

  3. Владимир

    Огромнейшее-преогромнейшее Вам спасибо!
    А я так долго мучился, делая вручную…

  4. Николай

    К примеру, я делаю отчет, в котором собираюсь путем копирования вкладок получать данные по каждой следующей переменной. После этого на новой вкладке диаграмма будет отражать данные с предыдущей и нужно будет создавать под эту вкладку новое имя, что немного не подходит. Есть ли способ ссылаться на динамически изменяемый диапазон с данными текущего листа?

  5. Николай, попробуйте создать в диаграмме ссылки на данные с помощью функции ДВССЫЛ. А в этой ДВССЫЛ сошлитесь на название листа, которое забивайте во всех листах в одну и туже ячейку

  6. Николай

    В диаграмме изначально пытался подсунуть экселю СМЕЩ, и сослаться на нужный мне диапазон. Однако он ругается что данная функция не действительна. Тоже пишет и о ДВССЫЛ.

  7. Сергей Багузин

    Николай, пришлите файл в личку, и напишите подробно, что Вам нужно…

  8. Алексей

    А у меня с точечной диаграммой этот фокус не проходит… 🙁

  9. Алексей, а у меня получилось на полтыка)) В прилагаемом файле Excel на Лист1 просто поменял тип диаграммы График на Точечная (у меня Excel 2013)

  10. Василий

    Сергей.
    Вот находясь в поисках нашел Ваш сайт. Мне надо чтобы отображались не только даты, но и время. Мои эксперименты ни к чему не привели. Единственное, что понял — не надо использовать точечную диаграмму — только график. Поэтому отсечки времени в двух колонках: «А» — дата, «В» — время. Поэтому и проблема с именованным динамическим диапазоном «Дата». Может подскажете?

  11. Наталья

    А если данные по горизонтали? как быть в таком случае?

  12. Добрый день.
    Мне пришлось создать таблицу\график с параметрами: Верхнее\нижнее давление, пульс, глюкоза. Первые три параметра измеряются 4 раза в день, глюкоза — 3. Потом для графика считаются средние значения за сутки (по каждому параметру)и выводятся в виде графика. Для глюкозы цветом в таблице выделяются значения меньше\равно 5,7 и на графике создана дополнительная ось 4,6-8,0.
    Очень хотелось бы сделать автоматическую установку даты (СЕГОДНЯ)с изменением на оси Х диаграммы и автоматические же изменения (по дате) в данных для графика. Пусть крайним значением графика будет текущая дата, а диапазон оси Х -1,5 месяца.
    В каком направлении мне «копать»?
    PS. Сейчас, чтобы избежать «завала» графика в «0» на завтрашней дате, я заполняю поля будущих измерений средними значениями.
    PPS. Думаю, этот график многим пригодится, если его доделать…

  13. Сергей, добрый день! Пробую по вашему второму способу сделать таблицу, но у меня она горизонтальная — так удобнее вести, а таблица формируется вертикальной((( как подстроить эту функцию под мою горизонтальную табличку?)))

  14. Сергей, добрый день!

    Вроде все делаю, как у вас написано. В варианте с таблицей все получилось,но обновляться не хочет график. С динамическими данными при изменении ряда пишет недопустимые ссылки(( Сможете помочь? ))

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *