Excel разбить строки в файлы

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

Option Explicit ' Обязательное объявление переменных
Option Base 1 ' Нижняя граница массива (по умолчанию)
'123456789012345678901234567890123456h8nor@ya567890123456789012345678toster56789

Sub Border_Limit()
  Dim Limit As Integer, Count As Integer, SaveDir As String, SetTitle As Boolean
  
  Count = 1: Limit = 1000 ' Счётчик файлов; Количество строк
  SetTitle = False ' Если есть заголовок, заменить False на True
  
  SaveDir = ThisWorkbook.Path ' Или вписать полный путь для сохранения "C:"
  ' Предполагается, что в колонке A нет пустых ячеек
  While Not IsEmpty(Cells(IIf(SetTitle, 2, 1), 1))
    Rows("1:" & Limit).Copy
    Workbooks.Add xlWBATWorksheet ' Создать новую книгу: шаблон с 1 листом
    ActiveSheet.Paste: Cells(1, 1).Select
    ActiveWorkbook.SaveAs Filename:=SaveDir & "Массив_" & Count & ".xlsx", _
      FileFormat:=xlOpenXMLWorkbook
    ActiveWindow.Close
    Rows(IIf(SetTitle, 2, 1) & ":" & Limit).Delete Shift:=xlUp
    Count = Count + 1
  Wend: MsgBox "Файл разбит на " & Count - 1 & " файл(ов). "
End Sub

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

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

I have a large excel file with about 3000 rows.

I would like to split this data into groups of 100 rows

Is there a command in excel that can help me split this data into different

sheets or files for every 100th row?

Community's user avatar

asked Mar 7, 2014 at 9:19

Victor Njoroge's user avatar

Victor NjorogeVictor Njoroge

3532 gold badges9 silver badges22 bronze badges

2

Nice solution in this answer to another question on similar problem: https://stackoverflow.com/a/18001183

However, I needed to split the file without adding headers to each new file, just the data rows. My modified / simplified code:

Sub Test()
  Dim wb As Workbook
  Dim ThisSheet As Worksheet
  Dim NumOfColumns As Integer
  Dim RangeToCopy As Range
  Dim WorkbookCounter As Integer
  Dim RowsInFile
  Dim Prefix As String

  Application.ScreenUpdating = False

  'Initialize data
  Set ThisSheet = ThisWorkbook.ActiveSheet
  NumOfColumns = ThisSheet.UsedRange.Columns.Count
  WorkbookCounter = 1
  RowsInFile = 100                   'how many rows (incl. header) in new files?
  Prefix = "test"                    'prefix of the file name

  For p = 1 To ThisSheet.UsedRange.Rows.Count Step RowsInFile
    Set wb = Workbooks.Add

    'Paste the chunk of rows for this file
    Set RangeToCopy = ThisSheet.Range(ThisSheet.Cells(p, 1), ThisSheet.Cells(p + RowsInFile - 1, NumOfColumns))
    RangeToCopy.Copy wb.Sheets(1).Range("A1")

    'Save the new workbook, and close it
    wb.SaveAs ThisWorkbook.Path & "" & Prefix & "_" & WorkbookCounter
    wb.Close

    'Increment file counter
    WorkbookCounter = WorkbookCounter + 1
  Next p

  Application.ScreenUpdating = True
  Set wb = Nothing
End Sub

answered Nov 7, 2017 at 10:41

LuH's user avatar

0

You can do it this way with a helper column:

1st — insert a column at the left (i.e column A).

2nd — fill down the new column in a series from 1 to 3000 (or however many rows you have).

3rd — in the two cells below the end of the series of column A, put in 100.5 and 200.5. Highlight these cells, then use Ctrl + Shift + Down Arrow and choose Fill Series (leaving the Step Value at 100)

4th — Ascending Sort Column A.

5th — Delete Column A. You’ll have a blank row every 100 rows, with whatever else left over.

answered Mar 7, 2014 at 9:47

EndlessLoop's user avatar

EndlessLoopEndlessLoop

4241 gold badge6 silver badges15 bronze badges

