Перейти к содержимому

Как разбить файл excel на несколько файлов по количеству строк

  • автор:

Разбивка файла Excel на несколько файлов с заданным количеством строк

Надстройка SplitFile — Разбивка файла на несколько, с заданным количеством строк

Надстройка SplitFile позволяет создать из одного файла Excel несколько файлов, с заданным ограничением по количеству строк.

Обычно разбивка файла (формата XLSX или CSV) требуется для загрузки данных в интернет-магазин, когда в загружаемом файле много строк (десятки тысяч),
а движок интернет магазина не поддерживает большие файлы (или зависает из-за большого объема данных)

В настройках программы можно задать максимальное количество строк в создаваемых файлах, и формат создаваемых файлов.
Есть также опция добавления строки заголовка во все созданные файлы (строкой заголовка считается первая строка листа, — она будет скопирована во все файлы)

Файлы после разбивки получают имена вида Part##_ИмяИсходногоФайла.НовоеРасширение ,
где ## — порядковый номер файла (от 1 до количества файлов-частей), НовоеРасширение — тип файла, заданный в настройках,
ИмяИсходногоФайла — имя разбиваемого файла, без расширения

Все созданные файлы помещаются программой в специально создаваемую подпапку с названием files (имя подпапки можно изменить в настройках)
Если файлы с такими именами уже присутствуют в папке, — они перезаписываются.

Как разделить .xlsx по строкам?

honor8

Если файл сохранён на диске, можно так:
1. Открываете книгу с данными на нужном листе
2. Заходите в VBA (Alt+F11)
3. Выбираете в меню Insert -> Module
4. Вставляете нижеприведённый код
5. Нажимаете F5 (не сохраняете исходный файл)

Никакие C++ запускать не надо.

Для пытливых умов: Отказ от Слияния в пользу шаблонов https://toster.ru/q/320942

  • Facebook
  • Вконтакте
  • Twitter

honor8

kolyayolo, благодарю за замечание (обновил код), и хороший вопрос.
Для переноса ширины колонок нужно после объявления переменных сохранить значения ширины колонок в массив:

Затем, после вставки данных перенести значения ширины колонок из массива:

Спасибо за решение, искал везде, ваш подошел идеально! Единственный вопрос — а как сделать, чтобы полученные таблицы-файлы были «упакованы» в умные таблицы на выходе? Я не силен в VBA, подскажете какой код и куда его вписать?

Добавил код, который добавляет умную таблицу к диапазону, но есть проблема. У меня файлы формируются из заранее подготовленной умной таблицы, т.е. она разбивается на части. И этот (ваш) код получается формирует файлы с не отформатированными диапазонами, а последний файл именно форматируется в умную таблицу (как бы унаследует формат из исходного файла). Т.е. не все сформированные файлы с умными таблицами получаются, а только последний. А мне нужно, чтобы все были оформлены в умные таблицы. Я добавил код, который добавляет формат в полученные файлы, вот такое у меня получилось:

Но в результате получается ошибка, т.к. система пытается последнюю таблицу, которая «умная» тоже повторно оформить.
Подскажете, как подправить?

honor8

kolyayolo, alcompstudio, на технических ресурсах принято выражать свою положительную оценку кнопкой «Нравится«, тем самым указывая на полезность материала.

Для создания умной таблицы для всего активного листа с именем «Table_1» используется следующий метод (четвёртый параметр указывает на наличие заголовков):

Как разбить файл excel на несколько файлов по количеству строк

Например, у меня есть диапазон списка данных, теперь я хочу разделить его на несколько листов по количеству строк, в этом примере я разделю его на каждые 5 строк (см. Следующие снимки экрана). Есть ли способы помочь нам быстро решить эту проблему? Здесь я расскажу о двух приемах, которые помогут вам легко это сделать.

стрелка синий правый пузырь Разделение данных на несколько листов по количеству строк с кодом VBA
Удивительный! Использование эффективных вкладок в Excel, таких как Chrome, Firefox и Safari!
Экономьте 50% своего времени и сокращайте тысячи щелчков мышью каждый день!

Следующий код VBA может помочь вам разделить строки на несколько листов по количеству строк, сделайте следующее:

1. Удерживайте ALT + F11 , чтобы открыть Microsoft Visual Basic для приложений окно.

2. Нажмите Вставить > Модулии вставьте следующий код в окно модуля.

VBA: разделение данных на листы по количеству строк в Excel.

3, Затем нажмите F5 нажмите клавишу для запуска кода, и появится диалоговое окно для выбора диапазона для разделения, а затем нажмите OK, и еще один диалог, в котором вы можете указать количество строк. Смотрите скриншот:

4. Нажмите OK, а диапазон разбивается на несколько листов по количеству строк.

Внимание: Разделенные листы помещаются в конце главного рабочего листа.

