2 snelle middelen om de inhoud van een Excel-werkblad te splitsen in meerdere werkmappen op basis van een specifieke kolom

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.

Voorbeeld Excel-werkblad

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

  1. Selecteer eerst een cel in de specifieke kolom, zoals "Cel B1" in mijn eigen instantie.
  2. Ga vervolgens naar het tabblad "Gegevens" en klik op de knop "Filter".Filter gegevens
  3. Klik vervolgens op de knop "pijl omlaag" in de kolomkop om een ​​lijst met filterkeuzes weer te geven.
  4. Schakel nu de optie "(Alles selecteren)" uit.Verwijder het vinkje bij "Alles selecteren"
  5. Daarna kunt u een filterkeuze selecteren, zoals "29.95" in mijn voorbeeld, en op "OK" klikken.
  6. Onmiddellijk blijven alleen de gegevens, waarvan de waarde in kolom B "29.95" is, over.Alleen gefilterde gegevens zijn over
  7. Kopieer vervolgens de gefilterde gegevens en plak ze in een nieuwe Excel-werkmap.Kopieer en plak de inhoud
  8. 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

  1. Zorg er in de eerste plaats voor dat het specifieke werkblad wordt geopend.
  2. Start vervolgens de VBA-editor volgens “Hoe u VBA-code in uw Excel uitvoert'.
  3. 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

VBA-code - Splits de inhoud van een Excel-werkblad in meerdere werkmappen op basis van een specifieke kolom

  1. Klik daarna op het pictogram "Uitvoeren" in de werkbalk of druk op de toets "F5".
  2. Wanneer de macro is voltooid, worden de afzonderlijke Excel-werkmappen gemaakt met de gesplitste gegevens uit het Excel-bronwerkblad.Nieuwe Excel-werkmappen
  3. Elke werkmap ziet eruit als de volgende schermafbeelding.Scheid nieuwe Excel-werkmappen

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

Reacties zijn gesloten.