I found this VBA-based solution: http://nationbuilder.com/how_can_i_split_files_too_big_to_import

However, that solution lacks the ability decide how many rows every file has. Rather it is splitting the file in to X number of files with equal amount of rows. Of course you can just calculate this by dividing the total number of rows with the number of rows you want to have in each file but that rarely gives you exactly the number of rows you want due to rounding.

Maybe someone could come up with a modified macro?

answered Jun 4, 2015 at 11:42

Erno Nykänen's user avatar

2

Microsoft Excel отлично справляется со многими повседневными задачами. Но время от времени вы сталкиваетесь с одним из его недостатков: размером с электронную таблицу. Прочтите, чтобы узнать, как уменьшить размер таблицы Excel или разделить большой файл CSV на несколько файлов.

Вы можете подумать: «Зачем мне нужно разбивать большой файл Excel на несколько файлов меньшего размера?» Это интересный вопрос, особенно с учетом того, что в Excel есть ограничение на количество строк в таблице 1048576.

Более 1 миллиона строк звучат феноменально. Однако достичь лимита строк проще, чем вы думаете, особенно при выполнении определенных задач.

Например, если вы продаете по электронной почте, вы можете импортировать файл CSV, содержащий миллионы адресов электронной почты. Единственная проблема в том, как управлять таблицей с таким количеством адресов? Кроме того, что, если кто-то отправит вам CSV, который уже превышает лимит (из другой программы)?

Если это похоже на проблему, с которой вы, вероятно, столкнетесь, попробуйте следующие пять способов разделить большой файл CSV или Excel на несколько файлов меньшего размера.

У вас нет под рукой большого CSV-файла, но вы хотите поиграть дома? В примерах я использую набор данных открытого исследования COVID-19 , который вы тоже можете скачать и использовать.

1. Разбейте файлы CSV с помощью программы

Есть несколько полезных программ-разделителей CSV. Вот двое из лучших. Однако справедливое предупреждение: поскольку эти программы работают, они иногда сталкиваются с проблемами памяти, что является общей проблемой для программ, разделяющих CSV.

Бесплатный Огромный Сплиттер CSV

Free Huge CSV Splitter – это базовый инструмент для разделения CSV. Вы вводите CSV-файл, который хотите разделить, количество строк, которое хотите использовать, а затем выбираете « Разделить файл» . Количество строк определяет количество выходных файлов, которые у вас останутся.

Сплиттер CSV

CSV Splitter – второй инструмент. Он предлагает почти ту же функциональность, что и 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, чтобы переименовать его. Замените расширение .txt на .bat и нажмите ОК, когда появится предупреждение. Теперь вы можете разделить ваш большой CSV-файл на более мелкие выходные файлы.

3. Используйте сценарий PowerShell для разделения файла CSV.

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

Следующий сценарий быстро разрезает ваш большой CSV на файлы меньшего размера.

Сначала нажмите CTRL + X, чтобы открыть меню Windows Power, затем выберите 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_’ .

Вы можете найти исходный сценарий на SPJeff .

4. Разбейте большой CSV-файл с помощью Power Pivot

Ваше предпоследнее решение разбить большой CSV-файл на мелкие части на самом деле не разбивает его. Скорее, он позволяет вам загрузить большой CSV-файл в Excel и использовать инструмент Power Pivot, чтобы открыть его. Вот так; вы можете эффективно игнорировать ограничение строки Excel и управлять файлом в программе.

Для этого нужно создать ссылку на данные в CSV-файл, а затем использовать Power Pivot для управления содержимым. Полное объяснение и руководство можно найти в блоге Хосе Баррето, в котором подробно описан процесс.

Короче говоря, Баррето создает сводную таблицу, используя «до 8,5 миллионов строк без каких-либо проблем». Приведенное выше изображение взято из сообщения в блоге, на котором в Excel показано всего 2 миллиона строк.

Помните, что этот процесс не разбивает CSV на небольшие части. Однако это означает, что вы можете управлять CSV в Excel, что является очень удобной альтернативой. Если вам нужны дополнительные советы, узнайте, как использовать сводную таблицу для анализа данных .

5. Разбейте большой файл CSV в Интернете с помощью разделенного CSV

