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 Splitdatabycol()
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
Dim xTRg As Range
Dim xVRg As Range
Dim xWSTRg As Worksheet
On Error Resume Next
Set xTRg = Application.InputBox("Please select the header rows:", "Kutools for Excel", "", Type:=8)
If TypeName(xTRg) = "Nothing" Then Exit Sub
Set xVRg = Application.InputBox("Please select the column you want to split data based on:", "Kutools for Excel", "", Type:=8)
If TypeName(xVRg) = "Nothing" Then Exit Sub
vcol = xVRg.Column
Set ws = xTRg.Worksheet
lr = ws.Cells(ws.Rows.Count, vcol).End(xlUp).Row
title = xTRg.AddressLocal
titlerow = xTRg.Cells(1).Row
icol = ws.Columns.Count
ws.Cells(1, icol) = "Unique"
Application.DisplayAlerts = False
If Not Evaluate("=ISREF('xTRgWs_Sheet!A1')") Then
Sheets.Add(after:=Worksheets(Worksheets.Count)).Name = "xTRgWs_Sheet"
Else
Sheets("xTRgWs_Sheet").Delete
Sheets.Add(after:=Worksheets(Worksheets.Count)).Name = "xTRgWs_Sheet"
End If
Set xWSTRg = Sheets("xTRgWs_Sheet")
xTRg.Copy
xWSTRg.Paste Destination:=xWSTRg.Range("A1")
ws.Activate
For i = (titlerow + xTRg.Rows.Count) 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
xWSTRg.Range(title).Copy
Sheets(myarr(i) & "").Paste Destination:=Sheets(myarr(i) & "").Range("A1")
ws.Range("A" & (titlerow + xTRg.Rows.Count) & ":A" & lr).EntireRow.Copy Sheets(myarr(i) & "").Range("A" & (titlerow + xTRg.Rows.Count))
Sheets(myarr(i) & "").Columns.AutoFit
Next
xWSTRg.Delete
ws.AutoFilterMode = False
ws.Activate
Application.DisplayAlerts = True
End Sub

3. Quindi, premere F5 chiave per eseguire il codice e viene visualizzata una finestra di prompt per ricordare all'utente selezionare la riga dell'intestazione, vedere screenshot:

doc suddivide i dati per colonne 7

4. E poi, clicca OK pulsante, e nella seconda casella di richiesta, selezionare i dati della colonna che si desidera dividere in base, vedi screenshot:

doc suddivide i dati per colonne 8

5. Quindi, fare clic OKe 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.
    Katharina · 16 days ago
    Great Script, thanks! What do I have to do to set the header row range and column to use for grouping/splitting within the script? I know it is more elegant to use selectable parameters but for my use case it is always the same. As I do know nothing about VBA, any little hint is appreciated :-) Best, Katharina
  • To post as a guest, your comment is unpublished.
    daiana · 20 days ago
    It doesn't work with 120000 rows. Is there any way to make it work?
  • To post as a guest, your comment is unpublished.
    Radoslav · 23 days ago
    Perfect!!! Works and refer to all my demands. Tnx for that source code.
  • To post as a guest, your comment is unpublished.
    Rudi Miller · 1 months ago
    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: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
  • To post as a guest, your comment is unpublished.
    Jason · 2 months 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?