Иногда при анализе данных может потребоваться разбить содержимое рабочего листа Excel на несколько рабочих книг Excel в соответствии с определенным столбцом. Теперь в этом рost, мы научим вас 2 быстрым способам его получения.
Многим пользователям часто приходится разбивать рабочий лист Excel, содержащий огромные строки данных, на несколько отдельных рабочих книг Excel на основе определенного столбца. Например, вот мой пример листа Excel. Я хотел бы разделить данные этого листа на основе столбца «Цена одной лицензии (долл. США)» на несколько книг.

Как правило, вы будете использовать следующий метод 1 для ручной фильтрации и копирования данных. Но это будет довольно утомительно и глупо, если вариантов фильтра будет слишком много. Поэтому здесь мы также показываем гораздо более удобный способ — Способ 2, который использует VBA. Теперь читайте дальше, чтобы получить их подробно.
Способ 1: копирование содержимого в отдельные книги Excel после фильтрации
- Сначала выберите ячейку в определенном столбце, например «Ячейка B1» в моем собственном экземпляре.
- Затем перейдите на вкладку «Данные» и нажмите кнопку «Фильтр».
- Затем нажмите кнопку «стрелка вниз» в заголовке столбца, чтобы отобразить список вариантов фильтра.
- Теперь снимите флажок «(Выбрать все)».
- После этого вы можете выбрать один вариант фильтра, например «29.95» в моем примере, и нажать «ОК».
- Сразу останутся только данные, значение которых в столбце B равно «29.95».
- Затем скопируйте отфильтрованные данные и вставьте их в новую книгу Excel.
- Позже используйте тот же способ, чтобы разделить другие данные на отдельные книги Excel.
Способ 2: пакетное разделение содержимого на несколько книг Excel через VBA
- Во-первых, убедитесь, что конкретный рабочий лист открыт.
- Затем запустите редактор VBA в соответствии с «Как запустить код VBA в вашем Excel».
- Затем поместите следующий код в проект «ThisWorkbook».
Sub SplitSheetDataIntoMultipleWorkbooksBasedOnSpecificColumn()
Dim objWorksheet As Excel.Worksheet
Dim nLastRow, nRow, nNextRow As Integer
Dim strColumnValue As String
Dim objDictionary As Object
Dim varColumnValues As Variant
Dim varColumnValue As Variant
Dim objExcelWorkbook As Excel.Workbook
Dim objSheet As Excel.Worksheet
Set objWorksheet = ActiveSheet
nLastRow = objWorksheet.Range("A" & objWorksheet.Rows.Count).End(xlUp).Row
Set objDictionary = CreateObject("Scripting.Dictionary")
For nRow = 2 To nLastRow
'Get the specific Column
'Here my instance is "B" column
'You can change it to your case
strColumnValue = objWorksheet.Range("B" & nRow).Value
If objDictionary.Exists(strColumnValue) = False Then
objDictionary.Add strColumnValue, 1
End If
Next
varColumnValues = objDictionary.Keys
For i = LBound(varColumnValues) To UBound(varColumnValues)
varColumnValue = varColumnValues(i)
'Create a new Excel workbook
Set objExcelWorkbook = Excel.Application.Workbooks.Add
Set objSheet = objExcelWorkbook.Sheets(1)
objSheet.Name = objWorksheet.Name
objWorksheet.Rows(1).EntireRow.Copy
objSheet.Activate
objSheet.Range("A1").Select
objSheet.Paste
For nRow = 2 To nLastRow
If CStr(objWorksheet.Range("B" & nRow).Value) = CStr(varColumnValue) Then
'Copy data with the same column "B" value to new workbook
objWorksheet.Rows(nRow).EntireRow.Copy
nNextRow = objSheet.Range("A" & objWorksheet.Rows.Count).End(xlUp).Row + 1
objSheet.Range("A" & nNextRow).Select
objSheet.Paste
objSheet.Columns("A:B").AutoFit
End If
Next
Next
End Sub
- После этого щелкните значок «Выполнить» на панели инструментов или нажмите клавишу «F5».
- Когда макрос завершится, будут созданы отдельные книги Excel с разделенными данными из исходного листа Excel.
- Каждая книга будет выглядеть так, как показано на следующем снимке экрана.
сравнение
| Преимущества | Недостатки | |
| Метод 1 | 1. Простота в эксплуатации для всех пользователей Excel | Проблемно, если слишком много вариантов фильтров |
| 2. Быстро, если есть несколько вариантов фильтров | ||
| Метод 2 | Гораздо эффективнее, чем метод 1, независимо от количества вариантов фильтров. | Немного сложно работать для новичков VBA |
Предотвращение потери данных Excel
Хотя MS Excel становится все более и более продвинутым и сложным, он по-прежнему имеет тенденцию время от времени давать сбои из-за различных факторов, таких как вредоносные сторонние надстройки или человеческие ошибки и так далее. Поскольку сбой Excel может напрямую привести к Повреждение Excel, чтобы избежать потери данных Excel, необходимо регулярно создавать резервные копии файлов Excel. В противном случае вам необходимо применить инструмент восстановления Excel, например DataNumen Excel Repair для исправления поврежденных файлов Excel.
Об авторе:
Ширли Чжан — эксперт по восстановлению данных в DataNumen, Inc., которая является мировым лидером в области технологий восстановления данных, включая SQL Server ремонт и программные продукты для ремонта Outlook. Для получения дополнительной информации посетите www.datanumen.com






