Note: The other languages of the website are Google-translated. Back to English

Come creare nuovi fogli per ogni riga in Excel?

Supponendo di avere una tabella dei punteggi con tutti i nomi degli studenti nella colonna A. Ora si desidera creare nuovi fogli basati su questi nomi nella colonna A e fare per foglio contenga i dati di uno studente univoco. Oppure crea semplicemente un nuovo foglio per ogni riga della tabella senza considerare i nomi nella colonna A. In questo vedio, otterrai i metodi per ottenerlo.

Crea nuovi fogli per ogni riga con codice VBA
Crea nuovi fogli per ogni riga con l'utilità Dividi dati di Kutools per Excel


Crea nuovi fogli per ogni riga con codice VBA

Con i seguenti codici, puoi creare un nuovo foglio in base ai valori delle colonne o semplicemente creare nuovi fogli per ogni riga in Excel.

1. Stampa altro + F11 tasti contemporaneamente per aprire il file Microsoft Visual Basic, Applications Edition finestra.

2. Nel Microsoft Visual Basic, Applications Edition finestra, fare clic inserire > Modulo. E poi incolla il seguente codice nel file Modulo finestra.

Codice VBA: crea un nuovo foglio per ogni riga in base alla colonna

Sub parse_data()
'Update by Extendoffice 2018/3/2
    Dim xRCount As Long
    Dim xSht As Worksheet
    Dim xNSht As Worksheet
    Dim I As Long
    Dim xTRrow As Integer
    Dim xCol As New Collection
    Dim xTitle As String
    Dim xSUpdate As Boolean
    Set xSht = ActiveSheet
    On Error Resume Next
    xRCount = xSht.Cells(xSht.Rows.Count, 1).End(xlUp).Row
    xTitle = "A1:C1"
    xTRrow = xSht.Range(xTitle).Cells(1).Row
    For I = 2 To xRCount
        Call xCol.Add(xSht.Cells(I, 1).Text, xSht.Cells(I, 1).Text)
    Next
    xSUpdate = Application.ScreenUpdating
    Application.ScreenUpdating = False
    For I = 1 To xCol.Count
        Call xSht.Range(xTitle).AutoFilter(1, CStr(xCol.Item(I)))
        Set xNSht = Nothing
        Set xNSht = Worksheets(CStr(xCol.Item(I)))
        If xNSht Is Nothing Then
            Set xNSht = Worksheets.Add(, Sheets(Sheets.Count))
            xNSht.Name = CStr(xCol.Item(I))
        Else
            xNSht.Move , Sheets(Sheets.Count)
        End If
        xSht.Range("A" & xTRrow & ":A" & xRCount).EntireRow.Copy xNSht.Range("A1")
        xNSht.Columns.AutoFit
    Next
    xSht.AutoFilterMode = False
    xSht.Activate
    Application.ScreenUpdating = xSUpdate
End Sub

Note:: A1: C1 è l'intervallo di titoli della tabella. Puoi modificarlo in base alle tue esigenze.

3. Stampa F5 chiave per eseguire il codice, quindi vengono creati nuovi fogli di lavoro dopo tutti i fogli di lavoro della cartella di lavoro corrente come nell'immagine sottostante:

Se vuoi creare direttamente nuovi fogli per ogni riga senza considerare il valore della colonna, puoi usare il seguente codice.

Codice VBA: crea direttamente un nuovo foglio per ogni riga

Sub RowToSheet()
	Dim xRow As Long
	Dim I As Long
	With ActiveSheet
		xRow = .Range("A" & Rows.Count).End(xlUp).Row
		For I = 1 To xRow
			Worksheets.Add(, Sheets(Sheets.Count)).Name = "Row " & I
			.Rows(I).Copy Sheets("Row " & I).Range("A1")
		Next I
	End With
End Sub

Dopo aver eseguito il codice, ogni riga nel foglio di lavoro attivo verrà inserita in un nuovo foglio di lavoro.

Note:: La riga di intestazione verrà anche inserita in un nuovo foglio con questo codice VBA.


Crea nuovi fogli per ogni riga con l'utilità Dividi dati di Kutools per Excel

