Excel. Сводная таблица на основе другой сводной

Рубрика: 7. Полезняшки Excel

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

Клиент Дата отгрузки Сумма отгрузки
ООО «Ромашка» 21 декабря 2010 12 039,58 руб.
ООО «Лютик» 22 декабря 2010 291 574,23 руб.

На основе таких данных в Excel несложно сформировать сводную таблицу, что-то типа (табл. 2):

Клиент Сумма отгрузок за период
ООО «Ромашка» 1 156 421,97 руб.
ООО «Лютик» 2 586 924,36 руб.

Если же вы хотите распределить клиентов по объему продаж, чтобы получить сводную таблицу типа (табл. 3):

Диапазон объема продаж Число клиентов в диапазоне
0 – 499 999,99 руб. 254
2 000 000 – 2 499 999,99 руб. 21

то вы столкнетесь с трудностями, так как создать такую таблицу на основе исходных данных (таблица 1), вам не удастся.

Скачать статью в формате Word, примеры в формате Excel2007 или Excel2003

Если это разовая процедура, то вы сначала создадите табл. 2, а потом на её основе создадите табл. 3. Но как быть, если вы хотите поддерживать табл. 3 в актуальном состоянии при изменении исходных данных (табл.1)!?

Мне не известны стандартные методы в Excel, позволяющие это сделать. К сожалению, опция в мастере сводных таблиц[1] «создать таблицу на основе данных, находящихся… в другой сводной таблице», не подходит:

При использовании мастера новая сводная таблица «опирается» на те же исходные данные, что и первоначальная сводная таблица. Для удобства воспользуйтесь Excel-файлом с примером. Перейдите на лист «стандарт». На нем представлены детальные данные о продажах: номер и дата заказа, номенклатура, входящая в заказ, и количество товаров

Стандартным образом создайте сводную таблицу на основе этих данных, а затем запустите мастер сводных таблиц, выберите опцию «создать таблицу на основе данных, находящихся… в другой сводной таблице», нажмите «Далее»:

На шаге 2 выберите на основе, какой сводной таблицы вы создадите новую таблицу:

Видно, что вторая сводная «опирается» на те же данные, что и первая:

Можете поэкспериментировать, и убедиться, что набор данных второй сводной таблицы не зависит от вида первой сводной таблицы (то есть от того, какие поля и как мы выбрали в первой таблице), а зависит только от исходных данных (колонки А–D).

Фактически мы создали копию первой сводной таблицы. Так что стандартные методы Excel для решения нашей задачи не подходят. Применим маленькие хитрости.

Пример приведен в Excel-файле на листе «хитрость». Для начала создадим именованный динамический диапазон на основе исходных данных – «исх1» с использованием функции СМЕЩ (как это делать можно посмотреть здесь). Именованный диапазон  избавит нас от проблем при добавлении исходных данных, и позволит актуализировать все сводные  таблицы простым нажатием кнопки «Обновить»:

Создавая сводную таблицу, укажите, что исходные данные – это диапазон с именем «исх1»:

Для сводной таблицы отключите общие итоги:

Создайте именованный диапазон для сводной таблице, также с помощью функции СМЕЩ:

Вот зачем мы отключили итоги – чтобы они «не лезли» в этот диапазон!

Запустите мастер сводных таблиц (из панели быстрого доступа) и выберите «Создать таблицу на основе данных, находящихся… в списке или базе данных MS Excel», нажмите «Далее»:

На втором шаге, укажите диапазон, содержащий исходные данные для второй сводной таблицы – «св1», нажмите «Далее»:

Разместите вторую сводную рядом с первой:

Сгруппируйте индивидуальные значения в диапазоны, постройте сводную диаграмму:

Поэкспериментируйте с исходными данными, добавляя / удаляя строки. Достаточно последовательно обновить первую и вторую сводные таблицы, и все внесенные изменения будут учтены.


[1] Как вызвать мастера сводных таблиц в Excel2007 (где он в явном виде не представлен) см. здесь.

Комментарии: 8 комментариев

Здорово, спасибо большое!
Так долго искала как такое реализовать.

Большое спасибо за информацию, она помогла разрешить многие вопросы. Я считаю- это гениально ))

пример не работает в Excel 2003, даже не испробовать

Добавил файл с примером в формате Excel2003

Респект. Очень полезно. Посмотрю что на вашем сайте еще интересного есть 🙂

Кстати в 2010 кажется можно не использовать СМЕЩ, а просто именовать диапазон в виде $A:$G. Пустые строки он отсекает сам. Не знаю как с производительностью, но группировка например точно работает

Здравствуйте!
Не появилось ли новых методов решения данной задачи в новых версиях Excel ?

С уважением, Lari.

Lari, мне не известны новые стандартные возможности Excel, позволяющие это сделать.


Прокомментировать