Разделение таблицы по листам
В 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).
Ссылки по теме
- Что такое макросы, как их создавать и использовать
- Сохранение листов книги как отдельных файлов
- Сборка данных со всех листов книги в одну таблицу
Подготовить Microsoft Excel Отлично подходит для многих повседневных задач. Но время от времени вы можете столкнуться с одним из его недостатков: размером таблицы. Прочтите, чтобы узнать, как уменьшить размер таблицы Excel или разделить большой CSV-файл на несколько файлов.
Вы можете подумать: «Зачем мне нужно разбивать большой файл Excel на несколько файлов меньшего размера?» Это интересный вопрос, особенно с учетом того, что в Excel есть ограничение на количество строк в электронной таблице, равное 1 048 576.
Более миллиона строк кажутся исключительной ценностью. Однако достичь предела класса проще, чем вы думаете, особенно при выполнении определенных задач.
Например, если вы занимаетесь маркетингом по электронной почте, вы можете импортировать файл CSV, содержащий миллионы адресов электронной почты. Единственная проблема в том, как управлять таблицей с множеством адресов? Кроме того, что, если кто-то отправит вам CSV-файл, в котором уже превышен лимит (из другого приложения)?
Если это похоже на проблему, с которой вы, вероятно, столкнетесь, попробуйте следующие пять способов разделить большой файл CSV или Excel на несколько файлов меньшего размера.
У вас нет под рукой большого CSV-файла, но вы хотите поэкспериментировать дома? Я использую группу Открытое исследование данных о COVID-19 Для этих примеров, которые вы также можете скачать и использовать.
1. Разделите файл CSV с помощью приложения.
Есть много полезных приложений для разделения CSV. Вот два лучших варианта. Справедливое предупреждение, однако, при запуске этих приложений они иногда сталкиваются с проблемами памяти, что является общей проблемой для приложений разделения CSV.
Бесплатный Огромный Сплиттер CSV
Подготовить Бесплатный Огромный Сплиттер CSV Важное приложение для разделения файлов CSV. Вы можете ввести CSV-файл, который хотите разделить, количество строк, которые вы хотите использовать, а затем выбрать Разделить файл. Количество строк определяет, сколько файлов вывода вы получите.
Сплиттер CSV
Сплиттер CSV Это второе приложение. Он предлагает те же функции, что и Free Huge CSV Splitter, хотя и с немного более элегантным дизайном. Он быстро разбивает ваш CSV-файл, позволяя указать количество строк, которые вы хотите обработать.
2. Использование командного файла
После этого вы можете создать программируемый командный файл. Вы можете использовать пакетный файл, чтобы обработать CSV и разбить его на более мелкие части, а также настроить файл для рендеринга различных частей.
Откройте новый текстовый документ, затем скопируйте и вставьте следующее:
@echo off setlocal ENABLEDELAYEDEXPANSION REM Edit this value to change the name of the file that needs splitting. Include the extension. SET BFN=HCAHPSHospital.csv REM Edit this value to change the number of lines per file. SET LPF=2500 REM Edit this value to change the name of each short file. It will be followed by a number indicating where it is in the list. SET SFN=HosptialSplitFile REM Do not change beyond this line. SET SFX=%BFN:~-3% SET /A LineNum=0 SET /A FileNum=1 For /F “delims==” %%l in (%BFN%) Do ( SET /A LineNum+=1 echo %%l >> %SFN%!FileNum!.%SFX% if !LineNum! EQU !LPF! ( SET /A LineNum=0 SET /A FileNum+=1 ) ) endlocal Pause
Вам нужно будет настроить пакетный файл перед запуском. Я расскажу вам, что делает каждая команда, и вы можете изменить ее, чтобы она соответствовала тому, как выглядит ваш командный файл, а также желаемому результату.
- «SET BFN =» должен указывать на файл CSV, который вы хотите разделить.
- «SET LPF =» — это количество строк, которым вы хотите ограничить свой новый файл.
- «SET SFN =» — это новая схема именования ваших разделенных файлов.
После того, как вы ввели свои переменные, перейдите к Файл -> Сохранить как. Выберите имя файла и выберите спасти. Затем выберите только что сохраненный текстовый файл и нажмите F2, чтобы переименовать его. заменить формат .текст б .bat и нажмите «OkКогда появится предупреждение. Теперь вы можете разделить большой CSV-файл на более мелкие выходные файлы.
3. Используйте сценарий PowerShell для разделения файла CSV.
вы можете использовать Пакетные файлы Для широкого круга повседневных задач. Но сценарии PowerShell быстрее, особенно для такого рода обработки и разделения.
Следующий сценарий быстро разбивает большой CSV-файл на файлы меньшего размера.
Сначала нажмите CTRL + X Чтобы открыть меню быстрого доступа Windows, выберите PowerShell. Если PowerShell не подходит, введите powershell в строке поиска меню «Пуск» и выберите наиболее подходящий вариант.
Теперь скопируйте и вставьте следующий скрипт:
$InputFilename = Get-Content ‘C:filelocation’
$OutputFilenamePattern = ‘output_done_’
$LineLimit = 50000
$line = 0
$i = 0
$file = 0
$start = 0
while ($line -le $InputFilename.Length) {
if ($i -eq $LineLimit -Or $line -eq $InputFilename.Length) {
$file++
$Filename = “$OutputFilenamePattern$file.csv”
$InputFilename[$start..($line-1)] | Out-File $Filename -Force
$start = $line;
$i = 0
Write-Host “$Filename”
}
$i++;
$line++
}
Замените местоположение файла в первой строке файлом CSV, затем запустите сценарий. Сценарий выводит файлы CSV меньшего размера в каталог пользователя. Например, мои файлы CSV находятся в C: Users Gavin с именем файла output_done_1.csv. Вы можете изменить имя вывода, изменив строку $ OutputFilenamePattern = ‘output_done_’.
Вы можете найти исходный текст в С.П.Джефф.
4. Разделите большой CSV-файл с помощью Power Pivot.
Предпоследнее решение по разделению большого CSV-файла на мелкие части фактически не разбивает его. Кроме того, он позволяет загрузить огромный файл CSV в Excel и использовать инструмент Power Pivot, чтобы открыть его. верный; Вы можете игнорировать ограничение количества строк в Excel и управлять файлом в приложении.
Вы можете добиться этого, создав ссылку на данные в CSV-файл, а затем используя Power Pivot для управления содержимым. Полное объяснение и руководство см. В статье. Хосе Баррето подробное описание процесса.
Короче говоря, Баррето создает сводную таблицу с «до 8.5 миллионов строк без каких-либо проблем». Изображение выше взято из сообщения в блоге, в котором показано, что в Excel используется всего 2 миллиона строк.
Помните, что этот процесс не разбивает CSV-файл на мелкие части. Однако это означает, что вы можете обрабатывать CSV-файл в Excel, что является очень полезной альтернативой. Если вам нужно больше подсказок, узнайте, как Использование сводной таблицы для анализа данных.
5. Разделите файл CSV в Интернете с помощью разделенного файла CSV.
Существуют также онлайн-сервисы, которые разбивают большой CSV-файл на более мелкие части. Один из этих вариантов — Разделить CSV , который является бесплатным онлайн-распространителем CSV.
Split CSV хорошо управляет набором данных COVID-19, разбивая его на простые в использовании части. Как и в случае с другими инструментами, вы можете ограничить количество строк в файле и разрешить ему разделение. Однако у меня не было большого CSV-файла для тестирования, поэтому ваш опыт может отличаться.
Split CSV также включает платные опции. Для функций, которые вы получаете после оплаты абонентской платы, вы можете использовать настраиваемый разделитель, выбрать выбор типов выходных файлов, удалить определенные символы из выходных файлов и удалить повторяющиеся строки.
Разделите файлы CSV на части, которыми легко манипулировать
Теперь у вас есть пять решений для разделения файлов CSV на небольшие части, что упрощает управление ими. Решения различаются по скорости и размеру файлов CSV, которыми они могут управлять, поэтому вам, возможно, придется поэкспериментировать, чтобы найти наиболее подходящее для вас. Вы также можете узнать о 3 способа разбить ячейку в Microsoft Excel.
Введение
Предположим, у нас есть рабочий лист с большим количеством данных, и нам нужно разделить данные на отдельные книги Excel на основе столбца «Категория». Решить данную проблему возможно ручным способом, применяя инструмент фильтрации данных. Однако повторное копирование данных потребует терпения.
Как быстро разделить таблицу Excel на отдельные книги макросом. Пошаговый алгоритм
- Сочетанием клавиш Alt+F11 открываем окно Visual Basic
- Создаем новый модуль Insert -> Module
- Вставляем код
Sub Разделить_столбец_по_книгам()
Const column = 2 'номер столбца, по которому будет происходить разделение.'
Const head = True
Set wbAct = ActiveWorkbook
Set dic = CreateObject("Scripting.Dictionary")
lr = Cells(Rows.Count, 1).End(xlUp).Row
lc = Cells(1, Columns.Count).End(xlToLeft).column
arr = Range("A1", Cells(lr, lc)).Value
If head Then fr = 2 Else fr = 1
For i = fr To UBound(arr)
If Trim(arr(i, column)) <> "" Then dic.Item(arr(i, column)) = dic.Item(arr(i, column)) & "|" & i
Next
iPath = wbAct.Path & Application.PathSeparator & "Result" & Application.PathSeparator
'Result - название папки с результатами'
If Dir(iPath, vbDirectory) = "" Then MkDir iPath
arrDic = dic.keys
Set Rng = Nothing
Application.DisplayAlerts = False
For i = 0 To UBound(arrDic)
rrs = Split(Mid(dic.Item(arrDic(i)), 2), "|")
If head Then Set Rng = Rows(1)
For Each rr In rrs
If Not Rng Is Nothing Then Set Rng = Union(Rows(rr), Rng) Else Set Rng = Rows(rr)
Next
Set wb = Workbooks.Add(1)
Set sh = wb.Sheets(1)
Rng.Copy
sh.[A1].PasteSpecial xlPasteColumnWidths
sh.[A1].PasteSpecial xlPasteAll
Set Rng = Nothing
wb.SaveAs iPath & Replace_symbols(arrDic(i)) & ".xlsx", xlOpenXMLWorkbook
wb.Close False
Next
Application.DisplayAlerts = True
End Sub
'Замена запрещённых символов в имени файла или папки'
Function Replace_symbols(ByVal txt As String) As String
St$ = "\/~!@#$%^&*=|`'"""
For i% = 1 To Len(St$)
txt = Replace(txt, Mid(St$, i, 1), "_")
Next
Replace_symbols = txt
End Function
- На второй строке кода, цифру 2 замените на номер столбца, в котором содержится критерий для разбиения
- Сохраните код Ctrl+S
- Сохраните файл Excel, как книгу с поддержкой макросов xlsm
- Выполните макрос Alt+F8
Папка с новыми файлами будет лежать по тому же пути, что и файл, в котором вы запускали макрос
Заключение
С помощью этого руководства и готового кода макроса Вы сможете сэкономить свое время и за несколько минут создать столько книг Excel, сколько уникальных значений в выбранном Вами столбце. Вся остальная информация автоматически перенесется в новые книги.
У нас Вы можете заказать выполнение задач по MS Excel и Google таблицам
А также, пройти бесплатные онлайн курсы по MS Excel с заданиями
В таблицах Excel данные упорядочиваются по строкам и столбцам. Однако иногда бывает удобно разделить содержимое на несколько файлов по одному столбцу. Если вам интересно как разбить Excel на несколько файлов на основе одного столбца? , так что обратите внимание на эту интересную статью.
Процесс разделения нескольких файлов в Excel может быть сложным, если у вас есть объемная информация , особенно если вы хотите выполнить это действие вручную. По этой причине можно использовать плагин для автоматического запуска процесса.
Также для оптимизации процессов при работе с Excel рекомендуется знать, как найти данные на двух или более листах Excel , процесс, который может быть выполнен очень легко, если вы знаете правильный метод.
Затем мы представляем вам всю информацию, которую вам нужно знать о Microsoft Excel и процедуру, если вы хотите разделить Excel на несколько файлов по одному столбцу.
Что такое Microsoft Excel?
Microsoft Excel — это приложение, входящее в состав пакета Office. Основана в 1985 году. и был очень полезен при выполнении задач в некоторых областях, таких как бухгалтерский учет, математика и финансы.
Используйте Solver для решения из уравнения и математические операции, или используйте функции сказать логично в Excel это процессы, которые должен знать каждый, чтобы ускорить работу.
Для чего используется Microsoft Excel?
Microsoft Excel используется для создания и редактирования электронных таблиц с помощью функций, упрощающих работу в этом приложении. Кроме того, пользователи могут программировать свои собственные функции, адаптированные к их потребностям, с помощью формул или кода, разработанного в визуальный Основные приложения.
Как работает Microsoft Excel?
Microsoft Excel работает как электронная таблица, в которой данные упорядочиваются по ячейкам. В связи с этим клетки пересечение строки и столбца. Эта табличная организация позволяет пользователям вводить числовые и / или буквенно-цифровые данные для выполнения различные расчеты .
Microsoft Excel упрощает использование диаграмм, анализ данных, создание фреймов и управление базами данных. Кроме того, он позволяет создавать формулы путем вставки функций.
Разделите Excel на несколько файлов по столбцу
Чтобы разделить Excel на несколько файлов на основе столбца, вам необходимо использовать инструмент под названием Данные XL для автоматического создания этого процесса. Вы можете получить инструмент от Загрузите DataXL, перейдя на предоставленной странице и нажав «Загрузить DataXL».
Загрузите инструмент Data XL для Excel
«Данные XL» это очень полезное дополнение, которое вы можете скачать для Microsoft Excel. Загружаемый файл сжат в формате .zip, поэтому процесс установки необходимо выполнять вручную.
Вставьте надстройку в Microsoft Excel
После загрузки Data XL разархивируйте файл .zip. Затем войдите в Excel и найдите опцию «Вставить». Там вы найдете «Мои дополнения» и «Управление другими надстройками» . Когда вы выберете последний вариант, вы увидите окно, в котором вы должны выбрать «Управление надстройками Excel». Затем нажмите кнопку «Перейти».
Позже вы увидите окно с несколькими доступными надстройками; ты должен нажать на кнопку «Просматривать» чтобы найти путь, по которому был распакован файл Data XL. Нажмите «ОК», и надстройка будет установлена в Microsoft Excel.
Используйте плагин Data XL
Чтобы использовать плагин Data XL, вам необходимо открыть файл, который вы хотите разделить, и активировать Data XL в из меню. Выберите параметр «Разделить данные», чтобы указать диапазон ячеек и столбцов, которые вы будете использовать для разделения файла Excel.
Затем выберите «Создать новые файлы по определенному пути» и укажите формат создаваемых файлов. Наконец, нажмите кнопку «Разделяй сейчас» . Следовательно, вы получите несколько файлов из одного столбца в Excel.
Вышеуказанное — наиболее эффективный способ разбить Excel в несколько файлов на основе столбца. После вышеизложенного мы рекомендуем вам защитить или установить ваш файл Excel только для чтения , чтобы защитить вашу работу.
Добавить это приложение в закладки
Нажмите Ctrl + D, чтобы добавить эту страницу в избранное, или Esc, чтобы отменить действие.
Отправьте ссылку для скачивания на
Отправьте нам свой отзыв
Ой! Произошла ошибка.
Недопустимый файл. Убедитесь, что загружается правильный файл.
Ошибка успешно зарегистрирована.
Вы успешно сообщили об ошибке. Вы получите уведомление по электронной почте, когда ошибка будет исправлена.
Нажмите эту ссылку, чтобы посетить форумы.
Немедленно удалите загруженные и обработанные файлы.
Вы уверены, что хотите удалить файлы?