In realtà, il metodo sopra è complicato e difficile da capire. In questa sezione, ti presentiamo il Split Data utilità di Kutools for Excel.

Prima di applicare Kutools for Excel, Per favore scaricalo e installalo prima.

1. Selezionare la tabella da utilizzare per creare nuovi fogli, quindi fare clic su Kutools Plus> Sputare dati. Vedi screenshot:

2. Nel Suddividi i dati in più fogli di lavoro finestra di dialogo, eseguire le seguenti operazioni.

A. Per creare nuovi fogli in base al valore della colonna:

1). Seleziona il file Colonna specifica opzione e specificare una colonna su cui si desidera suddividere i dati in base nell'elenco a discesa;
2). Se si desidera denominare i fogli di lavoro con i valori delle colonne, selezionare Valori della colonna nel Regole menu `A tendina;
3). Clicca il OK pulsante. Vedi screenshot:

B.Per creare direttamente nuovi fogli per ogni riga:

1). Selezionare Righe fisse opzione, immettere il numero 1 nella scatola;
2). Selezionare Numeri di riga dal Regole menu `A tendina;
3). Clicca il OK pulsante. Vedi screenshot:

viene creata una nuova cartella di lavoro con tutti i nuovi fogli all'interno. Guarda gli screenshot qui sotto.

Creazione di nuovi fogli per ogni riga in base al valore della colonna:

Creazione di un nuovo foglio per ogni riga senza considerare il valore della colonna:

  Se vuoi avere una prova gratuita (30-day) di questa utilità, fare clic per scaricarlo, quindi andare ad applicare l'operazione secondo i passaggi precedenti.

Crea nuovi fogli per ogni riga con l'utilità Dividi dati di Kutools per Excel


I migliori strumenti per la produttività in ufficio

Kutools per Excel risolve la maggior parte dei tuoi problemi e aumenta la tua produttività dell'80%

  • Riutilizzo: Inserisci rapidamente formule complesse, grafici e tutto ciò che hai usato prima; Crittografa celle con password; Crea mailing list e invia email ...
  • Bar Super Formula (modifica facilmente più righe di testo e formula); Layout di lettura (leggi e modifica facilmente un gran numero di celle); Incolla su intervallo filtrato...
  • Unisci celle / righe / colonne senza perdere dati; Contenuto delle celle divise; Combina righe / colonne duplicate... Impedisci celle duplicate; Confronta intervalli...
  • Seleziona Duplica o Unico Righe; Seleziona Righe vuote (tutte le celle sono vuote); Super Find e Fuzzy Find in molte cartelle di lavoro; Selezione casuale ...
  • Copia esatta Più celle senza modificare il riferimento della formula; Riferimenti di creazione automatica a più fogli; Inserisci punti elenco, Caselle di controllo e altro ...
  • Estrai testo, Aggiungi testo, Rimuovi per posizione, Rimuovi spazio; Creare e stampare totali parziali di paging; Converti contenuto e commenti tra celle...
  • Super filtro (salva e applica schemi di filtri ad altri fogli); Ordinamento avanzato per mese / settimana / giorno, frequenza e altro; Filtro speciale in grassetto, corsivo ...
  • Combina cartelle di lavoro e fogli di lavoro; Unisci tabelle in base a colonne chiave; Suddividi i dati in più fogli; Conversione in batch xls, xlsx e PDF...
  • Più di 300 potenti funzionalità. Supporta Office/Excel 2007-2021 e 365. Supporta tutte le lingue. Facile implementazione nella tua azienda o organizzazione. Funzionalità complete Prova gratuita di 30 giorni. Garanzia di rimborso di 60 giorni.
scheda kte 201905

Scheda Office porta l'interfaccia a schede a Office e semplifica notevolmente il lavoro

  • Abilita la modifica e la lettura a schede in Word, Excel, PowerPoint, Publisher, Access, Visio e Project.
  • Apri e crea più documenti in nuove schede della stessa finestra, piuttosto che in nuove finestre.
  • Aumenta la produttività del 50% e riduce ogni giorno centinaia di clic del mouse!
