Содержание
- Microsoft Excel
- Как скопировать сводную таблицу Excel без источника данных и сохранить исходное форматирование
- Сводные таблицы. Анализ данных. Разработчик сводной таблицы. Экспорт сводной таблицы в Microsoft Excel или другие приложения , страница 2
- Как скопировать сводную таблицу
- Перемещение pivotttable
- Дополнительные сведения
- Сводные таблицы. Анализ данных. Разработчик сводной таблицы. Экспорт сводной таблицы в Microsoft Excel или другие приложения , страница 2
- Как экспортировать данные сводной таблицы в Excel
- Оглавление:
- Видео: Создание сводной таблицы в Excel (Марш 2023)
- Шаг 1
- Шаг 2
- Шаг 3
- Шаг 4
- Шаг 5
- Как изменить строки сводной таблицы на столбцы
- Как изменить исходные данные сводной таблицы
- Как удалить пробелы из сводной таблицы в Excel
Microsoft Excel
трюки • приёмы • решения
Как скопировать сводную таблицу Excel без источника данных и сохранить исходное форматирование
В вашей работе возможно появится такая ситуация, когда вам потребуется послать некоторое количество информации из отчета сводной таблицы Excel, но при этом вы не хотите показывать источник исходных данных. То есть, если говорить другими словами, вы хотите «отключить» сводную таблицу от источника данных.
Отформатированная сводная таблица выглядит изначально в таком виде (см. рис.)
Excel не имеет возможности отключения сводной таблицы от источника данных, но в Excel есть гибкая функция которая называется Специальная вставка.
- В сводной таблице выберите необходимый вам диапазон и нажмите скопируйте его (воспользуйтесь сочетанием клавиш Ctrl+C).
- На новом листе или другом свободном месте текущего листа выделите ячейку отобразите диалоговое окно Специальная вставка.
- В диалоговом окне Специальная вставка, выберите Значения параметров и нажмите OK.
Необходимый вам диапазон будет скопирован без указания источника данных, но при этом к скопированным данным не будет применено форматирование и стили оформления, это надо будет сделать заново.
Чтобы при копировании диапазона сохранялось исходное форматирование выполните дополнительные действия:
- Отобразите Буфер обмена Office. В Excel 2007-2013 эта функция находится на вкладке Главная → Буфер обмена
- В открывшемся списке выберите нужный элемент (скорее всего это будет последний элемент) и нажмите вставить с исходным форматированием.
Теперь ваша скопированная сводная таблица не имеет связи с источником данных и сохранила исходное форматирование.
Источник
Сводные таблицы. Анализ данных. Разработчик сводной таблицы. Экспорт сводной таблицы в Microsoft Excel или другие приложения , страница 2
Копирование в другие программы. Можно также скопировать данные, отображаемые в сводной таблице, в другие программы, такие как Microsoft FrontPage или Microsoft Access. Если скопировать данные в программу, не являющуюся программой Microsoft Word или Microsoft Excel и не поддерживающую формат HTML, используемый сводными таблицами, данные будут скопированы как неформатированный текст.
Экспорт и копирование сводной таблицы в Microsoft Excel или другие приложения
► Экспорт списка сводной таблицы в Microsoft Excel
Используйте эту процедуру, чтобы экспортировать сводную таблицу из обозревателя в Microsoft Excel в виде интерактивного сводного отчета. При этом поддерживается связь между сводным отчетом Microsoft Excel и исходной базой данных.
Чтобы получить лучшие результаты, перед экспортом сводной таблицы в Microsoft Excel переместите все поля из области сведений и скройте сведения для элементов и ячеек.
1. Щелкните сводную таблицу.
2. Нажмите кнопку Экспорт в Microsoft Excel Buна панели инструментов сводной таблицы для запуска или переключения в Microsoft Excel и отображения данных в сводном отчете.
Примечание. Т. к. отчеты сводных таблиц в Microsoft Excel не могут отображать некоторые макеты и вычисления сводной таблицы, сводный отчет может выглядеть иначе, чем сводная таблица в обозревателе. Сведения о работе со сводными отчетами и добавлении в них полей см. в справке Microsoft Excel.
► Копирование сводной таблицы в Microsoft Excel или Microsoft Word
Используйте эту процедуру для копирования сводной таблицы или еге части в Microsoft Excel или Microsoft Word в качестве отформатированной неинтерактивной таблицы.
1. Выполните одно из следующих действий.
о Чтобы скопировать всю сводную таблицу, щелкните строку заголовка сводной таблицы. о Чтобы скопировать часть сводной таблицы, выделите нужные элементы.
2. На панели инструментов сводной таблицы нажмите кнопку Копировать
3. Переключитесь в Microsoft Excel или Microsoft Word и щелкните место, где должны отображаться данные из сводной таблицы.
4. Нажмите кнопку Вставить I
При копировании сводной таблицы или ее фрагмента копируются только элементы форматирования и значения данных. Связь между копией в Microsoft Excel или Microsoft Word и исходной базой данных не поддерживается.
Можно скопировать фрагмент сводной таблицы в другие программы, такие как Microsoft Access, в виде неформатированного текста.
Обновление сводной таблицы для отображения обновленных исходных данных Стр. 1 из 1
Обновление сводной таблицы для отображения обновленных исходных данных
1. Щелкните сводную таблицу.
2. На панели инструментов сводной таблицы нажмите кнопку Обновить
• Эмблема Microsoft Office ^ перестает вращаться при завершении операции обновления. Во время операции обновления сводной таблицы пользователь не может работать с ней и вносить изменения.
• Чтобы прервать операцию обновления, нажмите клавишу ESC. Это можно сделать только при пересчете сводной таблицы, но не во время загрузки данных из источника.
file://E:Documents and SettingsAdministratorLocal SettingsTemp
В сводных таблицах отсутствуют команды поиска. Однако пользователь имеет возможность использовать фильтры для поиска конкретных значений или всех данных, отвечающих определенному значению.
Фильтрация поля (Автофильтрация). Фильтр можно применять к полям строк, столбцов и области данных. Когда фильтр применяется к полю, отбираются один или несколько элементов данных в поле для просмотра, а остальные элементы скрываются.
• Поле «Спорт» отфильтровано для отображения только продаж клюшек для гольфа .
Источник
Как скопировать сводную таблицу
Перемещение pivotttable
Вам может потребоваться переместить таблицу, чтобы вставить ячейки, строки или столбцы в текущем расположении отчета.
Щелкните сводную таблицу.
В области Средства работы со таблицамина вкладке Анализ нажмите кнопку Переместить таблицу.
Отобразилось диалоговое окно Перемещение pivottable.
В области Выберите, где должна размещаться pivotTable, сделайте одно из следующих вариантов:
Чтобы разместить таблицу на новом месте, начиная с ячейки A1, нажмите кнопку На новый.
Чтобы разместить таблицу на существующем, выберите Существующий таблица ,а затем введите первую ячейку в диапазоне ячеек, в котором вы хотите найти таблицу.
Вы также можете нажать кнопку Свернуть диалоговое , чтобы временно скрыть диалоговое окно, выбрать становую ячейку на этом сайте и нажать кнопку Развернуть .
Щелкните сводную таблицу.
В области Средства работы со таблицамина вкладке Анализ нажмите кнопку Переместить таблицу.
Отобразилось диалоговое окно Перемещение pivottable.
В области Выберите, где должна размещаться pivotTable, сделайте одно из следующих вариантов:
Чтобы разместить таблицу на новом месте, начиная с ячейки A1, нажмите кнопку На новый.
Чтобы разместить таблицу на существующем, выберите Существующий таблица ,а затем введите первую ячейку в диапазоне ячеек, в котором вы хотите найти таблицу.
Вы также можете нажать кнопку Свернуть диалоговое , чтобы временно скрыть диалоговое окно, выбрать становую ячейку на этом сайте и нажать кнопку Развернуть .
Щелкните сводную таблицу.
В области Средства работы со таблицамина вкладке Параметры нажмите кнопку Переместить таблицу.
Отобразилось диалоговое окно Перемещение pivottable.
В области Выберите, где должна размещаться pivotTable, сделайте одно из следующих вариантов:
Чтобы разместить таблицу на новом месте, начиная с ячейки A1, нажмите кнопку На новый.
Чтобы разместить таблицу на существующем, выберите Существующий таблица ,а затем введите первую ячейку в диапазоне ячеек, в котором вы хотите найти таблицу.
Вы также можете нажать кнопку Свернуть диалоговое , чтобы временно скрыть диалоговое окно, выбрать становую ячейку на этом сайте и нажать кнопку Развернуть .
Щелкните сводную таблицу.
Выберите советная>действия> Переместить сетную.
Отобразилось диалоговое окно Перемещение pivottable.
В области Выберите, где должна размещаться pivotTable, сделайте одно из следующих вариантов:
Чтобы разместить таблицу на новом месте, начиная с ячейки A1, нажмите кнопку На новый.
Чтобы разместить таблицу на существующем, выберите Существующий таблица ,а затем введите первую ячейку в диапазоне ячеек, в котором вы хотите найти таблицу.
Дополнительные сведения
Вы всегда можете задать вопрос специалисту Excel Tech Community или попросить помощи в сообществе Answers community.
Сводные таблицы. Анализ данных. Разработчик сводной таблицы. Экспорт сводной таблицы в Microsoft Excel или другие приложения , страница 2
Копирование в другие программы. Можно также скопировать данные, отображаемые в сводной таблице, в другие программы, такие как Microsoft FrontPage или Microsoft Access. Если скопировать данные в программу, не являющуюся программой Microsoft Word или Microsoft Excel и не поддерживающую формат HTML, используемый сводными таблицами, данные будут скопированы как неформатированный текст.
Экспорт и копирование сводной таблицы в Microsoft Excel или другие приложения
► Экспорт списка сводной таблицы в Microsoft Excel
Используйте эту процедуру, чтобы экспортировать сводную таблицу из обозревателя в Microsoft Excel в виде интерактивного сводного отчета. При этом поддерживается связь между сводным отчетом Microsoft Excel и исходной базой данных.
Чтобы получить лучшие результаты, перед экспортом сводной таблицы в Microsoft Excel переместите все поля из области сведений и скройте сведения для элементов и ячеек.
1. Щелкните сводную таблицу.
2. Нажмите кнопку Экспорт в Microsoft Excel Buна панели инструментов сводной таблицы для запуска или переключения в Microsoft Excel и отображения данных в сводном отчете.
Примечание. Т. к. отчеты сводных таблиц в Microsoft Excel не могут отображать некоторые макеты и вычисления сводной таблицы, сводный отчет может выглядеть иначе, чем сводная таблица в обозревателе. Сведения о работе со сводными отчетами и добавлении в них полей см. в справке Microsoft Excel.
► Копирование сводной таблицы в Microsoft Excel или Microsoft Word
Используйте эту процедуру для копирования сводной таблицы или еге части в Microsoft Excel или Microsoft Word в качестве отформатированной неинтерактивной таблицы.
1. Выполните одно из следующих действий.
о Чтобы скопировать всю сводную таблицу, щелкните строку заголовка сводной таблицы. о Чтобы скопировать часть сводной таблицы, выделите нужные элементы.
2. На панели инструментов сводной таблицы нажмите кнопку Копировать
3. Переключитесь в Microsoft Excel или Microsoft Word и щелкните место, где должны отображаться данные из сводной таблицы.
4. Нажмите кнопку Вставить I
При копировании сводной таблицы или ее фрагмента копируются только элементы форматирования и значения данных. Связь между копией в Microsoft Excel или Microsoft Word и исходной базой данных не поддерживается.
Можно скопировать фрагмент сводной таблицы в другие программы, такие как Microsoft Access, в виде неформатированного текста.
Обновление сводной таблицы для отображения обновленных исходных данных Стр. 1 из 1
Обновление сводной таблицы для отображения обновленных исходных данных
1. Щелкните сводную таблицу.
2. На панели инструментов сводной таблицы нажмите кнопку Обновить
• Эмблема Microsoft Office ^ перестает вращаться при завершении операции обновления. Во время операции обновления сводной таблицы пользователь не может работать с ней и вносить изменения.
• Чтобы прервать операцию обновления, нажмите клавишу ESC. Это можно сделать только при пересчете сводной таблицы, но не во время загрузки данных из источника.
file://E:Documents and SettingsAdministratorLocal SettingsTemp
В сводных таблицах отсутствуют команды поиска. Однако пользователь имеет возможность использовать фильтры для поиска конкретных значений или всех данных, отвечающих определенному значению.
Фильтрация поля (Автофильтрация). Фильтр можно применять к полям строк, столбцов и области данных. Когда фильтр применяется к полю, отбираются один или несколько элементов данных в поле для просмотра, а остальные элементы скрываются.
• Поле «Спорт» отфильтровано для отображения только продаж клюшек для гольфа .
Источник
Как экспортировать данные сводной таблицы в Excel
Оглавление:
Видео: Создание сводной таблицы в Excel (Марш 2023)
Microsoft Excel предоставляет широкий спектр функций для манипулирования и анализа данных. Традиционные линейные, столбчатые или круговые диаграммы просто отображают точки или подсчитывают данные для визуализации с использованием стандартного графического шаблона. Сводные таблицы являются более универсальными. Это позволяет пользователю сфокусироваться на одном или нескольких конкретных полях электронной таблицы и создать таблицу электронных таблиц нового типа, которая отображает все другие данные, связанные с этими выбранными полями. Хотя это само по себе мощно, сводные таблицы предоставляют дополнительную возможность затем экспортировать результаты отдельных полей из таблицы в новую электронную таблицу Excel.
кредит: Сири Стаффорд / Digital Vision / Getty Images
Шаг 1
Загрузите электронную таблицу Excel.
Шаг 2
Просмотрите таблицу и решите, какие компоненты сводных данных вы хотите экспортировать в новую электронную таблицу Excel. Сводная таблица делит данные электронной таблицы на несколько категорий в зависимости от форматирования таблицы. Однако таблица не показывает исходные данные, только информацию суммирования. Возможно, вы захотите экспортировать все исходные строки данных электронной таблицы, которые соответствуют определенному числу, которое отображается в сводной таблице.
Шаг 3
Дважды щелкните по выбранному числовому результату в сводной таблице. Новая электронная таблица немедленно создается, и все соответствующие данные из исходного источника данных экспортируются из поля сводной таблицы в новую электронную таблицу.
Шаг 4
Нажмите на вкладку электронной таблицы сводной таблицы, чтобы вернуться к сводной таблице.
Шаг 5
Дважды щелкните по числовому результату любой другой строки таблицы, чтобы создать дополнительный отдельный экспорт данных в другую новую электронную таблицу Excel. Повторяйте этот процесс по мере необходимости, пока не будут экспортированы все требуемые отдельные сводные данные. Excel удобно помещает каждый экспорт в новую отдельную электронную таблицу, чтобы наборы данных были независимы друг от друга для дальнейшего анализа.
Как изменить строки сводной таблицы на столбцы
Excel — это программное обеспечение для работы с электронными таблицами, которое является частью пакета Microsoft Office. Вы можете использовать Excel разными способами. Вы можете использовать его для организации данных или создания отчетов, которые анализируют .
Как изменить исходные данные сводной таблицы
В приложении электронных таблиц Microsoft Excel вы можете управлять данными и выполнять различные вычисления. Вы также можете создать сводную таблицу, которая представляет собой отчет, который анализирует и .
Как удалить пробелы из сводной таблицы в Excel
Сводные таблицы используются в Microsoft Excel как инструменты для анализа, суммирования и исследования данных. Использование сводной таблицы позволяет сортировать большие объемы данных, чтобы вы .
Источник
Uarabey Пользователь Сообщений: 71 |
Добрый день! Прошу помощи — на форуме не нашел(( есть сводная табличка, в которой отображаются данные по входящим звонкам (столбцы дата и откуда звонок). Настроив фильтр, можно посмотреть сумму звонков в компанию за конкретно взятый месяц. Вопрос: можно ли эту сумму за конкретный месяц как-то отображать в ячейке на другом листе и чтобы после снятия фильтра она не менялась, а обновлялась вместе со сводной таблицей? Заранее спасибо за помощь! |
Владимир Пользователь Сообщений: 8196 |
{quote}{login=uarabey}{date=02.11.2011 05:04}{thema=Экспорт данных из сводной таблицы}{post}Добрый день! … и чтобы после снятия фильтра она не менялась, а обновлялась вместе со сводной таблицей? {/post}{/quote} Это как понять не менялась, но обновлялась? «..Сладку ягоду рвали вместе, горьку ягоду я одна.» |
Serge Пользователь Сообщений: 11308 |
{quote}{login=uarabey}{date=02.11.2011 05:04}{thema=Экспорт данных из сводной таблицы}{post}…можно ли эту сумму за конкретный месяц как-то отображать в ячейке на другом листе и чтобы после снятия фильтра она не менялась, а обновлялась вместе со сводной таблицей? |
Uarabey Пользователь Сообщений: 71 |
Имеется ввиду, что в отдельной ячейке нужно видеть сумму звонков за отдельно взятый месяц, например март 2011 (см. пример). {quote}{login=Владимир}{date=02.11.2011 05:13}{thema=Re: Экспорт данных из сводной таблицы}{post}{quote}{login=uarabey}{date=02.11.2011 05:04}{thema=Экспорт данных из сводной таблицы}{post}Добрый день! … и чтобы после снятия фильтра она не менялась, а обновлялась вместе со сводной таблицей? {/post}{/quote} Это как понять не менялась, но обновлялась? |
GIG_ant Пользователь Сообщений: 3102 |
а почему бы не считать сумму звонков не по сводной а по исходным данным. см файл |
Uarabey Пользователь Сообщений: 71 |
Что-то мне подсказывает, что Ваша формула не сработает, учитывая, что месяц «3» есть и в 2010, и в 2011 году. В этом файле-примере не указал, в рабочем файле есть данные за два года. {quote}{login=GIG_ant}{date=02.11.2011 05:52}{thema=}{post}а почему бы не считать сумму звонков не по сводной а по исходным данным. см файл{/post}{/quote} |
GIG_ant Пользователь Сообщений: 3102 |
Если вы хотите получить вразумительный ответ, давайте всю структуру исходных данных, и итоговую хотелку. А то можно долго гадать что у вас там еще есть кроме года и месяца, например время до обеда и после ). |
Kuzmich Пользователь Сообщений: 7998 |
Сделайте в сводной таблице группировку |
Владимир Пользователь Сообщений: 8196 |
=СУММПРОИЗВ((ТЕКСТ($E$5:$E$16;»ММГГГГ»)=»032011″)*$F$5:$I$16) —— «..Сладку ягоду рвали вместе, горьку ягоду я одна.» |
Uarabey Пользователь Сообщений: 71 |
Вроде больше нет условий — данные за несколько лет, нужны суммы по каждому месяцу. Можно конечно сделать много сводных, поставить фильтр по дате и ссылаться на каждую ячейку с суммой за месяц, но это не самое рациональное решение, как мне кажется. {quote}{login=GIG_ant}{date=02.11.2011 06:04}{thema=}{post}Если вы хотите получить вразумительный ответ, давайте всю структуру исходных данных, и итоговую хотелку. А то можно долго гадать что у вас там еще есть кроме года и месяца, например время до обеда и после ).{/post}{/quote} |
R Dmitry Пользователь Сообщений: 3103 Excel,MSSQL,Oracle,Qlik |
#12 02.11.2011 18:24:42 =ПОЛУЧИТЬ.ДАННЫЕ.СВОДНОЙ.ТАБЛИЦЫ()
|
|
R Dmitry Пользователь Сообщений: 3103 Excel,MSSQL,Oracle,Qlik |
#13 02.11.2011 18:34:01 {quote}{login=R Dmitry}{date=02.11.2011 06:24}{thema=}{post}=ПОЛУЧИТЬ.ДАННЫЕ.СВОДНОЙ.ТАБЛИЦЫ() хотя нет она возвращает только видимые значения сводной таблицы
|
|
Uarabey Пользователь Сообщений: 71 |
Спасибо, почитал справку, судя по всему, это именно то, что мне нужно, но синтаксис никак не могу понять применительно к моей табличке, не поможете? {quote}{login=R Dmitry}{date=02.11.2011 06:24}{thema=}{post}=ПОЛУЧИТЬ.ДАННЫЕ.СВОДНОЙ.ТАБЛИЦЫ() |
г-н Горобец, а пример Кузьмича чем не нравится?.. Рисуем =, выбираем ИГОГО по месяцу требуемого року и … усё… |
|
Uarabey Пользователь Сообщений: 71 |
Господа, научите меня серого, как итого по месяцу в сводной таблице сделать…. {quote}{login=}{date=02.11.2011 06:50}{thema=}{post}г-н Горобец, а пример Кузьмича чем не нравится?.. Рисуем =, выбираем ИГОГО по месяцу требуемого року и … усё… ;){/post}{/quote} |
Юрий М Модератор Сообщений: 60570 Контакты см. в профиле |
{quote}{login=uarabey}{date=02.11.2011 05:58}{thema=Re: }{post}Что-то мне подсказывает, что Ваша формула не сработает, учитывая, что месяц «3» есть и в 2010, и в 2011 году. В этом файле-примере не указал, в рабочем файле есть данные за два года.{quote}{login=GIG_ant}{date=02.11.2011 05:52}{thema=}{post}{/post}{/quote}{/post}{/quote}А вот кто мешает СРАЗУ корректные исходные данные давать? |
{quote}{login=uarabey}{date=02.11.2011 07:14}{thema=Re: }{post}Господа, научите меня серого, как итого по месяцу в сводной таблице сделать….{/quote} примерно так |
|
Guest Гость |
#20 03.11.2011 10:35:20 Большое спасибо, все получилось! {quote}{login=}{date=02.11.2011 07:37}{thema=}{post}Скрин…{/post}{/quote} |
Давайте посмотрим правде в глаза. Независимо от того, чем мы занимаемся, рано или поздно нам придется иметь дело с повторяющимися задачами, такими как обновление ежедневного отчета в Excel.
Python идеально подходит для решения задач автоматизации. Но если вы работаете компании, которая не использует Python, вам будет сложно автоматизировать рабочие задачи с помощью этого языка. Но не волнуйтесь: даже в этом случае вы все равно сможете использовать свои навыки питониста.
Для автоматизации отчетов в Excel вам не придется убеждать своего начальника перейти на Python! Можно просто использовать модуль Python openpyxl, чтобы сообщить Excel, что вы хотите работать через Python. При этом процесс создания отчетов получится автоматизировать, что значительно упростит вашу жизнь.
Набор данных
В этом руководстве мы будем использовать файл Excel с данными о продажах. Он похож на те файлы, которые используются в качестве входных данных для создания отчетов во многих компаниях. Вы можете скачать этот файл на Kaggle. Однако он имеет формат .csv
, поэтому вам следует изменить расширение на .xlsx
или просто загрузить его по этой ссылке на Google Диск (файл называется supermarket_sales.xlsx).
Прежде чем писать какой-либо код, внимательно ознакомьтесь с файлом на Google Drive. Этот файл будет использоваться как входные данные для создания следующего отчета на Python:
Теперь давайте сделаем этот отчет и автоматизируем его составление с помощью Python!
Создание сводной таблицы с помощью pandas
Импорт библиотек
Теперь, когда вы скачали файл Excel, давайте импортируем библиотеки, которые нам понадобятся.
import pandas as pd import openpyxl from openpyxl import load_workbook from openpyxl.styles import Font from openpyxl.chart import BarChart, Reference import string
Чтобы прочитать файл Excel, создать сводную таблицу и экспортировать ее в Excel, мы будем использовать Pandas. Затем мы воспользуемся библиотекой openpyxl для написания формул Excel, создания диаграмм и форматирования электронной таблицы с помощью Python. Наконец, мы создадим функцию на Python для автоматизации всего этого процесса.
Примечание. Если у вас не установлены эти библиотеки в Python, вы можете легко установить их, выполнив pip install pandas
и pip install openpyxl
в командной строке.
[python_ad_block]
Чтение файла Excel
Прежде чем читать Excel-файл, убедитесь, что он находится там же, где и ваш файл со скриптом на Python. Затем можно прочитать файл Excel с помощью pd.read_excel()
, как показано в следующем коде:
excel_file = pd.read_excel('supermarket_sales.xlsx') excel_file[['Gender', 'Product line', 'Total']]
В файле много столбцов, но для нашего отчета мы будем использовать только столбцы Gender
, Product line
и Total
. Чтобы показать вам, как они выглядят, я выбрал их с помощью двойных скобок. Если мы выведем это в Jupyter Notebooks, увидим следующий фрейм данных, похожий на таблицу Excel:
Создание сводной таблицы
Теперь мы можем легко создать сводную таблицу из ранее созданного фрейма данных excel_file
. Для этого нам просто нужно использовать метод .pivot_table()
.
Предположим, мы хотим создать сводную таблицу, которая показывает, сколько в целом потратили на разные продуктовые линейки мужчины и женщины. Для этого мы пишем следующий код:
report_table = excel_file.pivot_table(index='Gender', columns='Product line', values='Total', aggfunc='sum').round(0)
Таблица report_table
должна выглядеть примерно так:
Экспорт сводной таблицы в файл Excel
Чтобы экспортировать созданную сводную таблицу, мы используем метод .to_excel()
. Внутри скобок нужно написать имя выходного файла Excel. В данном случае давайте назовем этот файл report_2021.xlsx.
Мы также можем указать имя листа, который хотим создать, и в какой ячейке должна находиться сводная таблица.
report_table.to_excel('report_2021.xlsx', sheet_name='Report', startrow=4)
Теперь файл Excel экспортируется в ту же папку, в которой находится ваш скрипт Python.
Создание отчета с помощью openpyxl
Каждый раз, когда мы захотим получить доступ к файлу, мы будем использовать load_workbook()
, импортированный из openpyxl. В конце работы мы будем сохранять полученные результаты с помощью метода .save()
.
В следующих разделах мы будем загружать и сохранять файл при каждом изменении. Вам это нужно сделать только один раз (как в полном коде, показанном в самом конце этого руководства).
Создание ссылки на строку и столбец
Чтобы автоматизировать отчет, нам нужно взять минимальный и максимальный активный столбец или строку, чтобы код, который мы собираемся написать, продолжал работать, даже если мы добавим больше данных.
Чтобы получить ссылки в книге Excel, мы сначала загружаем её с помощью функции load_workbook()
и находим лист, с которым хотим работать, используя wb[‘имя листа’]
. Затем мы получаем доступ к активным ячейкам с помощью метода .active
.
wb = load_workbook('report_2021.xlsx') sheet = wb['Report'] # cell references (original spreadsheet) min_column = wb.active.min_column max_column = wb.active.max_column min_row = wb.active.min_row max_row = wb.active.max_row
Давайте выведем на экран созданные нами переменные, чтобы понять, что они означают. В данном случае мы получим следующие числа:
Min Columns: 1 Max Columns: 7 Min Rows: 5 Max Rows: 7
Откройте файл report_2021.xlsx, который мы экспортировали ранее, чтобы убедиться в этом.
Как видно на картинке, минимальная строка – 5, максимальная — 7. Кроме того, минимальная ячейка – это A1
, а максимальная – G7
. Эти ссылки будут чрезвычайно полезны для следующих разделов.
Добавление диаграмм в Excel при помощи Python
Чтобы создать диаграмму в Excel на основе созданной нами сводной таблицы, нужно использовать модуль Barchart
. Его мы импортировали ранее. Для определения позиций значений данных и категорий мы используем модуль Reference
из openpyxl (его мы тоже импортировали в самом начале).
wb = load_workbook('report_2021.xlsx') sheet = wb['Report'] # barchart barchart = BarChart() #locate data and categories data = Reference(sheet, min_col=min_column+1, max_col=max_column, min_row=min_row, max_row=max_row) #including headers categories = Reference(sheet, min_col=min_column, max_col=min_column, min_row=min_row+1, max_row=max_row) #not including headers # adding data and categories barchart.add_data(data, titles_from_data=True) barchart.set_categories(categories) #location chart sheet.add_chart(barchart, "B12") barchart.title = 'Sales by Product line' barchart.style = 5 #choose the chart style wb.save('report_2021.xlsx')
После написания этого кода файл report_2021.xlsx должен выглядеть следующим образом:
Объяснение кода:
barchart = BarChart()
инициализирует переменнуюbarchart
из классаBarchart
.data
иcategories
– это переменные, которые показывают, где находится необходимая информация. Для автоматизации мы используем ссылки на столбцы и строки, которые определили выше. Также имейте в виду, что мы включаем заголовки в данные, но не в категории.- Мы используем
add_data()
иset_categories()
, чтобы добавить необходимые данные в гистограмму. Внутриadd_data()
добавимtitle_from_data = True
, потому что мы включили заголовки для данных. - Метод
sheet.add_chart()
используется для указания, что мы хотим добавить нашу гистограмму в лист Report. Также мы указываем, в какую ячейку мы хотим её добавить. - Дальше мы изменяем заголовок и стиль диаграммы, используя
barchart.title
иbarchart.style
. - И наконец, сохраняем все изменения с помощью
wb.save()
Вот и всё! С помощью данного кода мы построили диаграмму в Excel.
Вы можете набирать формулы в Excel при помощи Python так же, как вы это делаете непосредственно на листе Excel.
Предположим, мы хотим суммировать данные в ячейках B5
и B6
и отображать их в ячейке B7
. Кроме того, мы хотим установить формат ячейки B7
как денежный. Сделать мы это можем следующим образом:
sheet['B7'] = '=SUM(B5:B6)' sheet['B7'].style = 'Currency'
Довольно просто, не правда ли? Мы можем протянуть эту формулу от столбца B до G или использовать цикл for
для автоматизации. Однако сначала нам нужно получить алфавит, чтобы ссылаться на столбцы в Excel (A, B, C, …). Для этого воспользуемся библиотекой строк и напишем следующий код:
import string alphabet = list(string.ascii_uppercase) excel_alphabet = alphabet[0:max_column] print(excel_alphabet)
Если мы распечатаем excel_alphabet
, мы получим список от A до G.
Так происходит потому, что сначала мы создали алфавитный список от A до Z, а затем взяли срез [0:max_column]
, чтобы сопоставить длину этого списка с первыми 7 буквами алфавита (A-G).
Примечание. Нумерация в Python начинаются с 0, поэтому A = 0, B = 1, C = 2 и так далее. Срез [a:b]
возвращает элементы от a
до b-1
.
Применение формулы к нескольким ячейкам
После этого пройдемся циклом по столбцам и применим формулу суммы, но теперь со ссылками на столбцы. Таким образом вместо того, чтобы многократно писать это:
sheet['B7'] = '=SUM(B5:B6)' sheet['B7'].style = 'Currency'
мы используем ссылки на столбцы и помещаем их в цикл for
:
wb = load_workbook('report_2021.xlsx') sheet = wb['Report'] # sum in columns B-G for i in excel_alphabet: if i!='A': sheet[f'{i}{max_row+1}'] = f'=SUM({i}{min_row+1}:{i}{max_row})' sheet[f'{i}{max_row+1}'].style = 'Currency' # adding total label sheet[f'{excel_alphabet[0]}{max_row+1}'] = 'Total' wb.save('report_2021.xlsx')
После запуска кода мы получаем формулу суммы в строке Total
для столбцов от B до G:
Посмотрим, что делает данный код:
for i in excel_alphabet
проходит по всем активным столбцам, кроме столбца A (if i! = 'A'
), так как столбец A не содержит числовых данных- запись
sheet[f'{i}{max_row+1}'] = f'=SUM({i}{min_row+1}:{i}{max_row}'
это то же самое, что иsheet['B7'] = '=SUM(B5:B6)'
, только для столбцов от A до G - строчка
sheet [f '{i} {max_row + 1}'].style = 'Currency'
задает денежный формат ячейкам с числовыми данными (т.е. тут мы опять же исключаем столбец А) - мы добавляем запись
Total
в столбец А под максимальной строкой (т.е. под седьмой), используя код[f '{excel_alphabet [0]} {max_row + 1}'] = 'Total'
Форматирование листа с отчетом
Теперь давайте внесем финальные штрихи в наш отчет. Мы можем добавить заголовок, подзаголовок, а также настроить их шрифт.
wb = load_workbook('report_2021.xlsx') sheet = wb['Report'] sheet['A1'] = 'Sales Report' sheet['A2'] = '2021' sheet['A1'].font = Font('Arial', bold=True, size=20) sheet['A2'].font = Font('Arial', bold=True, size=10) wb.save('report_2021.xlsx')
Вы также можете добавить другие параметры внутри Font()
. В документации openpyxl можно найти список доступных стилей.
Итоговый отчет должен выглядеть следующим образом:
Автоматизация отчета с помощью функции Python
Теперь, когда отчет готов, мы можем поместить весь наш код в функцию, которая автоматизирует создание отчета. И в следующий раз, когда мы захотим создать такой отчет, нам нужно будет только ввести имя файла и запустить код.
Примечание. Чтобы эта функция работала, имя файла должно иметь структуру «sales_month.xlsx». Кроме того, мы добавили несколько строк кода, которые используют месяц/год файла продаж в качестве переменной, чтобы мы могли повторно использовать это в итоговом файле и подзаголовке отчета.
Приведенный ниже код может показаться устрашающим, но это просто объединение всего того, что мы написали выше. Плюс новые переменные file_name
, month_name
и month_and_extension
.
import pandas as pd import openpyxl from openpyxl import load_workbook from openpyxl.styles import Font from openpyxl.chart import BarChart, Reference import string def automate_excel(file_name): """The file name should have the following structure: sales_month.xlsx""" # read excel file excel_file = pd.read_excel(file_name) # make pivot table report_table = excel_file.pivot_table(index='Gender', columns='Product line', values='Total', aggfunc='sum').round(0) # splitting the month and extension from the file name month_and_extension = file_name.split('_')[1] # send the report table to excel file report_table.to_excel(f'report_{month_and_extension}', sheet_name='Report', startrow=4) # loading workbook and selecting sheet wb = load_workbook(f'report_{month_and_extension}') sheet = wb['Report'] # cell references (original spreadsheet) min_column = wb.active.min_column max_column = wb.active.max_column min_row = wb.active.min_row max_row = wb.active.max_row # adding a chart barchart = BarChart() data = Reference(sheet, min_col=min_column+1, max_col=max_column, min_row=min_row, max_row=max_row) #including headers categories = Reference(sheet, min_col=min_column, max_col=min_column, min_row=min_row+1, max_row=max_row) #not including headers barchart.add_data(data, titles_from_data=True) barchart.set_categories(categories) sheet.add_chart(barchart, "B12") #location chart barchart.title = 'Sales by Product line' barchart.style = 2 #choose the chart style # applying formulas # first create alphabet list as references for cells alphabet = list(string.ascii_uppercase) excel_alphabet = alphabet[0:max_column] #note: Python lists start on 0 -> A=0, B=1, C=2. #note2 the [a:b] takes b-a elements # sum in columns B-G for i in excel_alphabet: if i!='A': sheet[f'{i}{max_row+1}'] = f'=SUM({i}{min_row+1}:{i}{max_row})' sheet[f'{i}{max_row+1}'].style = 'Currency' sheet[f'{excel_alphabet[0]}{max_row+1}'] = 'Total' # getting month name month_name = month_and_extension.split('.')[0] # formatting the report sheet['A1'] = 'Sales Report' sheet['A2'] = month_name.title() sheet['A1'].font = Font('Arial', bold=True, size=20) sheet['A2'].font = Font('Arial', bold=True, size=10) wb.save(f'report_{month_and_extension}') return
Применение функции к одному файлу Excel
Представим, что исходный файл, который мы загрузили, имеет имя sales_2021.xlsx вместо supermarket_sales.xlsx. Чтобы применить формулу к отчету, пишем следующее:
automate_excel('sales_2021.xlsx')
После запуска этого кода вы получите файл Excel с именем report_2021.xlsx в той же папке, где находится ваш скрипт Python.
Применение функции к нескольким файлам Excel
Представим, что теперь у нас есть только ежемесячные файлы Excel sales_january.xlsx, sales_february.xlsx и sales_march.xlsx (эти файлы можно найти на GitHub).
Вы можете применить нашу функцию к ним всем, чтобы получить 3 отчета.
automate_excel('sales_january.xlsx') automate_excel('sales_february.xlsx') automate_excel('sales_march.xlsx')
Или можно сначала объединить эти три отчета с помощью pd.concat()
, а затем применить функцию только один раз.
# read excel files excel_file_1 = pd.read_excel('sales_january.xlsx') excel_file_2 = pd.read_excel('sales_february.xlsx') excel_file_3 = pd.read_excel('sales_march.xlsx') # concatenate files new_file = pd.concat([excel_file_1, excel_file_2, excel_file_3], ignore_index=True) # export file new_file.to_excel('sales_2021.xlsx') # apply function automate_excel('sales_2021.xlsx')
Заключение
Код на Python, который мы написали в этом руководстве, можно запускать на вашем компьютере по расписанию. Для этого нужно просто использовать планировщик задач или crontab. Вот и все!
В этой статье мы рассмотрели, как автоматизировать создание базового отчета в Excel. В дальнейшем вы сможете создавать и более сложные отчеты. Надеемся, это упростит вашу жизнь. Успехов в написании кода!
Перевод статьи «A Simple Guide to Automate Your Excel Reporting with Python».
В вашей работе возможно появится такая ситуация, когда вам потребуется послать некоторое количество информации из отчета сводной таблицы Excel, но при этом вы не хотите показывать источник исходных данных. То есть, если говорить другими словами, вы хотите «отключить» сводную таблицу от источника данных.
Отформатированная сводная таблица выглядит изначально в таком виде (см. рис.)
Excel не имеет возможности отключения сводной таблицы от источника данных, но в Excel есть гибкая функция которая называется Специальная вставка.
- В сводной таблице выберите необходимый вам диапазон и нажмите скопируйте его (воспользуйтесь сочетанием клавиш Ctrl+C).
- На новом листе или другом свободном месте текущего листа выделите ячейку отобразите диалоговое окно Специальная вставка.
- В диалоговом окне Специальная вставка, выберите Значения параметров и нажмите OK.
Необходимый вам диапазон будет скопирован без указания источника данных, но при этом к скопированным данным не будет применено форматирование и стили оформления, это надо будет сделать заново.
Чтобы при копировании диапазона сохранялось исходное форматирование выполните дополнительные действия:
- Отобразите Буфер обмена Office. В Excel 2007-2013 эта функция находится на вкладке Главная → Буфер обмена
- В открывшемся списке выберите нужный элемент (скорее всего это будет последний элемент) и нажмите вставить с исходным форматированием.
Теперь ваша скопированная сводная таблица не имеет связи с источником данных и сохранила исходное форматирование.
По теме
Новые публикации
17 авг. 2022 г.
читать 2 мин
В следующем пошаговом примере показано, как преобразовать сводную таблицу Excel в таблицу данных.
Шаг 1: введите данные
Во-первых, давайте введем следующие данные о продажах для трех разных магазинов:
Шаг 2: Создайте сводную таблицу
Чтобы создать сводную таблицу, щелкните вкладку « Вставка » на верхней ленте, а затем щелкните значок «Сводная таблица»:
В появившемся новом окне выберите A1: C16 в качестве диапазона и поместите сводную таблицу в ячейку E1 существующего рабочего листа:
После того, как вы нажмете OK , в правой части экрана появится новая панель полей сводной таблицы .
Перетащите поле « Магазин » в поле « Строки », затем перетащите поле « Продукт » в поле « Столбцы », затем перетащите поле « Количество » в поле « Значения »:
Сводная таблица будет автоматически заполнена следующими значениями:
Шаг 3. Преобразование сводной таблицы в таблицу
Чтобы преобразовать эту сводную таблицу в обычную таблицу данных, просто выберите всю сводную таблицу (в данном случае мы выбираем диапазон E1:I6 ) и нажмите Ctrl+C , чтобы скопировать данные.
Затем щелкните правой кнопкой мыши ячейку, в которую вы хотите вставить данные (мы выберем ячейку E8 ), и выберите параметр « Вставить значения »:
Значения из сводной таблицы будут автоматически вставлены как обычные значения данных, начиная с ячейки E8 :
Обратите внимание, что эта таблица не содержит каких-либо причудливых фильтров форматирования или раскрывающихся списков, которые были в сводной таблице.
У нас просто осталась таблица обычных значений данных.
Дополнительные ресурсы
В следующих руководствах объясняется, как выполнять другие распространенные задачи в Excel:
Как создавать таблицы в Excel
Как сгруппировать значения в сводной таблице по диапазону в Excel
Как сгруппировать по месяцам и годам в сводной таблице в Excel
Написано
Замечательно! Вы успешно подписались.
Добро пожаловать обратно! Вы успешно вошли
Вы успешно подписались на кодкамп.
Срок действия вашей ссылки истек.
Ура! Проверьте свою электронную почту на наличие волшебной ссылки для входа.
Успех! Ваша платежная информация обновлена.
Ваша платежная информация не была обновлена.