Существуют также онлайн-сервисы, которые разбивают ваш большой CSV-файл на более мелкие части. Одним из таких вариантов является Split CSV , бесплатный онлайн-разделитель CSV.

Split CSV отлично справился с набором данных COVID-19, разбив его на удобные фрагменты. Как и в случае с другими инструментами, вы определяете количество строк для каждого файла и позволяете ему разделять его. Однако у меня не было большого CSV-файла для тестирования, поэтому ваш опыт может отличаться.

Разделенный CSV также включает дополнительные опции. За абонентскую плату вы можете использовать настраиваемый разделитель , выбрать тип выходного файла, удалить определенные символы из выходных файлов и удалить повторяющиеся строки.

Разбейте файлы CSV на легко управляемые блоки

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

Кредит изображения: lucadp / Depositphotos

Подготовить Microsoft Excel Отлично подходит для многих повседневных задач. Но время от времени вы можете столкнуться с одним из его недостатков: размером таблицы. Прочтите, чтобы узнать, как уменьшить размер таблицы Excel или разделить большой CSV-файл на несколько файлов.

Как разделить большую электронную таблицу Excel в формате CSV на отдельные файлы - инструкции

Вы можете подумать: «Зачем мне нужно разбивать большой файл Excel на несколько файлов меньшего размера?» Это интересный вопрос, особенно с учетом того, что в Excel есть ограничение на количество строк в электронной таблице, равное 1 048 576.

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

Например, если вы занимаетесь маркетингом по электронной почте, вы можете импортировать файл CSV, содержащий миллионы адресов электронной почты. Единственная проблема в том, как управлять таблицей с множеством адресов? Кроме того, что, если кто-то отправит вам CSV-файл, в котором уже превышен лимит (из другого приложения)?

Если это похоже на проблему, с которой вы, вероятно, столкнетесь, попробуйте следующие пять способов разделить большой файл CSV или Excel на несколько файлов меньшего размера.

У вас нет под рукой большого CSV-файла, но вы хотите поэкспериментировать дома? Я использую группу Открытое исследование данных о COVID-19 Для этих примеров, которые вы также можете скачать и использовать.

1. Разделите файл CSV с помощью приложения.

Есть много полезных приложений для разделения CSV. Вот два лучших варианта. Справедливое предупреждение, однако, при запуске этих приложений они иногда сталкиваются с проблемами памяти, что является общей проблемой для приложений разделения CSV.

Бесплатный Огромный Сплиттер CSV

Как разделить большую электронную таблицу Excel в формате CSV на отдельные файлы - инструкции

Подготовить Бесплатный Огромный Сплиттер CSV Важное приложение для разделения файлов CSV. Вы можете ввести CSV-файл, который хотите разделить, количество строк, которые вы хотите использовать, а затем выбрать Разделить файл. Количество строк определяет, сколько файлов вывода вы получите.

Сплиттер CSV

Как разделить большую электронную таблицу Excel в формате 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_’.

Как разделить большую электронную таблицу Excel в формате CSV на отдельные файлы - инструкции

Вы можете найти исходный текст в С.П.Джефф.

4. Разделите большой CSV-файл с помощью Power Pivot.

Предпоследнее решение по разделению большого CSV-файла на мелкие части фактически не разбивает его. Кроме того, он позволяет загрузить огромный файл CSV в Excel и использовать инструмент Power Pivot, чтобы открыть его. верный; Вы можете игнорировать ограничение количества строк в Excel и управлять файлом в приложении.

Как разделить большую электронную таблицу Excel в формате CSV на отдельные файлы - инструкции

Вы можете добиться этого, создав ссылку на данные в CSV-файл, а затем используя Power Pivot для управления содержимым. Полное объяснение и руководство см. В статье. Хосе Баррето подробное описание процесса.

Короче говоря, Баррето создает сводную таблицу с «до 8.5 миллионов строк без каких-либо проблем». Изображение выше взято из сообщения в блоге, в котором показано, что в Excel используется всего 2 миллиона строк.

