I cookie ci aiutano i nostri servizi. Utilizzando i nostri servizi, l'utente accetta di utilizzare i cookie.
Suggerimento: le altre lingue sono tradotte da Google. Puoi visitare il English versione di questo link.
Log In
x
or
x
x
Registrati
x

or

Come dividere i dati in più fogli di lavoro basati sulla colonna in Excel?

Supponendo di avere un foglio di lavoro con enormi file di dati e ora è necessario dividere i dati in più fogli di lavoro basati sul Nome colonna (vedi schermata successiva), e i nomi sono inseriti in modo casuale. Forse puoi prima ordinarli e poi copiarli e incollarli uno ad uno in altri nuovi fogli di lavoro. Ma questo richiederà la tua pazienza per copiare e incollare ripetutamente. Oggi parlerò di alcuni trucchi rapidi per risolvere questo compito.

doc suddivide i dati per colonne 1

Suddividi i dati in più fogli di lavoro basati su colonne con codice VBA

Suddividi i dati in più fogli di lavoro basati sulla colonna con Kutools per Excel


Suddividi i dati in più fogli di lavoro in base al conteggio di colonne o righe specifico nel foglio di lavoro:

Se si desidera dividere un foglio di lavoro di grandi dimensioni in più fogli in base a dati di colonna o conteggio di righe specifici, il file Kutools for Excel's Split Data funzionalità può aiutarti a risolvere questo compito in modo rapido e semplice.

doc suddivide i dati per colonne 6

Kutools for Excel: con più di 200 pratici componenti aggiuntivi di Excel, liberi di provare senza limitazioni nei giorni 60. Scarica e prova gratis ora!


Suddividi i dati in più fogli di lavoro basati su colonne con codice VBA


Se si desidera suddividere i dati in base al valore della colonna in modo rapido e automatico, il seguente codice VBA è una buona scelta. Per favore, fai come questo:

1. Tenere premuto il tasto ALT + F11 chiavi per aprire il Microsoft Visual Basic, Applications Edition finestra.

2. Clic inserire > Moduloe incollare il seguente codice nella finestra del modulo.

Sub parse_data()
Dim lr As Long
Dim ws As Worksheet
Dim vcol, i As Integer
Dim icol As Long
Dim myarr As Variant
Dim title As String
Dim titlerow As Integer
vcol = 1        
Set ws = Sheets("Master sheet")        
lr = ws.Cells(ws.Rows.Count, vcol).End(xlUp).Row
title = "A1:C1"            
titlerow = ws.Range(title).Cells(1).Row
icol = ws.Columns.Count
ws.Cells(1, icol) = "Unique"
For i = 2 To lr
On Error Resume Next
If ws.Cells(i, vcol) <> "" And Application.WorksheetFunction.Match(ws.Cells(i, vcol), ws.Columns(icol), 0) = 0 Then
ws.Cells(ws.Rows.Count, icol).End(xlUp).Offset(1) = ws.Cells(i, vcol)
End If
Next
myarr = Application.WorksheetFunction.Transpose(ws.Columns(icol).SpecialCells(xlCellTypeConstants))
ws.Columns(icol).Clear
For i = 2 To UBound(myarr)
ws.Range(title).AutoFilter field:=vcol, Criteria1:=myarr(i) & ""
If Not Evaluate("=ISREF('" & myarr(i) & "'!A1)") Then
Sheets.Add(after:=Worksheets(Worksheets.Count)).Name = myarr(i) & ""
Else
Sheets(myarr(i) & "").Move after:=Worksheets(Worksheets.Count)
End If
ws.Range("A" & titlerow & ":A" & lr).EntireRow.Copy Sheets(myarr(i) & "").Range("A1")
Sheets(myarr(i) & "").Columns.AutoFit
Next
ws.AutoFilterMode = False
ws.Activate
End Sub

Note: Nel codice precedente:

  • vcol = 1 , il numero 1 è il numero di colonna su cui si desidera suddividere i dati in base a.
  • Imposta ws = Fogli ("Scheda principale"), Scheda principale è il nome del foglio che si desidera applicare a questo codice.
  • title = "A1: C1" , A1: C1 è l'intervallo del titolo.

Tutte sono variabili, puoi cambiarle secondo le tue necessità.

3. Quindi premere F5 chiave per eseguire il codice, tutti i dati nel foglio di lavoro attivo vengono suddivisi in più fogli di lavoro in base al valore della colonna. E i fogli di lavoro separati sono denominati con i nomi delle celle divise. Vedi screenshot:

