Как разделить файл Excel на несколько файлов — пошаговое руководство

При попытке разделить файл Microsoft Excel на несколько отдельных документов пользователи сталкиваются с ошибкой #СЛИШКОМ_МНОГО_ДАННЫХ или замедлением работы программы из-за перегруженных листов. Проблема возникает, когда объём данных превышает 100 000 строк или 50 листов в одном файле — стандартные функции «Сохранить как» и «Копировать-вставить» вручную занимают часы. Решение зависит от структуры таблицы: если данные сгруппированы по листам, достаточно экспорта каждого листа отдельно; если строки относятся к разным категориям (например, заказы по месяцам), потребуется фильтрация или макрос VBA.

В 90% случаев достаточно встроенных инструментов Excel«Разбиение по строкам» через Данные → Текст по столбцам или «Фильтр» с последующим копированием отфильтрованных данных. Однако для автоматизации процесса (например, ежемесячного разделения отчётов) лучше использовать Power Query или скрипты VBA. Ниже разобраны все методы с учётом ограничений версий Excel 2016–2023 и Excel Online.

1. Разделение по листам — самый быстрый способ

Если данные уже распределены по отдельным листам (например, Лист1, Лист2), их можно сохранить как отдельные файлы за 2 клика. Метод работает во всех версиях Excel, включая Excel Online, но не подходит для таблиц с одним листом.

Алгоритм:

  • 📄 Выделите вкладку листа, который нужно экспортировать (кликните по названию листа правой кнопкой).
  • 📋 Выберите Переместить/скопировать → в выпадающем меню Книга (новая) → нажмите «ОК».
  • 💾 Сохраните новый файл через Файл → Сохранить как.

Для пакетного экспорта всех листов используйте макрос:

Sub ExportSheetsToFiles()

Dim ws As Worksheet, wbNew As Workbook

For Each ws In ThisWorkbook.Worksheets

ws.Copy

Set wbNew = ActiveWorkbook

wbNew.SaveAs ThisWorkbook.Path & "\" & ws.Name & ".xlsx"

wbNew.Close

Next ws

End Sub

⚠️ Внимание: При экспорте листов с формулами проверьте ссылки на другие листы — они могут сломаться. Используйте Специальная вставка → Значения, если нужны только данные.
📊 Как часто вы делите файлы Excel?
Еженедельно
Раз в месяц
Редко
Никогда

2. Разделение по строкам с помощью фильтра

Когда данные находятся на одном листе, но их нужно разделить по критерию (например, по регионам или датам), используйте фильтр. Метод не требует VBA и работает в Excel 2010+.

Пошаговая инструкция:

  1. Выделите заголовки столбцов (первую строку).
  2. Нажмите Данные → Фильтр (или Ctrl+Shift+L).
  3. Раскройте фильтр в столбце с критерием разделения (например, Регион) и выберите первое значение (например, Москва).
  4. Скопируйте отфильтрованные строки (Ctrl+C) и вставьте в новый файл (Ctrl+N → Ctrl+V).
  5. Повторите для остальных значений.

Для ускорения процесса используйте расширенный фильтр:

  • 🔍 Создайте отдельный лист с уникальными значениями критерия (например, список регионов).
  • 📊 Вернитесь на исходный лист, выделите данные и нажмите Данные → Расширенный фильтр.
  • 📌 Укажите Диапазон условий (ячейки со списком регионов) и Поместить результат в диапазон (новый лист).

Создан резервный копия файла|Заголовки столбцов выделены|Фильтр применён к нужному столбцу|Новые файлы сохранены в отдельной папке

-->

3. Автоматическое разделение через Power Query

Power Query (доступен в Excel 2016+ и Excel 365) позволяет разделить таблицу по столбцу без VBA. Метод подходит для больших файлов (до 1 млн строк) и сохраняет форматирование.