Помните, что этот процесс не разбивает CSV-файл на мелкие части. Однако это означает, что вы можете обрабатывать CSV-файл в Excel, что является очень полезной альтернативой. Если вам нужно больше подсказок, узнайте, как Использование сводной таблицы для анализа данных.

5. Разделите файл CSV в Интернете с помощью разделенного файла CSV.

Существуют также онлайн-сервисы, которые разбивают большой CSV-файл на более мелкие части. Один из этих вариантов — Разделить CSV , который является бесплатным онлайн-распространителем CSV.

Как разделить большую электронную таблицу Excel в формате CSV на отдельные файлы - инструкции

Split CSV хорошо управляет набором данных COVID-19, разбивая его на простые в использовании части. Как и в случае с другими инструментами, вы можете ограничить количество строк в файле и разрешить ему разделение. Однако у меня не было большого CSV-файла для тестирования, поэтому ваш опыт может отличаться.

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

Разделите файлы CSV на части, которыми легко манипулировать

Теперь у вас есть пять решений для разделения файлов CSV на небольшие части, что упрощает управление ими. Решения различаются по скорости и размеру файлов CSV, которыми они могут управлять, поэтому вам, возможно, придется поэкспериментировать, чтобы найти наиболее подходящее для вас. Вы также можете узнать о 3 способа разбить ячейку в Microsoft Excel.

Разбить строки одного листа на отдельные книги Эксель

t3308095

Дата: Пятница, 24.06.2022, 11:58 |
Сообщение № 1

Группа: Пользователи

Ранг: Прохожий

Сообщений: 7


Репутация:

0

±

Замечаний:
0% ±


Всем привет!
Народ , подскажите пожалуйста как решить такую задачу:

есть таблица на одном листе . В таблице N- строк (они могут повторяться)
Нужно создать и записать в отдельную папку N отдельных книг Эксель , где будет всего 1 лист , в котором будет Шапка Таблицы и 1 уникальная строка из исходной таблицы.

Сообщение отредактировал t3308095Пятница, 24.06.2022, 11:59

 

Ответить

msi2102

Дата: Пятница, 24.06.2022, 18:29 |
Сообщение № 2

Группа: Проверенные

Ранг: Обитатель

Сообщений: 290


Репутация:

104

±

Замечаний:
0% ±


Excel 2007

Так?
[vba]

Код

Sub Копия()
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Application.CopyObjectsWithCells = False
    For n = 1 To ThisWorkbook.Worksheets(«Лист1»).ListObjects(«Таблица1»).DataBodyRange.Rows.Count
        ThisWorkbook.Worksheets(«Лист1»).Copy
        With ActiveWorkbook.ActiveSheet.ListObjects(«Таблица1»).DataBodyRange
            .Rows(1).Value = .Rows(n).Value
            .Offset(1, 0).Resize(.Rows.Count — 1, .Columns.Count).Rows.Delete
        End With
        nm = ActiveSheet.ListObjects(«Таблица1»).DataBodyRange(1, 1)
        ActiveWorkbook.SaveAs Filename:=»C:Рабочая111111111″ & nm & «.xlsx»
‘       Если не нужно закрывать файл после сохранения, закомментируйте нижнюю строку
        ActiveWorkbook.Close SaveChanges:=False
    Next
Application.CopyObjectsWithCells = True
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub

[/vba]
Создайте папку «C:Рабочая111111111» или исправьте на нужную в коде
Если такие файлы уже будут присутствовать в этой папке, то они будут заменены

К сообщению приложен файл:

7210993.xlsm
(20.6 Kb)

Сообщение отредактировал msi2102Пятница, 24.06.2022, 19:53

 

Ответить

t3308095

Дата: Пятница, 24.06.2022, 20:06 |
Сообщение № 3

Группа: Пользователи

Ранг: Прохожий

Сообщений: 7


Репутация:

0

±

Замечаний:
0% ±


Сообщение отредактировал t3308095Пятница, 24.06.2022, 21:38

 

Ответить

t3308095

Дата: Суббота, 25.06.2022, 11:28 |
Сообщение № 4

Группа: Пользователи

Ранг: Прохожий

Сообщений: 7