doc suddivide i dati per colonne 2

Note: I fogli di lavoro suddivisi sono collocati alla fine della cartella di lavoro in cui si trova il foglio di lavoro principale.


Suddividi i dati in più fogli di lavoro basati sulla colonna con Kutools per Excel

Come un principiante di Excel, questo lungo codice VBA è alquanto difficile per noi, e molti di noi non sanno nemmeno come modificare il codice in base alle nostre necessità.

Qui, ti presenterò uno strumento multifunzionale--Kutools for Excel, suo Split Data l'utilità non solo può aiutarti a dividere i dati in più fogli di lavoro in base alla colonna, ma anche a dividere i dati per numero di righe.

Kutools for Excel : con più di 300 pratici componenti aggiuntivi di Excel, liberi di provare senza limiti nei giorni 60.

Se hai installato Kutools for Excel, si prega di fare come segue:

1. Seleziona l'intervallo di dati che desideri dividere.

2. Clic Kutools Plus > Foglio di lavoro > Split Data, vedi screenshot:

doc suddivide i dati per colonne 3

3. Nel Dividere i dati in più fogli di lavoro finestra di dialogo, è necessario:

1). Selezionare Colonna specifica opzione nel Spalato basato su sezione e scegliere il valore della colonna su cui si desidera suddividere i dati in base all'elenco a discesa. (Se i tuoi dati hanno intestazioni e vuoi inserirle in ogni nuovo foglio di lavoro diviso, per favore controlla I miei dati hanno intestazioni opzione.)

2). Quindi è possibile specificare i nomi del foglio di lavoro divisi, sotto Nuovo nome dei fogli di lavoro sezione, specificare le regole dei nomi del foglio di lavoro dal Regole elenco a discesa, è possibile aggiungere il Prefisso or Suffisso anche per i nomi dei fogli.

3). Clicca il OK pulsante. Vedi screenshot:

doc suddivide i dati per colonne 4

4. Ora i dati sono suddivisi in più fogli di lavoro in una nuova cartella di lavoro.

doc suddivide i dati per colonne 5

Fai clic per scaricare Kutools per Excel e prova gratuita ora!


Suddividi i dati in più fogli di lavoro basati sulla colonna con Kutools per Excel

Kutools for Excel include più di 300 utili strumenti di Excel. Libero di provare senza limiti nei giorni 60. Scarica la versione di prova gratuita ora!


Articolo correlato:

Come dividere i dati in più fogli di lavoro per numero di righe?



Strumenti di produttività consigliati

Office Tab

stella d&#39;oro1 Porta pratiche schede ad Excel e ad altri software Office, proprio come Chrome, Firefox e il nuovo Internet Explorer.

Kutools for Excel

stella d&#39;oro1 Stupefacente! Aumenta la tua produttività in 5 minuti. Non servono abilità speciali, risparmiate due ore al giorno!

stella d&#39;oro1 300 Nuove funzionalità per Excel, rendono Excel molto semplice e potente:

  • Unisci cella / righe / colonne senza perdere dati.
  • Combina e consolida più fogli e cartelle di lavoro.
  • Confronta intervalli, copia intervalli multipli, conversione testo in data, unità e conversione valuta.
  • Contare in base a colori, totali parziali cercapersone, ordinamento avanzato e filtro super,
  • Altro Seleziona / Inserisci / Elimina / Testo / Formato / Link / Commento / Cartelle di lavoro / Fogli di lavoro Strumenti ...

Schermata di Kutools per Excel

