2 Mezzi veloci per dividere il contenuto di un foglio di lavoro Excel in più cartelle di lavoro in base a una colonna specifica

Condividi ora:

A volte, nell'analisi dei dati, può essere necessario suddividere il contenuto di un foglio di lavoro Excel in più cartelle di lavoro Excel in base a una colonna specifica. In questo articolo, ti mostreremo due modi rapidi per farlo.

Molti utenti hanno spesso bisogno di dividere un foglio di lavoro Excel che contiene enormi righe di dati in più cartelle di lavoro Excel separate basate su una colonna specifica. Ad esempio, ecco il mio foglio di lavoro Excel di esempio. Vorrei dividere i dati di questo foglio sulla base della colonna "Prezzo della licenza singola (US $)" in più cartelle di lavoro.

Esempio di foglio di lavoro Excel

In generale, tenderai a utilizzare il seguente Metodo 1 per filtrare e copiare manualmente i dati. Ma sarà piuttosto noioso e stupido se ci sono troppe opzioni di filtro. Pertanto, qui mostriamo anche un modo molto più conveniente: il metodo 2, che utilizza VBA. Ora, continua a leggere per ottenerli in dettaglio.

Metodo 1: copiare i contenuti in cartelle di lavoro Excel separate dopo il filtro

  1. Innanzitutto, seleziona una cella nella colonna specifica, come "Cella B1" nella mia istanza.
  2. Quindi, vai alla scheda "Dati" e fai clic sul pulsante "Filtro".Filtra dati
  3. Successivamente, fai clic sul pulsante "freccia giù" nell'intestazione della colonna per visualizzare un elenco di opzioni di filtro.
  4. Ora, deseleziona l'opzione "(Seleziona tutto)".Deseleziona "Seleziona tutto"
  5. Successivamente, puoi selezionare una scelta di filtro, come "29.95" nel mio esempio, e fare clic su "OK".
  6. Immediatamente, rimarranno solo i dati, il cui valore nella colonna B è "29.95".Sono rimasti solo i dati filtrati
  7. Quindi, copia i dati filtrati e incollali in una nuova cartella di lavoro di Excel.Copia e incolla il contenuto
  8. Successivamente, utilizzare allo stesso modo per dividere gli altri dati per separare le cartelle di lavoro di Excel.

Metodo 2: suddivisione in batch dei contenuti in più cartelle di lavoro di Excel tramite VBA

  1. In primo luogo, assicurati che il foglio di lavoro specifico sia aperto.
  2. Successivamente, avvia l'editor VBA in base a "Come eseguire il codice VBA nel tuo Excel".
  3. Quindi, inserisci il seguente codice nel progetto "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

Codice VBA: suddivide il contenuto di un foglio di lavoro Excel in più cartelle di lavoro basate su una colonna specifica

  1. Successivamente, fai clic sull'icona "Esegui" nella barra degli strumenti o premi il tasto "F5".
  2. Al termine della macro, le cartelle di lavoro Excel separate verranno create con i dati divisi dal foglio di lavoro Excel di origine.Nuove cartelle di lavoro di Excel
  3. Ogni cartella di lavoro sarà simile allo screenshot seguente.Separare le nuove cartelle di lavoro di Excel

Confronto

  Vantaggi Svantaggi
Metodo 1 1. Facile da usare per tutti gli utenti di Excel Problematico se ci sono troppe scelte di filtro
2. Veloce se ci sono poche scelte di filtro
Metodo 2 Molto più efficiente del Metodo 1, indipendentemente dalla quantità di scelte di filtro Un po 'difficile da usare per i neofiti di VBA

Prevenire la perdita di dati di Excel

Sebbene MS Excel stia diventando sempre più avanzato e sofisticato, tende ancora a bloccarsi di tanto in tanto a causa di vari fattori, come componenti aggiuntivi dannosi di terze parti o errori umani e così via. Poiché l'arresto anomalo di Excel può portare direttamente a Corruzione di Excel, per evitare la perdita di dati di Excel, è necessario eseguire regolarmente il backup dei file Excel. In caso contrario, è necessario applicare uno strumento di riparazione di Excel, ad esempio DataNumen Excel Repair per riparare i file Excel corrotti.

Introduzione dell'autore:

Shirley Zhang è un'esperta di recupero dati in DataNumen, Inc., che è il leader mondiale nelle tecnologie di recupero dati, tra cui SQL Server riparazione e prodotti software di riparazione di Outlook. Per maggiori informazioni visita www.datanumen.com

Condividi ora:

I commenti sono chiusi.