Репутация:

0

±

Замечаний:
0% ±


msi2102,
помогите пожалуйста еще с такой задачей:
Скопировать выделенный диапазон в новые книги Эксель столько раз сколько строк в этом диапазоне…

Как копировать весь лист в новую книгу эксель я благодаря вам научился :) , а как скопировать именно выделенный диапазон ?
Спасибо:)

К сообщению приложен файл:

5605631.xlsm
(23.6 Kb)

Сообщение отредактировал t3308095Суббота, 25.06.2022, 11:33

 

Ответить

RAN

Дата: Суббота, 25.06.2022, 12:23 |
Сообщение № 5

Группа: Друзья

Ранг: Экселист

Сообщений: 5645

Создаете новую книгу.
Копируете в нее нужный диапазон.


Быть или не быть, вот в чем загвоздка!

 

Ответить

t3308095

Дата: Суббота, 25.06.2022, 14:26 |
Сообщение № 6

Группа: Пользователи

Ранг: Прохожий

Сообщений: 7


Репутация:

0

±

Замечаний:
0% ±


Сообщение отредактировал t3308095Суббота, 25.06.2022, 14:50

 

Ответить

msi2102

Дата: Воскресенье, 26.06.2022, 17:50 |
Сообщение № 7

Группа: Проверенные

Ранг: Обитатель

Сообщений: 290


Репутация:

104

±

Замечаний:
0% ±


Excel 2007

Скопировать выделенный диапазон

По тому же принципу:
[vba]

Код

Sub Копия1()
Dim urg As Range, r As Range, n As Range
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Application.CopyObjectsWithCells = False
With ThisWorkbook.Worksheets(«Лист1»).ListObjects(«Таблица1»)
    Set urg = Intersect(Selection, .DataBodyRange)
    If Not urg Is Nothing Then
        k = .HeaderRowRange.Row
        l = .DataBodyRange.Rows.Count
        For Each n In urg.Rows
            ThisWorkbook.Worksheets(«Лист1»).Copy
            i = 0
            With ActiveWorkbook.ActiveSheet.ListObjects(«Таблица1»).DataBodyRange
                .Value = .Value
                For Each r In urg.Rows
                    i = i + 1
                    .Rows(i).Value = .Rows(r.Row — k).Value
                Next
                If l > i Then .Offset(i, 0).Resize(.Rows.Count — i, .Columns.Count).Rows.Delete
            End With
            nm = .DataBodyRange(n.Row — k, 1)
            ActiveWorkbook.SaveAs Filename:=»C:Рабочая111111111″ & nm & «.xlsx»
            ActiveWorkbook.Close SaveChanges:=False
        Next
    End If
End With
Application.CopyObjectsWithCells = True
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub

[/vba]

Можете выделять как строки целиком так и отдельные ячейки, также будет работать при выделении несмежных диапазонов, например «A3:A4, A6»
PS: единственное проверяйте, чтобы при запуске макроса, ранее созданные файлы с такими именами были закрыты, иначе будет ошибка (нужно писать проверку, сейчас нет время), и избегайте дублей в столбце «A», откуда присваиваются имена файлам, иначе один из них будет переписан

Сообщение отредактировал msi2102Воскресенье, 26.06.2022, 17:57

 

Ответить

Молох

Дата: Пятница, 27.01.2023, 15:15 |
Сообщение № 8

Группа: Пользователи

Ранг: Прохожий

Сообщений: 1


Репутация:

0

±

Замечаний:
0% ±


К сообщению приложен файл: 7210993.xlsm(20.6 Kb)

Добрый день!
Подскажите, пожалуйста
Почему при разделении, цвет ячеек не переносится так как было, а фиксируется в одном и том же диапазоне в каждой строке.

К сообщению приложен файл:

5266292.xlsx
(12.1 Kb)

 

Ответить

Excel отлично справляется со многими повседневными задачами. Но время от времени вы сталкиваетесь с одним из его недостатков: размером с электронную таблицу. Если вам нужно знать, как уменьшить электронную таблицу Excel или разделить большой CSV, мы вам поможем.