Инструкция:

  1. Выделите исходную таблицу и нажмите Данные → Из таблицы/диапазона (в группе Получить данные).
  2. В открывшемся редакторе Power Query выберите столбец для разделения (например, Категория).
  3. Нажмите Главная → Группировать по и укажите:
    • 🔑 Столбец: выберите критерий (например, Категория).
    • 📊 Новое имя столбца: введите название (например, Данные).
    • 📄 Операция: Все строки.
  • Нажмите Закрыть и загрузить в...Только создать соединение.
  • Вернитесь в Power Query, кликните правой кнопкой по запросу → Загрузить в → выберите Новая книга для каждого значения.
  • ⚠️ Внимание: Power Query не сохраняет формулы — только значения. Если нужны вычисления, экспортируйте данные обратно в Excel и восстановите формулы вручную.
    Метод Макс. строк Сохраняет формулы Требует VBA Время выполнения (100к строк)
    Разделение по листам Неограничено Да Нет 1–2 минуты
    Фильтр 1 млн Да Нет 5–10 минут
    Power Query 1 млн Нет Нет 3–5 минут
    Макрос VBA Неограничено Да Да 2–3 минуты

    4. Разделение с помощью макроса VBA

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

    Пример кода для разделения по столбцу А (измените "A:A" на свой диапазон):

    Sub SplitDataByColumn()
    

    Dim ws As Worksheet, rng As Range, cell As Range

    Dim col As Range, dict As Object

    Set dict = CreateObject("Scripting.Dictionary")

    Set ws = ActiveSheet

    Set col = ws.Range("A:A").SpecialCells(xlCellTypeConstants)

    ' Собрать уникальные значения

    For Each cell In col

    If Not dict.Exists(cell.Value) Then

    dict.Add cell.Value, Nothing

    End If

    Next cell

    ' Создать файлы для каждого значения

    For Each Key In dict.Keys

    ws.AutoFilterMode = False

    ws.Range("A1").AutoFilter Field:=1, Criteria1:=Key

    ws.UsedRange.Copy

    Workbooks.Add

    ActiveSheet.Paste

    Application.DisplayAlerts = False

    ActiveWorkbook.SaveAs ThisWorkbook.Path & "\" & Key & ".xlsx"

    ActiveWorkbook.Close

    Application.DisplayAlerts = True

    Next Key

    ws.AutoFilterMode = False

    End Sub

    Как запустить:

    1. Нажмите Alt+F11 для открытия редактора VBA.
    2. Вставьте код в модуль (Insert → Module).
    3. Запустите макрос через F5 или кнопку Выполнить.

    5. Разделение через внешние инструменты

    Если встроенные методы не подходят (например, нужно разделить файл .xlsx размером 500 МБ), используйте сторонние утилиты:

    • 🔧 ASAP Utilities (плагин для Excel): функция Split → Worksheets to separate files.
    • 📂 Split CSV (онлайн-сервис): загружаете файл, указываете разделитель и критерий.
    • 🐍 Python + pandas: скрипт для разделения по строкам или столбцам (пример ниже).

    Пример кода на Python (требуется установка pandas и openpyxl):

    import pandas as pd
    
    

    Чтение файла

    df = pd.read_excel("input.xlsx", sheet_name="Лист1")

    Разделение по столбцу "Category"

    for category in df['Category'].unique():

    subset = df[df['Category'] == category]

    subset.to_excel(f"{category}.xlsx", index=False)

    ⚠️ Внимание: Онлайн-сервисы для разделения файлов могут не сохранять конфиденциальность данных. Для корпоративных отчётов используйте локальные инструменты.

    6. Особенности разделения в Excel Online

    Excel Online (веб-версия) не поддерживает VBA и Power Query, но позволяет разделить файл через фильтр или копирование листов.

    Ограничения:

    • 🚫 Нет функции Разбиение по строкам.
    • 📉 Максимум 50 листов в одном файле.
    • 🔄 Автосохранение может мешать ручному копированию.

    Обходной путь:

    1. Откройте файл в Excel Online и скопируйте данные.
    2. Создайте новый файл (Файл → Новая книга) и вставьте данные.
    3. Повторите для каждого блока.
    Как ускорить разделение в Excel Online?

    Используйте Google Sheets для промежуточного разделения: импортируйте файл в Google Диск, примените фильтр и экспортируйте отдельные листы обратно в .xlsx. Это быстрее, чем ручное копирование в Excel Online.

    Частые ошибки и как их избежать

    При разделении файлов пользователи сталкиваются с типичными проблемами:

    • 🔴 Сломанные ссылки: если в формулах есть ссылки на другие листы (=Лист2!A1), они перестанут работать после разделения. Решение: замените ссылки на абсолютные значения перед экспортом.
    • 🔴 Потеря форматирования: Power Query и некоторые макросы не сохраняют цвета ячеек или условное форматирование. Решение: используйте разделение через фильтр.
    • 🔴 Ограничение на 1 млн строк: в Excel 2016–2019 нельзя открыть файл с большим количеством данных. Решение: разделите исходный файл на части по 500 000 строк.

    Проверка перед разделением:

    Создана резервная копия исходного файла|Проверены ссылки в формулах|Удалены пустые строки/столбцы|Выбран оптимальный метод (фильтр/VBA/Power Query)

    -->

    FAQ: Ответы на популярные вопросы

    Можно ли разделить Excel на несколько файлов без потери формул?

    Да, но только при разделении по листам или через макрос VBA. Power Query и фильтр сохраняют только значения. Чтобы сохранить формулы:

    1. Скопируйте лист с формулами в новый файл.
    2. Используйте макрос, который копирует entire листы (пример в разделе 4).
    Как разделить файл Excel по 10 000 строк?

    Используйте макрос VBA с циклом, который копирует диапазоны по 10 000 строк:

    Sub SplitByRows()
    

    Dim ws As Worksheet, i As Long, maxRows As Long

    maxRows = 10000

    Set ws = ActiveSheet

    For i = 1 To ws.UsedRange.Rows.Count Step maxRows

    ws.Rows(i & ":" & i + maxRows - 1).Copy

    Workbooks.Add

    ActiveSheet.Paste

    ActiveWorkbook.SaveAs ThisWorkbook.Path & "\Part_" & (i \ maxRows) + 1 & ".xlsx"

    ActiveWorkbook.Close

    Next i

    End Sub

    Почему при разделении через Power Query пропадают диаграммы?

    Power Query работает только с данными и не переносит объекты (диаграммы, изображения, формы). Чтобы сохранить диаграммы:

    • Разделите файл через фильтр или VBA.
    • Скопируйте диаграммы вручную в новые файлы после разделения.
    Как объединить разделенные файлы обратно?

    Используйте Power Query:

    1. Создайте новый файл и нажмите Данные → Получить данные → Из файла → Из папки.
    2. Выберите папку с разделенными файлами и нажмите Объединить → Объединить и загрузить.

    Или воспользуйтесь макросом:

    Sub CombineFiles()
    

    Dim wb As Workbook, ws As Worksheet

    Dim mainWB As Workbook, mainWS As Worksheet

    Set mainWB = Workbooks.Add

    Set mainWS = mainWB.Sheets(1)

    Dim folderPath As String: folderPath = "C:\Папка_с_файлами\"

    Dim fileName As String: fileName = Dir(folderPath & "*.xlsx")

    Do While fileName <> ""

    Set wb = Workbooks.Open(folderPath & fileName)

    Set ws = wb.Sheets(1)

    ws.UsedRange.Copy mainWS.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0)

    wb.Close

    fileName = Dir()

    Loop

    End Sub

    Можно ли разделить Excel на несколько PDF?

    Да, через печать в PDF:

    1. Выделите лист или диапазон для экспорта.
    2. Нажмите Файл → Экспорт → Создать PDF/XPS.
    3. Укажите имя файла и повторите для других листов/диапазонов.

    Для пакетного экспорта используйте макрос:

    Sub ExportSheetsToPDF()
    

    Dim ws As Worksheet

    For Each ws In ThisWorkbook.Worksheets

    ws.ExportAsFixedFormat Type:=xlTypePDF, Filename:=ThisWorkbook.Path & "\" & ws.Name & ".pdf"

    Next ws

    End Sub