fondo officetab
Commenti (33)
Ancora nessuna valutazione. Puoi essere il primo a votare!
Questo commento è stato fatto dal moderatore sul sito
Salve, voglio creare fogli di lavoro basati sul mio file modello Myformat e nominarli secondo i dati della prima colonna. Ho personalizzato il codice VBA come segue, ma sta generando troppi fogli bianchi. Potresti per favore aiutarmi a smettere di generare fogli bianchi. Grazie. Kumar Sub AddSheets() Dim cell As Excel.Range Dim wsWithSheetNames As Excel.Worksheet Dim wbToAddSheetsTo As Excel.Workbook Set wsWithSheetNames = ActiveSheet Set wbToAddSheetsTo = ActiveWorkbook per ogni cella in wsWithSheetNames.Range ("A2: A165") con wbToAddSheetsTo .Sheets. Aggiungi dopo:=ActiveSheet Sheets.Add Type:= _ "C:\Users\Dimple\AppData\Roaming\Microsoft\Templates\MyFormat.xltx" In caso di errore Riprendi successivo ActiveSheet.Name = cell.Value If Err.Number = 1004 Quindi Debug.Print cell.Value & "già utilizzato come nome del foglio" Fine se in errore GoTo 0 Fine con cella successiva End Sub
Questo commento è stato fatto dal moderatore sul sito
Ciao,
Ricevo sempre 2 fogli per voce univoca di fila. Qualche idea del perché? Inoltre, quanto sarebbe difficile anteporre la quantità totale di righe create dal foglio generato al nome del foglio. Grazie mille! Fammi sapere se accetti donazioni.
Questo commento è stato fatto dal moderatore sul sito
Ciao, voglio usare il mio modello di file exel MyFormat per generare fogli di lavoro e nominare i fogli di lavoro in base ai dati sulla prima colonna. Il seguente codice VBA funziona correttamente per generare i fogli di lavoro secondo MyFormat. Ma sta generando centinaia di fogli bianchi anche sul normale tempio Excel. Qualcuno potrebbe aiutarmi per favore a smettere di generare fogli bianchi in eccesso. Grazie Kumar Sub AddSheets() Dim cell As Excel.Range Dim wsWithSheetNames As Excel.Worksheet Dim wbToAddSheetsTo As Excel.Workbook Set wsWithSheetNames = ActiveSheet Set wbToAddSheetsTo = ActiveWorkbook per ogni cella in wsWithSheetNames.Range ("A2: A165") Con wbToAddSheetsTo .Sheets .Add After:=ActiveSheet Sheets.Add Type:= _ "C:\Users\Dreamline\AppData\Roaming\Microsoft\Templates\MyFormat.xltx" In caso di errore Riprendi Next ActiveSheet.Name = cell.Value If Err.Number = 1004 Quindi Debug.Print cell.Value & "già utilizzato come nome del foglio" Termina se in errore Vai a 0 Termina con la cella successiva End Sub
Questo commento è stato fatto dal moderatore sul sito
I nomi dei fogli di lavoro devono avere una lunghezza inferiore o uguale a trenta caratteri.
Non è una conoscenza molto comune, ma in caso contrario il codice genererà un foglio di lavoro vuoto "Foglio n." predefinito.

Crea un nuovo foglio di lavoro in cui verrà eseguito il codice di analisi e fai riferimento alla prima colonna come segue:
=SE(O('Originale di riferimento'!B1<>"", LEN('Originale di riferimento'!B1)>30), LEFT('Originale di riferimento'!B1,30),'Originale di riferimento'!B1)


O copia o fai riferimento al resto del foglio come puoi. Assicurati che la colonna sia priva di restrizioni di convalida dei dati in caso di problemi con il riferimento all'altro foglio di lavoro.
Questo commento è stato fatto dal moderatore sul sito
Grazie mille per aver postato questo!!!! Ha funzionato come un incantesimo. Puoi spiegare come funziona il primo set di codice?
Questo commento è stato fatto dal moderatore sul sito
Grazie per questo!



Nel codice VBA è comunque possibile nominare i fogli risultanti dai dati della prima e della seconda riga di colonna combinati?