Достижение предела количества строк в электронной таблице само по себе является довольно серьезной задачей. Текущий предел строки таблицы Excel составляет 1 048 576. Это верно — более 1 миллиона строк и столько же столбцов.

Но достижение этого ограничения на самом деле невероятно легко при выполнении определенных задач. Если вы торгуете по электронной почте, вы можете импортировать файл CSV. импортировать содержащий миллионы адресов электронной почты. Единственная проблема заключается в том, как вы на самом деле управляете электронной таблицей с таким количеством адресов? Кроме того, что если кто-то отправит вам CSV, который уже превысил лимит (из другой программы)?

Что ж, я покажу вам, как разбить этот огромный CSV на легко управляемые куски.

(У вас нет большого CSV под рукой? Есть несколько довольно больших наборов данных CSV на data.gov . Я собираюсь использовать список сравнения больниц из 260 000 строк, чтобы вы могли использовать тот же файл.)

1. Используйте программу

Существует множество полезных программ для разветвления CSV. Я покажу вам два лучших.

CSV Chunker

CSV Chunker — это разветвитель CSV с открытым исходным кодом. Он может обрабатывать большие файлы, быстро разбивая их на куски по вашему выбору. Потребовалось около 3 секунд, чтобы разделить наш CSV для больниц сравнения на 106 блоков, каждый из которых содержит 2500 строк.

Как разбить огромную электронную таблицу CSV Excel на отдельные файлы CSV Chunker до и после

CSV Splitter

CSV Splitter — наш второй инструмент. Он предлагает почти такую ​​же функциональность CSV Chunker, хотя и с немного более гладким дизайном. CSV Splitter потребовалось около 4 секунд, чтобы разделить нашу CSV для больниц сравнения на 106, снова содержащую 2500 строк в каждой.

Как разбить огромную электронную таблицу CSV Excel на отдельные файлы csv splitter до и после

2. Используйте пакетный файл

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

Откройте новый текстовый документ. Скопируйте и вставьте следующее:

  @ эхо выключено

 setlocal ENABLEDELAYEDEXPANSION

 REM Отредактируйте это значение, чтобы изменить имя файла, который нужно разделить.  Включите расширение.

 SET BFN = HCAHPSHospital.csv

 REM Отредактируйте это значение, чтобы изменить количество строк в файле.

 SET LPF = 2500

 REM Отредактируйте это значение, чтобы изменить имя каждого короткого файла.  За ним последует номер, указывающий, где он находится в списке.

 SET SFN = HosptialSplitFile

 REM Не меняйте за этой линией.

 SET SFX =% BFN: ~ -3%

 SET / A LineNum = 0

 SET / A FileNum = 1

 Для / F "delims ==" %% l in (% BFN%) Do (

 SET / A LineNum + = 1

 echo %% l >>% SFN%! FileNum!.% SFX%

 если! LineNum!  EQU! LPF!  (

 SET / A LineNum = 0

 SET / A FileNum + = 1

 )

 )

 Endlocal

 Пауза 

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

  • «SET BFN =» должен указывать на CSV, который нужно разбить
  • « SET LPF =» — это количество строк, которое вы хотите ограничить новым файлом
  • «SET SFN =» — это новая схема именования ваших разделенных файлов.

После того, как вы ввели свои переменные, перейдите в Файл> Сохранить как. Выберите имя файла и выберите Сохранить. Затем выберите только что сохраненный текстовый файл и нажмите F2, чтобы переименовать его. Замените расширение TXT на BAT и нажмите OK, когда появится предупреждение. Теперь вы можете разделить свой большой CSV!

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

Оригинальный сценарий и тему можно найти здесь .

3. Используйте скрипт PowerShell

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

Следующий скрипт быстро нарежет ваш большой CSV на более мелкие файлы. Опять же, я использовал CSV для больниц в качестве примера. Выполнение команды заняло около 3 секунд. Откройте Windows PowerShell ISE. Если вы не знаете, как это сделать, введите powershell ise в поиск меню «Пуск» и выберите соответствующий параметр. Когда PowerShell ISE открыт, выберите стрелку « Показать сценарий» , расположенную в верхнем правом углу (выделено красным на изображении ниже).

