Понякога при анализ на данни може да се наложи да разделите съдържанието на работен лист на Excel в множество работни книги на Excel според конкретна колона. Сега, в тази стрost, ще ви научим на 2 бързи начина да го получите.
Много потребители често трябва да разделят работен лист на Excel, който съдържа огромни редове данни в множество отделни работни книги на Excel въз основа на конкретна колона. Например, тук е моят примерен работен лист на Excel. Бих искал да разделя данните на този лист въз основа на колоната „Цена на единичен лиценз (щатски долари)“ в множество работни книги.

Като цяло, вие сте склонни да използвате следния метод 1 за ръчно филтриране и копиране на данни. Но ще бъде доста досадно и глупаво, ако има твърде много опции за филтриране. Следователно тук показваме и много по-удобен начин - Метод 2, който използва VBA. Сега прочетете, за да ги получите подробно.
Метод 1: Копиране на съдържанието в отделни работни книги на Excel след филтър
- Отначало изберете клетка в конкретната колона, като „Cell B1“ в моя собствен екземпляр.
- След това се обърнете към раздела „Данни“ и щракнете върху бутона „Филтър“.
- След това щракнете върху бутона „стрелка надолу“ в заглавката на колоната, за да се покаже списък с възможностите за избор на филтър.
- Сега премахнете отметката от опцията „(Select All)“.
- След това можете да изберете един избор на филтър, като „29.95“ в моя пример, и да щракнете върху „OK“.
- Веднага ще останат само данните, чиято стойност в колона Б е „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
- След това щракнете върху иконата „Run“ в лентата с инструменти или натиснете бутона „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