quindi per il tuo esempio il foglio 2 sarebbe chiamato automaticamente "linda 100"
Questo commento è stato fatto dal moderatore sul sito
Cara Joyce,
Grazie per il tuo commento! Spero che lo script VBA sottostante possa aiutarti.

Sub analizza_dati()
Dim xR Conte fino a quando
Dim xSht come foglio di lavoro
Dim xNSht come foglio di lavoro
Dim I quanto a lungo
Dim xTRrow come intero
Dim xCol Come Nuova Collezione
Dim xTitolo come stringa
On Error Resume Next
Application.ScreenUpdating = False
Imposta xSht = Foglio attivo
xRCount = xSht.UsedRange.End(xlDown).Riga
xTitolo = "LA1:B1"
xTRrow = xSht.Range(xTitle).Riga
Per I = 2 Per xRCount
Chiama xCol.Add(CStr(xSht.Cells(I, 1)), CStr(xSht.Cells(I, 1)))
Successiva
Debug.Print xCol.Count
For I = 1 A xCol.Count
Chiama xSht.Range(xTitle).AutoFilter(1, CStr(xCol.Item(I)))
Imposta xNSht = Niente
Imposta xNSht = Fogli di lavoro(CStr(xCol.Item(I)))
Se xNSht non è niente allora
Imposta xNSht = Fogli di lavoro.Aggiungi(, Fogli(Fogli.Count))
xNSht.Name = CStr(xCol.Item(I) & xSht.Cells(I + 1, 2))
Altro
xNSht.Move , Fogli(Fogli.Conteggio)
End If
xSht.Range("A" & xTRrow & ":A" & xRCount).EntreRow.Copy xNSht.Range("A1")
xNSht.Columns.AutoFit
Successiva
xSht.AutoFilterMode = Falso
xSht.Attiva
Application.ScreenUpdating = True
End Sub
Questo commento è stato fatto dal moderatore sul sito
Questo è stato estremamente utile, proprio quello che stavo cercando. Grazie!
Questo commento è stato fatto dal moderatore sul sito
Questo codice è molto utile e quasi quello che stavo cercando.
Ma può essere regolato in modo tale che ci siano due fogli -
Il foglio 1 è i dati: una tabella di dati con la colonna A come nome
Il foglio 2 è un modello, con numerosi campi da compilare
Quello che speravo è eseguire una macro, che lo farà
1 Copia e incolla il modello, nello stesso file, assegna al foglio il nome nella cella A1
2 Copiare la cella B1, quindi incollarla in un campo selezionato nel nuovo modello
3 ripetere lungo la riga 1 fino a vuoto
4 quindi ripetere per la riga 2 e ogni riga fino alla fine.
Il risultato è un file con x n. fogli tutti uguali al modello, con tutti i campi compilati.
Ho ereditato un file che funziona nell'altro modo, estraendo i dati dai modelli in una tabella, ma non posso invertirlo.....
Questo commento è stato fatto dal moderatore sul sito
Caro Sam,
Sarebbe bello se potessi allegare la tua cartella di lavoro qui.
Puoi caricare il tuo file con il pulsante Carica file qui sotto.
Questo commento è stato fatto dal moderatore sul sito
Ciao ho provato a usare il tuo codice ma ottengo un errore
Errore di runtime '1004':
Errore definito dall'applicazione o dall'oggetto
Non ho alcuna conoscenza di VBA (o di qualsiasi tecnologia per quella materia) ma se un debug di stampa evidenzia la riga 11 xRCount=xSht.Cells(xSht.Rows.Count,1). Fine(xISu).Riga
Sto lavorando con un file di grandi dimensioni che ha 127 colonne e 337 righe (le righe varieranno le colonne no) ed è un elenco con i numeri e i loro dettagli.
Ho cambiato l'intervallo come hai notato ma non funziona ancora Sto usando Excel 2010 potresti dirmi come farlo funzionare se possibile
Grazie
Questo commento è stato fatto dal moderatore sul sito
Cara Beatrice,
Il codice viene aggiornato con il problem solving. Si prega di riprovare. Grazie per il tuo commento.
Questo commento è stato fatto dal moderatore sul sito
Ciao, penso che ci sia qualcosa di utile qui per la mia situazione, ma sono in grado di fare VBA o script, spero che tu possa aiutare.
Ho un modello con molte celle da riempire con i dati e ci sarà una chiave di ricerca (non univoca) che vorrei inserire nel modello. In base alla chiave di ricerca, i dati vengono ricercati e i dati corrispondenti sulla chiave abbinata vengono recuperati e inseriti nel modello. Il modello compilato viene salvato in un nuovo foglio di lavoro. Potrebbero esserci più di 1 voci di corrispondenza. Ho bisogno dello script per continuare la ricerca nell'elenco, finché non vengono selezionate tutte le corrispondenze e viene creato un determinato numero di nuovi fogli di lavoro.
Questo commento è stato fatto dal moderatore sul sito
Ciao, c'è un modo per mantenere la riga di intestazione su ogni nuovo foglio di lavoro? (cerchiato in rosso sul mio allegato)