Как разбить огромную электронную таблицу CSV Excel на отдельные файлы PowerShell CSV скрипт

Скопируйте и вставьте следующую команду в панель сценариев в верхней части экрана.

  $ I = 0;  Get-Content C:  Users  Gavin  Downloads  Hospital_Revised_Flatfiles  HCAHPSHospital.csv -ReadCount 2500 |  % {$ I ++;  $ _ |  Исходный файл C:  Users  Gavin  Downloads  Hospital_Revised_Flatfiles  split  splitfile_ $ i.csv} 

Во-первых, вам нужно изменить местоположение вашего входного файла. Во-вторых, вам нужно указать, сколько строк должны содержать ваши выходные файлы. Наконец, укажите местоположение выходного файла. Я оставил там свои пути к файлам, чтобы проиллюстрировать ситуацию. Кроме того, ваше выходное имя файла должно иметь суффикс «_ $ i.csv», соответствующий моему. В противном случае ваши выходные файлы не будут правильно нумерованы.

Когда вы отредактировали файл со своими собственными данными, нажмите CTRL + S, чтобы сохранить ваш скрипт.

Оригинальный сценарий можно найти здесь .

4. Загрузите его в модель данных

Наше окончательное решение фактически не разбивает большой CSV на более мелкие части. Видите ли, Хосе Баррето, член команды OneDrive, недавно проиллюстрировал, как именно вы можете загрузить большой файл CSV в Excel. В этом случае, большое значение превышает предел строки в 1 048 567 строк. В учебном пособии он объясняет, что вместо фактической загрузки файла Excel 2016 может создать ссылку на данные для файла CSV.

Как разбить огромную электронную таблицу Excel CSV на отдельные файлы Строки CVS в сводной таблице модели данных Excel

Данные из исходного CSV будут доступны пользователю в рамках модели данных. Баррето создал сводную таблицу, используя «до 8,5 миллионов строк без каких-либо проблем». Приведенное выше изображение взято из сообщения в блоге Баррето (см. Ссылку ниже), отображающего в Excel 2 миллиона строк. (Узнайте, как использовать сводную таблицу для анализа данных .)

Если это решение подходит вам, следуйте подробному руководству Хосе Баррето прямо здесь . Помните, что это не разделяет CSV, но это означает, что вы можете манипулировать своими данными в определенных инструментах Excel. Если вы обращаетесь к вашим данным для непосредственного взаимодействия с ними, стоит попробовать.

Сломай!

Мы перечислили четыре решения для разрушения ваших массивных файлов CSV, включая два разных инструмента.

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

Чтобы узнать больше об уловках Excel, ознакомьтесь с разделением имен и фамилий в Excel. разделить имена и фамилии в Excel. разделить имена и фамилии

Кредит изображения: lucadp / Depositphotos

Пробуйте. Макрос берет данные из активного листа и сохраняет файлы в папке, где находится активная книга, с именем активной книги с добавлением номера в виде «_000».  

  Const ROWS_IN_PART = 500 ‘число строк в части файла  

  Sub николай100()  
Dim i&, j&, ws As Worksheet, nm$  
Set ws = ActiveSheet  
nm = Left(ActiveWorkbook.FullName, InStrRev(ActiveWorkbook.FullName, «.») — 1) & «_»  
Application.ScreenUpdating = False  
For i = 1 To ActiveSheet.UsedRange.Rows.Count Step ROWS_IN_PART  
   With Workbooks.Add(xlWBATWorksheet)  
       Range(ws.Rows(i), ws.Rows(i + ROWS_IN_PART — 1)).Copy ActiveCell  
       j = j + 1  
       .Close True, nm & Format(j, «000»)  
   End With  
Next  
Application.ScreenUpdating = True  
End Sub

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

документ-разделить данные-по-строкам1 -2 документ-разделить данные-по-строкам2
документ-разделить данные-по-строкам3
документ-разделить данные-по-строкам4
документ-разделить данные-по-строкам5

Разделение данных на несколько листов по количеству строк с кодом VBA

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