стрелка синий правый пузырь Разделить данные на несколько рабочих листов по количеству строк с помощью Kutools for Excel

Приведенный выше код может разделить данные только по указанному количеству строк, и он не будет добавлять заголовок для каждого рабочего листа, если ваши данные имеют заголовок.

Но с Kutools for ExcelАвтора Разделить данные, вы не только можете вставлять заголовки для данных каждого рабочего листа, но также можете указать имена новых разделенных листов.

Kutools for Excel включает более 300 удобных инструментов Excel. Бесплатная пробная версия без ограничений в течение 30 дней. Получить сейчас

Если вы установили Kutools for Excel, пожалуйста, сделайте следующее:

1. Выберите диапазон данных, которые вы хотите разделить.

2. Нажмите Предприятие > Инструменты рабочего листа > Разделить данные (или Предприятие > Разделить данные ), см. снимок экрана:

документ-разделить данные-по-строкам6

3. В Разделить данные на несколько листов диалоговое окно:

  • Выберите Фиксированные строки от Сплит на основе вариант и введите количество строк, которое вы хотите разделить для каждого листа. (Если у ваших данных есть заголовки, и вы хотите вставить их в каждый новый разделенный лист, проверьте У моих данных есть заголовки опция).
  • Затем вы можете указать имена разделенных листов под Имя нового листа раздел, выберите правила имен рабочих листов из Правила раскрывающийся список, вы можете добавить Префикс or Суффикс также для имен листов. Смотрите скриншот:

документ-разделить данные-по-строкам7

4. После указания параметров нажмите OK, и выбранные данные были разделены на несколько листов новой книги каждые 5 строк. И заголовки вставляются для каждого нового рабочего листа. Смотрите скриншот:

Как разделить файл Excel на отдельные файлы (по листам)

Такое бывает довольно часто, делаешь ежегодный отчет, а в нем 12 месяцев, соответственно 12 листов. И нужно разделить этот файл таким образом, чтобы каждый лист стал отдельным файлом.

И конечно же, можно сделать это руками, но это крайне долго и неэффективно.

Я продемонстрирую вам простой код Visual Basic, который выполнит задачу за вас.

Делим файл Excel на несколько файлов по листам

Допустим, у нас есть ежегодный отчет, в котором по листам расписаны показатели компании за каждый месяц. Как на картинке ниже:

Код Visual Basic, который разделит таблицу на несколько файлов по месяцам:

Перед тем, как запустите этот код, сделайте следущее:

  1. Создайте новую папку, куда поместите результаты работы этого кода;
  2. А также, на всякий случай, сделайте копию оригинального файла.

Теперь создайте функцию в Visual Basic и смело запускайте код.

Этот код сам найдет путь до папки с файлом.

Как он работает?

Довольно просто, он открывает каждый лист и сохраняет его как отдельный файл с тем же названием.

Куда поместить этот код?

  • Щелкните на «Разработчик»;
  • Далее откройте VBA;
  • Правой кнопкой мышки на любой лист;.
  • Щелкните на «Insert» -> «Module»;
  • Поместите наш код в открывшееся окошко;
  • Теперь запустите код.

Итак, как только вы запустите код, он сразу же разделит ваш файл на несколько файлов по листам. Это крайне удобно, советую его сохранить. Даже если сейчас он вам не нужен, в будущем обязательно пригодится.

Как я говорил ранее, имя файла такое же, как и имя листа.

Также не забудьте сохранить файл с соответствующим расширением(.XLSM), так как мы используем функции Visual Basic.

В коде я специально сделал так, чтобы вы не видели все что происходит и это вам не мешало. Вы можете исправить это если вам наоборот нужно видеть то, что происходит.

Но также, опять повторюсь, обязательно сделайте копию вашего файла перед использованием функции! Потому что если работа Excel завершится из-за какой-либо ошибки или произойдет еще что-то неожиданное вы можете потерять свои данные!

Делим файл Excel на несколько PDF файлов по листам

Вот код для такого случая:

И снова, не забудьте сначала создать папку и обязательно сделать копию оригинального файла. Код разделит вашу табличку по страницам и создаст для каждой страницы отдельный PDF файл.

Разделите только те рабочие листы, в которых содержится слово/фраза, на отдельные файлы Excel

Бывают и такие ситуации, что отдельный файл нужно создать только для тех страниц, в названии которых есть определенный текст.

Допустим, у вас есть страницы отчета за разные года, в названии каждого листа указан год и месяц. Но вам нужно сохранить только те листы, которые относятся к 2020 году. Как это сделать?

Вот код Visual Basic:

Как вы могли заметить, прямо в коде, мы создали переменную и задали ей значение 2020.

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

Если совпадения не будут найдены — результат будет 0.

В этом коде используется цикл «Если/То». Если он находит нужное текстовое значение в имени листа, то сохраняет его отдельно, если не находит — просто пропускает.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *