Soms is het bij data-analyse nodig om de inhoud van een Excel-werkblad op te splitsen in meerdere Excel-werkmappen op basis van een specifieke kolom. In dit artikel laten we je twee snelle manieren zien om dat te doen.
Veel gebruikers moeten een Excel-werkblad dat enorme rijen gegevens bevat, vaak opsplitsen in meerdere afzonderlijke Excel-werkmappen op basis van een specifieke kolom. Hier is bijvoorbeeld mijn voorbeeld van een Excel-werkblad. Ik wil de gegevens van dit blad op basis van de kolom "Prijs van enkele licentie (US $)" opsplitsen in meerdere werkmappen.

Over het algemeen zult u de volgende methode 1 gebruiken om gegevens handmatig te filteren en te kopiëren. Maar het zal behoorlijk vervelend en stom zijn als er te veel filteropties zijn. Daarom laten we hier ook een veel gemakkelijkere manier zien: methode 2, die VBA gebruikt. Lees nu verder om ze in detail te krijgen.
Methode 1: Kopieer de inhoud naar afzonderlijke Excel-werkmappen na filter
- Selecteer eerst een cel in de specifieke kolom, zoals "Cel B1" in mijn eigen instantie.
- Ga vervolgens naar het tabblad "Gegevens" en klik op de knop "Filter".
- Klik vervolgens op de knop "pijl omlaag" in de kolomkop om een lijst met filterkeuzes weer te geven.
- Schakel nu de optie "(Alles selecteren)" uit.
- Daarna kunt u een filterkeuze selecteren, zoals "29.95" in mijn voorbeeld, en op "OK" klikken.
- Onmiddellijk blijven alleen de gegevens, waarvan de waarde in kolom B "29.95" is, over.
- Kopieer vervolgens de gefilterde gegevens en plak ze in een nieuwe Excel-werkmap.
- Gebruik later dezelfde manier om de andere gegevens te splitsen om Excel-werkmappen te scheiden.
Methode 2: Batch-inhoud splitsen in meerdere Excel-werkmappen via VBA
- Zorg er in de eerste plaats voor dat het specifieke werkblad wordt geopend.
- Start vervolgens de VBA-editor volgens “Hoe u VBA-code in uw Excel uitvoert'.
- Plaats vervolgens de volgende code in het "ThisWorkbook" -project.
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
- Klik daarna op het pictogram "Uitvoeren" in de werkbalk of druk op de toets "F5".
- Wanneer de macro is voltooid, worden de afzonderlijke Excel-werkmappen gemaakt met de gesplitste gegevens uit het Excel-bronwerkblad.
- Elke werkmap ziet eruit als de volgende schermafbeelding.
Vergelijk
| Voordelen | Nadelen | |
| Methode 1 | 1. Eenvoudig te bedienen voor alle Excel-gebruikers | Lastig als er te veel filterkeuzes zijn |
| 2. Snel als er weinig filterkeuzes zijn | ||
| Methode 2 | Veel efficiënter dan methode 1, ongeacht het aantal filterkeuzes | Een beetje moeilijk te bedienen voor VBA-nieuwkomers |
Voorkom gegevensverlies in Excel
Hoewel MS Excel steeds geavanceerder en geavanceerder wordt, heeft het nog steeds de neiging om van tijd tot tijd te crashen vanwege diverse factoren, zoals kwaadwillende invoegtoepassingen van derden of menselijke fouten, enzovoort. Aangezien Excel-crash direct kan leiden tot Excel corruptieOm verlies van Excel-gegevens te voorkomen, moet u regelmatig een back-up van uw Excel-bestanden maken. Anders moet u een Excel-reparatietool toepassen, zoals DataNumen Excel Repair om beschadigde Excel-bestanden te repareren.
Auteur Introductie:
Shirley Zhang is een expert op het gebied van gegevensherstel in DataNumen, Inc., de wereldleider in technologieën voor gegevensherstel, waaronder SQL Server reparatie en Outlook-reparatiesoftwareproducten. Voor meer informatie bezoek www.datanumen.com






