Разделение таблицы по листам
В Microsoft Excel есть много инструментов для сборки данных из нескольких таблиц (с разных листов или из разных файлов): прямые ссылки, функция ДВССЫЛ (INDIRECT), надстройки Power Query и Power Pivot и т.д. С этой стороны баррикад всё выглядит неплохо.
Но если вы нарвётесь на обратную задачу — разнесения данных из одной таблицы на разные листы — то всё будет гораздо печальнее. На сегодняшний момент цивилизованных встроенных инструментов для такого разделения данных в арсенале Excel, к сожалению, нет. Так что придется задействовать макрос на Visual Basic, либо воспольоваться связкой макрорекордер+Power Query с небольшой «доработкой напильником» после.
Давайте подробно рассмотрим, как это можно реализовать.
Постановка задачи
Имеем в качестве исходных данных вот такую таблицу размером больше 5000 строк по продажам:
Задача: разнести данные из этой таблицы по городам на отдельные листы этой книги. Т.е. на выходе нужно получить на каждом листе только те строки из таблицы, где продажа была в соответствующем городе:
Подготовка
Чтобы не усложнять код макроса и сделать его максимально простым для понимания, выполним пару подготовительных действий.
Во-первых, создадим отдельную таблицу-справочник, где в единственном столбце будут перечислены все города, для которых нужно создать отдельные листы. Само-собой, в этом справочнике могут быть не все города, присутствующие в исходных данных, а только те, по которым нам нужны отчеты. Проще всего создать такую таблицу, используя команду Данные — Удалить дубликаты (Data — Remove duplicates) для копии столбца Город или функцию УНИК (UNIQUE) — если у вас последняя версия Excel 365.
Поскольку новые листы в Excel по умолчанию создаются перед (левее) текущего (предыдущего), то имеет смысл также отсортировать города в этом справочнике по убыванию (от Я до А) — тогда после создания листы-города расположатся по алфавиту.
Во-вторых, преобразуем обе таблицы в динамические («умные»), чтобы с ними было проще работать. Используем команду Главная — Форматировать как таблицу (Home — Format as Table) или сочетание клавиш Ctrl+T. На появившейся вкладке Конструктор (Design) назовём их таблПродажи и таблГорода, соответственно:
Способ 1. Макрос для деления по листам
На вкладке Разработчик (Developer) нажмите на кнопку Visual Basic или используйте сочетание клавиш Alt+F11. В открывшемся окне редактора макросов вставьте новый пустой модуль через меню Insert — Module и скопируйте туда следующий код:
Sub Splitter() For Each cell In Range("таблГорода") Range("таблПродажи").AutoFilter Field:=3, Criteria1:=cell.Value Range("таблПродажи[#All]").SpecialCells(xlCellTypeVisible).Copy Sheets.Add ActiveSheet.Paste ActiveSheet.Name = cell.Value ActiveSheet.UsedRange.Columns.AutoFit Next cell Worksheets("Данные").ShowAllData End Sub
Здесь с помощью цикла For Each … Next реализован проход по ячейкам справочника таблГорода, где для каждого города происходит его фильтрация (метод AutoFilter) в исходной таблице продаж и затем копирование результатов на новый созданный лист. Попутно созданный лист переименовывается в то же имя города и на нем включается автоподбор ширины столбцов для красоты.
Запустить созданный макрос в Excel можно на вкладке Разработчик кнопкой Макросы (Developer — Macros) или сочетанием клавиш Alt+F8.
Способ 2. Создаем множественные запросы в Power Query
У предыдущего способа, при всей его компактности и простоте, есть существенный недостаток — созданные макросом листы не обновляются при изменениях в исходной таблице продаж. Если обновление «на лету» необходимо, то придется использовать связку VBA+Power Query, а точнее — создавать с помощью макроса не просто листы со статическими данными, а обновляемые запросы Power Query.
Макрос в этом случае частично похож на предыдущий (в нём тоже есть цикл For Each … Next для перебора городов в справочнике), но внутри цикла будет уже не фильтрация и копирование, а создание запроса Power Query и выгрузка его результатов на новый лист:
Sub Splitter2() For Each cell In Range("таблГорода") ActiveWorkbook.Queries.Add Name:=cell.Value, Formula:= _ "let" & Chr(13) & "" & Chr(10) & " Источник = Excel.CurrentWorkbook(){[Name=""таблПродажи""]}[Content]," & Chr(13) & "" & Chr(10) & " #""Измененный тип"" = Table.TransformColumnTypes(Источник,{{""Категория"", type text}, {""Наименование"", type text}, {""Город"", type text}, {""Менеджер"", type text}, {""Дата сделки"", type datetime}, {""Стоимость"", type number}})," & Chr(13) & "" & Chr(10) & " #""Строки с примененным фильтром"" = Table.Se" & _ "lectRows(#""Измененный тип"", each ([Город] = """ & cell.Value & """))" & Chr(13) & "" & Chr(10) & "in" & Chr(13) & "" & Chr(10) & " #""Строки с примененным фильтром""" ActiveWorkbook.Worksheets.Add With ActiveSheet.ListObjects.Add(SourceType:=0, Source:= _ "OLEDB;Provider=Microsoft.Mashup.OleDb.1;Data Source=$Workbook$;Location=" & cell.Value & ";Extended Properties=""""" _ , Destination:=Range("$A$1")).QueryTable .CommandType = xlCmdSql .CommandText = Array("SELECT * FROM [" & cell.Value & "]") .RowNumbers = False .FillAdjacentFormulas = False .PreserveFormatting = True .RefreshOnFileOpen = False .BackgroundQuery = True .RefreshStyle = xlInsertDeleteCells .SavePassword = False .SaveData = True .AdjustColumnWidth = True .RefreshPeriod = 0 .PreserveColumnInfo = True .ListObject.DisplayName = cell.Value .Refresh BackgroundQuery:=False End With ActiveSheet.Name = cell.Value Next cell End Sub
После его запуска мы увидим те же листы по городам, но формировать их будут уже созданные запросы Power Query:
При любых изменениях в исходных данных достаточно будет обновить соответствующую таблицу правой кнопкой мыши — команда Обновить (Refresh) или обновить сразу все города оптом, используя кнопку Обновить всё на вкладке Данные (Data — Refresh All).
Ссылки по теме
- Что такое макросы, как их создавать и использовать
- Сохранение листов книги как отдельных файлов
- Сборка данных со всех листов книги в одну таблицу
Строки по значению ячейки на отдельный лист. |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
0 / 0 / 0 Регистрация: 05.02.2012 Сообщений: 18 |
|
1 |
|
Как вытащить строки из таблицы на другой лист по условию?05.02.2012, 21:28. Показов 29848. Ответов 22
Доброго времени суток! Имеется таблица где в строках содержится информация о жителях ( ФИО, адрес и др.). Необходимо, чтобы на разных листах формировались строки по условию — название улицы. Например, внес данные в общую базу, а на соответствующем листе эти данные отразились. Заранее спасибо, извините за корявый язык.
0 |
0 / 0 / 0 Регистрация: 05.02.2012 Сообщений: 18 |
|
05.02.2012, 22:18 [ТС] |
2 |
Как вытащить строки из таблицы на другой лист по условию?
0 |
956 / 596 / 11 Регистрация: 11.06.2010 Сообщений: 1,345 |
|
05.02.2012, 22:46 |
3 |
Сводной таблицей можно
0 |
0 / 0 / 0 Регистрация: 05.02.2012 Сообщений: 18 |
|
06.02.2012, 10:06 [ТС] |
4 |
Спасибо, что так оперативно ответили. Мне нужно немного не то: при добавлении записи в общую таблицу, данные должны отобразиться на листе с соответсвующей улицей. Спасибо.
0 |
956 / 596 / 11 Регистрация: 11.06.2010 Сообщений: 1,345 |
|
06.02.2012, 10:08 |
5 |
при добавлении записи в общую таблицу, данные должны отобразиться на листе с соответсвующей улицей А Вы добавлять пробовали? ЗЫ Если разрешены макросы, то можно сводную обновлять автоматически
1 |
0 / 0 / 0 Регистрация: 05.02.2012 Сообщений: 18 |
|
06.02.2012, 10:35 [ТС] |
6 |
Спасибо, разобрался. Открыл вложение без сохранения, и обновление не получалось. Теперь все ок.
0 |
956 / 596 / 11 Регистрация: 11.06.2010 Сообщений: 1,345 |
|
06.02.2012, 10:45 |
7 |
Добавляйте строки на лист Сводная и они сами появятся на нужном листе.
1 |
0 / 0 / 0 Регистрация: 05.02.2012 Сообщений: 18 |
|
06.02.2012, 14:37 [ТС] |
8 |
Спасибо еще раз, хотелось бы узнать , конечно, как вы поставили фильтр. Попробую разобраться сам, если не трудно напишите.
0 |
0 / 0 / 0 Регистрация: 05.02.2012 Сообщений: 18 |
|
07.02.2012, 22:54 [ТС] |
9 |
Здравствуйте Вам. Разобрался вочти во всем. Проблема-не могу выполнить сортировку в сводной таблице. Помогите…
0 |
956 / 596 / 11 Регистрация: 11.06.2010 Сообщений: 1,345 |
|
07.02.2012, 23:06 |
10 |
Рассказывайте что не получается. ЗЫ Версию Excel скажите
0 |
0 / 0 / 0 Регистрация: 05.02.2012 Сообщений: 18 |
|
07.02.2012, 23:30 [ТС] |
11 |
Есть сводная таблица и есть выбранные с Вашей помошью отдельные улицы на отдельных листах. Вот на этих листах не могу выполнить сортировку, например, по адресу проживания. Добавлено через 13 минут
0 |
956 / 596 / 11 Регистрация: 11.06.2010 Сообщений: 1,345 |
|
07.02.2012, 23:41 |
12 |
Об этом надо было в самом начале писать…
1 |
0 / 0 / 0 Регистрация: 05.02.2012 Сообщений: 18 |
|
08.02.2012, 17:24 [ТС] |
13 |
Спасибо, все получается, почти все. После обновления не сохраняется увеличение ширины строк в не сводной таблице. Как быть?
0 |
956 / 596 / 11 Регистрация: 11.06.2010 Сообщений: 1,345 |
|
08.02.2012, 17:33 |
14 |
ПКМ по сводной — Параметры сводной таблицы — Разметка и формат — Автоматически изменять ширину столбцов при обновлении
0 |
0 / 0 / 0 Регистрация: 05.02.2012 Сообщений: 18 |
|
08.02.2012, 17:46 [ТС] |
15 |
Пробовал изначально. Меняю ширину строк в «красноармейская» 20 пикселей, после в сводной добавляю запись, возвращаюсь обратно — ширина строк вернулась к прежнему значению.
0 |
956 / 596 / 11 Регистрация: 11.06.2010 Сообщений: 1,345 |
|
08.02.2012, 17:50 |
16 |
Меняю ширину строк в «красноармейская» 20 пикселей, после в сводной добавляю запись, возвращаюсь обратно — ширина строк вернулась к прежнему значению. Быть такого не может.
0 |
0 / 0 / 0 Регистрация: 05.02.2012 Сообщений: 18 |
|
08.02.2012, 17:55 [ТС] |
17 |
Галки нет. Может быть я не так выразился — высоту строк, а не ширину.
0 |
0 / 0 / 0 Регистрация: 05.02.2012 Сообщений: 18 |
|
09.02.2012, 18:48 [ТС] |
18 |
Хороший сайт excelworld.ru
0 |
0 / 0 / 0 Регистрация: 05.02.2012 Сообщений: 18 |
|
11.02.2012, 16:30 [ТС] |
19 |
Вы сделали автоматическое обновление данных (хотелось бы знать как?) на двух листах. Я собираюсь добавить еще 22 листа. Как автоматически обновить данные?
0 |
956 / 596 / 11 Регистрация: 11.06.2010 Сообщений: 1,345 |
|
11.02.2012, 16:57 |
20 |
Может быть я не так выразился — высоту строк, а не ширину. Ничего себе «не так»!
Вы сделали автоматическое обновление данных (хотелось бы знать как?) на двух листах. Я собираюсь добавить еще 22 листа. Как автоматически обновить данные? Для того что бы не использовать события 22-х листов можно использовать уход с листа Сводная. Код Private Sub Worksheet_Deactivate() ActiveWorkbook.RefreshAll End Sub Теперь сводная на всех листах обновится, как только Вы перейдёте на любой лист после внесения изменений на листе Сводная
1 |
Например, у вас есть таблица заработной платы, и вы хотите распечатать каждую запись на отдельной странице в Excel, как вы с этим справляетесь? В этой статье будут представлены три метода, позволяющих легко сделать это в Excel.
- Распечатайте каждую строку / ячейку на отдельной странице с регулировкой высоты строки
- Распечатайте каждую строку / ячейку на отдельной странице с помощью VBA
- Распечатайте каждую строку/ячейку на отдельной странице с помощью Kutools for Excel (с заголовком)
- Печатайте каждую строку на отдельной странице с помощью Kutools for Excel (без заголовка)
Распечатайте каждую строку / ячейку на отдельной странице с регулировкой высоты строки
Если строка достаточно высока, чтобы занимать страницу для печати, она будет напечатана на одной странице. Таким образом, этот метод поможет вам настроить высоту строки для печати каждой строки / ячейки на отдельной странице в Excel.
1. Нажмите Макет страницы > Поля > Пользовательские Поля.
2. В открывшемся диалоговом окне Параметры страницы введите 2.5 в оба На главную коробка и Дно и нажмите OK кнопку.
Внимание: Количество верхнего и нижнего полей может отличаться в зависимости от размера бумаги. Возможно, вам придется отрегулировать его в вашем случае.
3. Выберите все строки, каждую из которых вы будете печатать на одной странице, щелкните правой кнопкой мыши заголовок строки и выберите Высота строки из контекстного меню.
4. В открывшемся диалоговом окне Высота строки введите 250 в поле Высота строки и нажмите OK кнопку.
5. Нажмите Файл (или кнопка Office)> Печать / PDF, вы увидите каждую строку на отдельной странице в области предварительного просмотра, как показано на снимке экрана ниже, и нажмите кнопку Печать / PDF кнопку, чтобы распечатать их.
Распечатайте каждую строку / ячейку на отдельной странице с помощью VBA
Здесь мы также предоставляем код VBA для печати каждой строки / ячейки на отдельной странице в Excel.
1. нажмите другой + F11 одновременно клавиши, чтобы открыть окно Microsoft Visual Basic для приложений.
2. Нажмите Вставить > Модули, а затем вставьте следующий код в открывающееся окно модуля.
VBA: печатать каждую строку / ячейку на отдельной странице в Excel
Sub PrintOneLine()
Dim Rng As Range
Dim WorkRng As Range
Dim xWs As Worksheet
On Error Resume Next
xTitleId = "KutoolsforExcel"
Set WorkRng = Application.Selection
Set WorkRng = Application.InputBox("Range", xTitleId, WorkRng.Address, Type:=8)
Set xWs = WorkRng.Parent
For Each Rng In WorkRng
xWs.PageSetup.PrintArea = Rng.EntireRow.Address
xWs.PrintPreview
Next
End Sub
3. нажмите F5 ключ или щелкните Run кнопку для запуска этого VBA. Затем появится диалоговое окно, укажите диапазон, в котором вы будете печатать каждую строку на отдельной странице, и нажмите кнопку OK кнопку.
4. Теперь каждая строка просматривается в отдельном окне предварительного просмотра. Вам нужно нажать на Печать / PDF в каждом окне предварительного просмотра печати одну за другой, пока не будут напечатаны все строки.
Распечатайте каждую строку/ячейку на отдельной странице с помощью Kutools for Excel
Если у вас есть Kutools for Excel установлен, его Разделить на столбцы Утилита может помочь вам легко распечатать каждую строку / ячейку на отдельной странице в Excel.
1. Нажмите Кутулс Плюс > Разделить на столбцы.
2. В открывшемся диалоговом окне «Разбить на столбцы» вам необходимо:
(1) В Диапазон названий в поле укажите диапазон заголовков, который вы будете вставлять вверху каждой печатной страницы;
(2) В Диапазон данных поле укажите диапазон данных, который вы будете печатать каждую строку на отдельной странице;
(3) В Строк на печатной странице ящик, тип 1;
(4) В Количество сегментов коробка, тип 1.
(5) Щелкните значок Ok кнопку.
Затем вы увидите, что каждая строка разделена на одну страницу для печати на новом листе, а указанный диапазон заголовков добавляется на каждую страницу для печати. См. Снимок экрана ниже:
Примечание: Чтобы увидеть каждую страницу печати более наглядно, вы можете щелкнуть Вид > Предварительный просмотр разрыва страницы , чтобы перейти в режим предварительного просмотра разрыва страницы.
3. Нажмите Файл (или кнопка Office)> Печать / PDF, вы увидите, что каждая строка / ячейка отображается на отдельной странице.
Kutools for Excel — Включает более 300 удобных инструментов для Excel. Полнофункциональная бесплатная пробная версия 30-день, кредитная карта не требуется! Get It Now
Печатайте каждую строку на отдельной странице с помощью Kutools for Excel
Помимо утилиты Split to Column, Kutools for Excel разработал еще один Вставить разрыв страницы в каждую строку утилита, которая поможет вам распечатать каждую строку на отдельной странице в Excel.
1. Выберите диапазон, в котором вы будете печатать каждую строку на отдельной странице, и щелкните значок Кутулс Плюс > печать > Вставить разрыв страницы в каждую строку.
2. В открывшемся диалоговом окне «Вставить разрыв страницы в каждую строку» введите 1 в Интервал и нажмите Ok кнопку.
Затем появится диалоговое окно, в котором будет указано, сколько разрывов страниц было вставлено. Просто нажмите кнопку ОК, чтобы закрыть его.
3. Нажмите Файл (или кнопка Office)> Печать / PDF чтобы легко распечатать каждую строку на отдельной странице.
Kutools for Excel — Включает более 300 удобных инструментов для Excel. Полнофункциональная бесплатная пробная версия 30-день, кредитная карта не требуется! Get It Now
Демо: распечатайте каждую строку / ячейку на отдельной странице в Excel
Лучшие инструменты для работы в офисе
Kutools for Excel Решит большинство ваших проблем и повысит вашу производительность на 80%
- Снова использовать: Быстро вставить сложные формулы, диаграммы и все, что вы использовали раньше; Зашифровать ячейки с паролем; Создать список рассылки и отправлять электронные письма …
- Бар Супер Формулы (легко редактировать несколько строк текста и формул); Макет для чтения (легко читать и редактировать большое количество ячеек); Вставить в отфильтрованный диапазон…
- Объединить ячейки / строки / столбцы без потери данных; Разделить содержимое ячеек; Объединить повторяющиеся строки / столбцы… Предотвращение дублирования ячеек; Сравнить диапазоны…
- Выберите Дубликат или Уникальный Ряды; Выбрать пустые строки (все ячейки пустые); Супер находка и нечеткая находка во многих рабочих тетрадях; Случайный выбор …
- Точная копия Несколько ячеек без изменения ссылки на формулу; Автоматическое создание ссылок на несколько листов; Вставить пули, Флажки и многое другое …
- Извлечь текст, Добавить текст, Удалить по позиции, Удалить пробел; Создание и печать промежуточных итогов по страницам; Преобразование содержимого ячеек в комментарии…
- Суперфильтр (сохранять и применять схемы фильтров к другим листам); Расширенная сортировка по месяцам / неделям / дням, периодичности и др .; Специальный фильтр жирным, курсивом …
- Комбинируйте книги и рабочие листы; Объединить таблицы на основе ключевых столбцов; Разделить данные на несколько листов; Пакетное преобразование xls, xlsx и PDF…
- Более 300 мощных функций. Поддерживает Office/Excel 2007-2021 и 365. Поддерживает все языки. Простое развертывание на вашем предприятии или в организации. Полнофункциональная 30-дневная бесплатная пробная версия. 60-дневная гарантия возврата денег.
Вкладка Office: интерфейс с вкладками в Office и упрощение работы
- Включение редактирования и чтения с вкладками в Word, Excel, PowerPoint, Издатель, доступ, Visio и проект.
- Открывайте и создавайте несколько документов на новых вкладках одного окна, а не в новых окнах.
- Повышает вашу продуктивность на 50% и сокращает количество щелчков мышью на сотни каждый день!
Skip to content
Разделить таблицу на отдельные листы
Как разделить лист по значениям столбца в Excel
Мастер разделения таблиц для Excel предлагает быстрый способ разделить таблицу по отдельным листам на основе значений в выбранных столбцах. Для каждого ключевого значения будет создана новая таблица. Независимо от того, насколько велико количество ваших данных, разделение их на отдельные части или даже на несколько файлов больше не является проблемой!
-
60-дневная безусловная гарантия возврата денег
-
Бесплатные обновления на 2 года
-
Бесплатная и бессрочная техническая поддержка
С помощью инструмента разделения таблицы вы сможете:
Разделите таблицу по одному или нескольким ключевым столбцам
Ваша электронная таблица Excel может быть разделена на отдельные таблицы в соответствии со значениями в одном или нескольких ключевых столбцах.
Выбрать имена для полученных листов или книг
Назовите новые листы ключевыми значениями или числами и, при желании, добавьте свой собственный текст к выбранным именам.
Сохранить результат в новую или текущую книгу
Сохраните полученные после операции разделения таблицы в текущую книгу или добавьте их в новую книгу Excel, указав ее расположение.
Разделить лист Excel на несколько файлов
Вставьте каждую новую таблицу в отдельную книгу Excel и укажите их место расположения.
Разделение листов за несколько кликов
Удобный и простой в использовании инструмент
Что такое мастер разделения таблиц и для чего он мне нужен?
Мастер разделения таблиц — это надстройка для Microsoft Excel, которая разделяет организованные по столбцам таблицы Excel на несколько листов в соответствии с ключевыми значениями в выбранных столбцах.
Как работает мастер разделения таблицы?
Мастер разделения таблицы предлагает вам пять быстрых шагов для получения результата:
- Выберите исходную таблицу, которую нужно разделить на части.
- Выберите ключевые столбцы.
- Укажите место назначения результатов.
- Выберите, как назвать новые листы или книги.
- Нажмите « Готово» и наслаждайтесь результатом.
Могу ли я создать свои новые таблицы в той же книге, что и основная таблица?
Да, чтобы создать новые таблицы в той же книге, установите флажок Текущая книга на шаге 3.
Мне нужно, чтобы каждая разделенная таблица была записана в отдельной книге. Возможно ли это?
Да, для выполнения этой задачи установите флажок Несколько новых книг на шаге 3. Если вам нужно создать только одну новую книгу и разместить в ней все разделенные таблицы, выберите параметр Новая книга на шаге 3.
А как насчет наименования новых листов?
Новые листы могут быть названы порядковыми номерами или же ключевыми значениями из выбранных столбцов. Кроме этого, вы можете добавить любой текст к этим именам.
Могу ли я сохранить шапку моей основной таблицы в новых таблицах?
Да, для этого выберите опцию Копировать заголовок на шаге 4.
Скачать Ultimate Suite
Рейтинговые
Да благословят вас боги! Вы не просто мне жизнь облегчили за мгновение ока, вы спасли мои нервы, настроение и целый месяц! Бесконечно вам благодарна, о потрясающие создатели невероятного софта