стрелка синий правый пузырь Разделение данных на несколько листов по количеству строк с кодом VBA

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

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

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

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

Sub SplitData()
'Updateby20140617
Dim WorkRng As Range
Dim xRow As Range
Dim SplitRow As Integer
Dim xWs As Worksheet
On Error Resume Next
xTitleId = "KutoolsforExcel"
Set WorkRng = Application.Selection
Set WorkRng = Application.InputBox("Range", xTitleId, WorkRng.Address, Type:=8)
SplitRow = Application.InputBox("Split Row Num", xTitleId, 5, Type:=1)
Set xWs = WorkRng.Parent
Set xRow = WorkRng.Rows(1)
Application.ScreenUpdating = False
For i = 1 To WorkRng.Rows.Count Step SplitRow
    resizeCount = SplitRow
    If (WorkRng.Rows.Count - xRow.Row + 1) < SplitRow Then resizeCount = WorkRng.Rows.Count - xRow.Row + 1
    xRow.Resize(resizeCount).Copy
    Application.Worksheets.Add after:=Application.Worksheets(Application.Worksheets.Count)
    Application.ActiveSheet.Range("A1").PasteSpecial
    Set xRow = xRow.Offset(SplitRow)
Next
Application.CutCopyMode = False
Application.ScreenUpdating = True
End Sub

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 строк. И заголовки вставляются для каждого нового рабочего листа. Смотрите скриншот:

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

Нажмите, чтобы узнать больше об этой функции разделения данных.

Связанная статья:

Как разбить данные на несколько листов на основе столбца в Excel?


Лучшие инструменты для работы в офисе

Kutools for Excel Решит большинство ваших проблем и повысит вашу производительность на 80%

  • Снова использовать: Быстро вставить сложные формулы, диаграммы и все, что вы использовали раньше; Зашифровать ячейки с паролем; Создать список рассылки и отправлять электронные письма …
  • Бар Супер Формулы (легко редактировать несколько строк текста и формул); Макет для чтения (легко читать и редактировать большое количество ячеек); Вставить в отфильтрованный диапазон
  • Объединить ячейки / строки / столбцы без потери данных; Разделить содержимое ячеек; Объединить повторяющиеся строки / столбцы… Предотвращение дублирования ячеек; Сравнить диапазоны
  • Выберите Дубликат или Уникальный Ряды; Выбрать пустые строки (все ячейки пустые); Супер находка и нечеткая находка во многих рабочих тетрадях; Случайный выбор …
  • Точная копия Несколько ячеек без изменения ссылки на формулу; Автоматическое создание ссылок на несколько листов; Вставить пули, Флажки и многое другое …
  • Извлечь текст, Добавить текст, Удалить по позиции, Удалить пробел; Создание и печать промежуточных итогов по страницам; Преобразование содержимого ячеек в комментарии
  • Суперфильтр (сохранять и применять схемы фильтров к другим листам); Расширенная сортировка по месяцам / неделям / дням, периодичности и др .; Специальный фильтр жирным, курсивом …
  • Комбинируйте книги и рабочие листы; Объединить таблицы на основе ключевых столбцов; Разделить данные на несколько листов; Пакетное преобразование xls, xlsx и PDF
  • Более 300 мощных функций. Поддерживает Office/Excel 2007-2021 и 365. Поддерживает все языки. Простое развертывание на вашем предприятии или в организации. Полнофункциональная 30-дневная бесплатная пробная версия. 60-дневная гарантия возврата денег.

вкладка kte 201905


Вкладка Office: интерфейс с вкладками в Office и упрощение работы

  • Включение редактирования и чтения с вкладками в Word, Excel, PowerPoint, Издатель, доступ, Visio и проект.
  • Открывайте и создавайте несколько документов на новых вкладках одного окна, а не в новых окнах.
  • Повышает вашу продуктивность на 50% и сокращает количество щелчков мышью на сотни каждый день!

офисный дно

Понравилась статья? Поделить с друзьями:
  • Excel разбить по цвету
  • Excel разбить по полям
  • Excel разбить по интервалам
  • Excel разбить дату по ячейкам
  • Excel разбить данные ячейки на строки