Il codice prende tutte le righe dal mio foglio di lavoro principale e le trasferisce in nuovi fogli di lavoro, il che è fantastico. Ma voglio mantenere il mio valore di intestazione "master" (cerchiato in rosso) nella parte superiore di ogni nuovo foglio di lavoro. Grazie!



Mi riferisco a questo codice dall'alto:

Sub RowToSheet()
Dim xRiga quanto a lungo
Dim I quanto a lungo
Con ActiveSheet
xRiga = .Intervallo("A" & Righe.Conteggio).Fine(xlSu).Riga
Per I = 1 A xRiga
Worksheets.Add(, Sheets(Sheets.Count)).Name = "Riga" & I
.Righe(I).Copia fogli("Riga" & I).Intervallo("A1")
Avanti I
Fine Con
End Sub
Questo commento è stato fatto dal moderatore sul sito
Ottimo codice, ma potrei ottenere aiuto se i miei dati si trovano nella colonna G anziché nella colonna A? cosa devo cambiare per avere i dati della colonna G in una scheda diversa?

Grazie
Questo commento è stato fatto dal moderatore sul sito
Questo è un ottimo codice. Molte grazie alle scatole del cervello di OfficeExtend !! C'è comunque questo codice che potrebbe essere leggermente adattato per creare fogli separati per ogni *colonna* invece che per riga? Allego una foto di quello che sto cercando di ottenere. È possibile? Cordiali saluti.
Questo commento è stato fatto dal moderatore sul sito
Buon Giorno,
Non ho visto la tua foto qui.
Questo commento è stato fatto dal moderatore sul sito
Ciao, come modificare il codice, se il campo del mio nome è nella colonna C
Questo commento è stato fatto dal moderatore sul sito
Ciao Abdul Basit,
Il codice VBA sottostante può aiutarti. Per favore, prova.
Nella riga: xCName = "3", 3 indica il numero di colonna (qui c'è la colonna C) in Excel. Puoi cambiarlo in qualsiasi numero di colonna di cui hai bisogno.

Sub analizza_dati()
'Aggiorna entro Extendoffice 2018/3/2
Dim xR Conte fino a quando
Dim xSht come foglio di lavoro
Dim xNSht come foglio di lavoro
Dim I quanto a lungo
Dim xTRrow come intero
Dim xCol Come Nuova Collezione
Dim xTitolo come stringa
Dim xSUpdate come booleano
Dim xCName come intero
Dim xTA, xRA, xSRg1 come stringa
Imposta xSht = Foglio attivo
On Error Resume Next
xRCount = xSht.Cells(xSht.Rows.Count, 1).End(xlUp).Row
xTitolo = "LA1:C1"
xCName = "3" 'Cambia questo numero con il numero di colonna su cui creerai nuovi fogli in base
xTRrow = xSht.Range(xTitle).Cells(1).Row
Per I = 2 Per xRCount
Chiama xCol.Add(xSht.Cells(I, xCName).Text, xSht.Cells(I, xCName).Text)
Successiva
xSUpdate = Application.ScreenUpdating
Application.ScreenUpdating = False
xSRg = xSht.Cells(1, xCName).Address(RowAbsolute:=False, ColumnAbsolute:=False)
For I = 1 A xCol.Count
Chiama xSht.Range(xTitle).AutoFilter(xCName, CStr(xCol.Item(I)))
Imposta xNSht = Niente
Imposta xNSht = Fogli di lavoro(CStr(xCol.Item(I)))
Se xNSht non è niente allora
Imposta xNSht = Fogli di lavoro.Aggiungi(, Fogli(Fogli.Count))
xNSht.Name = CStr(xCol.Item(I))
Altro
xNSht.Move , Fogli(Fogli.Conteggio)
End If
xSht.Range("A" & xTRrow & ":A" & xRCount).EntreRow.Copy xNSht.Range("A1")
xNSht.Columns.AutoFit
Successiva
xSht.AutoFilterMode = Falso
xSht.Attiva
Application.ScreenUpdating = xSUpdate
End Sub
Questo commento è stato fatto dal moderatore sul sito
Fantastico codice VBA per fare il trucco.

Come posso modificarlo per non copiare la prima colonna? E per rimuovere il nome della colonna?

Saluti
Questo commento è stato fatto dal moderatore sul sito
Per favore, posso ottenere aiuto su come nominare automaticamente i fogli utilizzando una colonna particolare. Questo è per la riga al foglio VBA. Vedi sotto

Sub RowToSheet()

Dim xRiga quanto a lungo

Dim I quanto a lungo

Con ActiveSheet

xRiga = .Intervallo("A" & Righe.Conteggio).Fine(xlSu).Riga

Per I = 1 A xRiga

Worksheets.Add(, Sheets(Sheets.Count)).Name = "Riga" & I

.Righe(I).Copia fogli("Riga" & I).Intervallo("A1")

Avanti I

Fine Con

End Sub
Questo commento è stato fatto dal moderatore sul sito
Non importa che fossero spazi finali nascosti. Ho usato la funzione TRIM e l'ho ripulita. Avere un conteggio delle righe (il conteggio delle righe è davvero così le righe -1 anteposte al foglio sarebbe fantastico)
Questo commento è stato fatto dal moderatore sul sito
Come fare riferimento all'uso del codice sopra (credito)? E' possibile modificare il codice?
Questo commento è stato fatto dal moderatore sul sito
Ciao, questa è una piattaforma di comunicazione aperta. Il codice può essere referenziato e modificato.
Questo commento è stato fatto dal moderatore sul sito
Nana
86
2
Questo commento è stato fatto dal moderatore sul sito
Ciao! Ho appena usato questo codice e ha funzionato! Oltre a creare un nuovo foglio per ogni voce, voglio trasporlo in colonne e non riesco a capirlo. Quindi, per l'esempio sopra, l'output per Nana sarebbe simile a questo: Nome NanaRisultato 86No. 2
Questo commento è stato fatto dal moderatore sul sito
Ciao, ho usato questo codice e ha funzionato, ma se voglio selezionare più di una riga nell'intestazione, cosa cambierà nel codice? Ho più righe nel foglio che voglio in ogni foglio.
Questo commento è stato fatto dal moderatore sul sito
Ciao, hai capito come?
Questo commento è stato fatto dal moderatore sul sito
Ciao, c'è un codice che aggiungerebbe solo 1 nuovo foglio ogni volta che viene eseguita la macro, ad esempio la prima volta il nuovo foglio sarà nominato sul contenuto della cella A1, la seconda volta che la macro è stata eseguita il nuovo foglio sarà nominato sul contenuti di A1 ecc. grazie in anticipo
Non ci sono ancora commenti pubblicati qui
Carica Altre
Lasciate i vostri commenti
Pubblicazione come ospite
×
Valuta questo post:
0   Personaggi
Posizioni suggerite

Seguici

Copyright © 2009 - www.extendoffice.com. | Tutti i diritti riservati. Offerto da ExtendOffice, | Mappa del sito
Microsoft e il logo Office sono marchi o marchi registrati di Microsoft Corporation negli Stati Uniti e / o in altri paesi.
Protetto da Sectigo SSL