Іноді під час аналізу даних може знадобитися розділити вміст аркуша Excel на кілька книг Excel відповідно до певного стовпця. У цій публікації ми навчимо вас двом швидким способам отримати це.
Багатьом користувачам часто потрібно розділити аркуш Excel, який містить величезні рядки даних, на кілька окремих книг Excel на основі певного стовпця. Наприклад, ось мій зразок робочого аркуша Excel. Я хотів би розділити дані цього аркуша на основі стовпця "Ціна єдиної ліцензії (долари США)" на кілька робочих книг.

Загалом, ви схильні використовувати наступний спосіб 1 для ручного фільтрування та копіювання даних. Але це буде досить нудно і дурно, якщо варіантів фільтрів буде занадто багато. Тому тут ми також показуємо набагато зручніший спосіб - метод 2, який використовує VBA. Тепер читайте далі, щоб отримати їх детально.
Спосіб 1: Скопіюйте вміст в окремі книги Excel після фільтра
- Спочатку виберіть клітинку у конкретному стовпці, наприклад, “Cell B1” у моєму власному екземплярі.
- Потім перейдіть на вкладку «Дані» та натисніть кнопку «Фільтр».
- Далі натисніть кнопку “стрілка вниз” у заголовку стовпця, щоб відобразити список варіантів фільтрування.
- Тепер зніміть прапорець біля опції “(Виділити все)”.
- Після цього ви можете вибрати один варіант фільтра, наприклад, “29.95” у моєму прикладі, та натиснути “OK”.
- Відразу залишаться лише дані, значення яких у стовпці 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 ремонт та перспективні програмні продукти для ремонту. Для отримання додаткової інформації відвідайте WWW.datanumen.com