Say something here...
symbols left.
You are guest ( Sign Up? )
or post as a guest, but your post won't be published automatically.
Loading comment... The comment will be refreshed after 00:00.
  • To post as a guest, your comment is unpublished.
    Jason · 7 days ago
    This formula is great, works perfectly for me.
    I want to split out data based on a location, which is in column 1. Which this does.
    However, is it possible to also split out based on column 2, for example. Built and Not Built. So a secondary condition also?
  • To post as a guest, your comment is unpublished.
    jose · 8 days ago
    can someone help please im using this but i keep getting to many columns. i have to keep deleting rows every time i use this.

    This is what im using


    Sub parse_data()
    Dim lr As Long
    Dim ws As Worksheet
    Dim vcol, i As Integer
    Dim icol As Long
    Dim myarr As Variant
    Dim title As String
    Dim titlerow As Integer
    vcol = 1
    Set ws = Sheets("sheet1")
    lr = ws.Cells(ws.Rows.Count, vcol).End(xlUp).Row
    title = "A1:AN1"
    titlerow = ws.Range(title).Cells(1).Row
    icol = ws.Columns.Count
    ws.Cells(1, icol) = "Unique"
    For i = 2 To lr
    On Error Resume Next
    If ws.Cells(i, vcol) <> "" And Application.WorksheetFunction.Match(ws.Cells(i, vcol), ws.Columns(icol), 0) = 0 Then
    ws.Cells(ws.Rows.Count, icol).End(xlUp).Offset(1) = ws.Cells(i, vcol)
    End If
    Next
    myarr = Application.WorksheetFunction.Transpose(ws.Columns(icol).SpecialCells(xlCellTypeConstants))
    ws.Columns(icol).Clear
    For i = 2 To UBound(myarr)
    ws.Range(title).AutoFilter field:=vcol, Criteria1:=myarr(i) & ""
    If Not Evaluate("=ISREF('" & myarr(i) & "'!A1)") Then
    Sheets.Add(after:=Worksheets(Worksheets.Count)).Name = myarr(i) & ""
    Else
    Sheets(myarr(i) & "").Move after:=Worksheets(Worksheets.Count)
    End If
    ws.Range("A" & titlerow & ":A" & lr).EntireRow.Copy Sheets(myarr(i) & "").Range("A1")
    Sheets(myarr(i) & "").Columns.AutoFit
    Next
    ws.AutoFilterMode = False
    ws.Activate
    End Sub
  • To post as a guest, your comment is unpublished.
    avinash · 9 days ago
    Thanks for VBA, it works great. In addition to that question, I have column which is dependent. So when i select some value my column values get changed hence I need vba solution to replace earlier split worksheet to replace with new value of columns. Can anyone help me out.?

    Thanks in advance
  • To post as a guest, your comment is unpublished.
    JP Tontegode · 13 days ago
    Is there a way to have the macro create a separate spreadsheet for each new tab instead of just adding a tab into the current worksheet? Thanks!
  • To post as a guest, your comment is unpublished.
    Sebastian · 21 days ago
    Effectively, this code does work great. I wrote an additional code so that I could get subtotal on certain columns but it has not worked great. So I tried running the subtotals from the master list, but afterwards when I use this macro it create a whole new tab for the Grand total row. So I am getting two two tabs per split. the first one is fine because it splits with the grand totals, but then creates a second one with just the grand total row. Any help as to how to modify this.
    This is the code that I am currently using:
    Sub parse_data()
    Dim lr As Long
    Dim ws As Worksheet
    Dim vcol, i As Integer
    Dim icol As Long
    Dim myarr As Variant
    Dim title As String
    Dim titlerow As Integer
    vcol = 3
    Set ws = Sheets("Master sheet")
    lr = ws.Cells(ws.Rows.Count, vcol).End(xlUp).Row
    title = "A1:R1"
    titlerow = ws.Range(title).Cells(1).Row
    icol = ws.Columns.Count
    ws.Cells(1, icol) = "Unique"
    For i = 2 To lr
    On Error Resume Next
    If ws.Cells(i, vcol) <> "" And Application.WorksheetFunction.Match(ws.Cells(i, vcol), ws.Columns(icol), 0) = 0 Then
    ws.Cells(ws.Rows.Count, icol).End(xlUp).Offset(1) = ws.Cells(i, vcol)
    End If
    Next
    myarr = Application.WorksheetFunction.Transpose(ws.Columns(icol).SpecialCells(xlCellTypeConstants))
    ws.Columns(icol).Clear
    For i = 2 To UBound(myarr)
    ws.Range(title).AutoFilter field:=vcol, Criteria1:=myarr(i) & ""
    If Not Evaluate("=ISREF('" & myarr(i) & "'!A1)") Then
    Sheets.Add(after:=Worksheets(Worksheets.Count)).Name = myarr(i) & ""
    Else
    Sheets(myarr(i) & "").Move after:=Worksheets(Worksheets.Count)
    End If
    ws.Range("A" & titlerow & ":A" & lr).EntireRow.Copy Sheets(myarr(i) & "").Range("A1")
    Sheets(myarr(i) & "").Columns.AutoFit
    Next
    ws.AutoFilterMode = False
    ws.Activate
    End Sub