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

Cum se creează foi noi pentru fiecare rând în Excel?

Presupunând că aveți un tabel de scor cu numele tuturor elevilor în coloana A. Acum doriți să creați foi noi pe baza acestor nume în coloana A, iar fiecare foaie conține datele unice ale elevului. Sau pur și simplu creați o foaie nouă pentru fiecare rând din tabel, fără a lua în considerare numele din coloana A. În acest vedio, veți obține metode pentru a realiza acest lucru.

Creați foi noi pentru fiecare rând cu cod VBA
Creați foi noi pentru fiecare rând cu utilitarul Split Data din Kutools pentru Excel


Creați foi noi pentru fiecare rând cu cod VBA

Cu următoarele coduri, puteți crea o foaie nouă pe baza valorilor coloanei sau pur și simplu creați foi noi pentru fiecare rând din Excel.

1. presa Alt + F11 tastele simultan pentru a deschide Microsoft Visual Basic pentru aplicații fereastră.

2. În Microsoft Visual Basic pentru aplicații fereastră, faceți clic pe Insera > Module. Și apoi lipiți următorul cod în Module fereastră.

Cod VBA: creați o foaie nouă pentru fiecare rând pe baza coloanei

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

notițe: A1: C1 este gama de titluri a tabelului dvs. Îl puteți schimba în funcție de nevoile dvs.

3. presa F5 tasta pentru a rula codul, apoi se creează noi foi de lucru după toate foile de lucru din registrul de lucru curent, ca mai jos captura de ecran:

Dacă doriți să creați direct foi noi pentru fiecare rând fără a lua în considerare valoarea coloanei, puteți utiliza următorul cod.

Cod VBA: creați direct o foaie nouă pentru fiecare rând

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

După rularea codului, fiecare rând din foaia de lucru activă va fi plasat într-o foaie de lucru nouă.

notițe: Rândul de titlu va fi plasat, de asemenea, într-o foaie nouă cu acest cod VBA.


Creați foi noi pentru fiecare rând cu utilitarul Split Data din Kutools pentru Excel

De fapt, metoda de mai sus este complicată și greu de înțeles. În această secțiune, vă prezentăm Împărțiți datele utilitatea Kutools pentru Excel.

Înainte de a aplica Kutools pentru Excel, Vă rugăm să descărcați-l și instalați-l mai întâi.

1. Selectați tabelul pe care trebuie să îl utilizați pentru a crea noi foi, apoi faceți clic pe Kutools Plus> Scuipă date. Vedeți captura de ecran:

2. În Împărțiți datele în mai multe foi de lucru caseta de dialog, vă rugăm să procedați după cum urmează.

A. Pentru a crea foi noi pe baza valorii coloanei:

1). Vă rugăm să selectați Coloană specifică și specificați o coloană pe care doriți să împărțiți datele pe baza listei derulante;
2). Dacă doriți să denumiți foile de lucru cu valori de coloană, selectați Valorile coloanei în Reguli lista verticală;
3). Apasă pe OK buton. Vedeți captura de ecran:

B. Pentru crearea directă a foilor noi pentru fiecare rând:

1). Selectați Rânduri fixe opțiune, introduceți numărul 1 în cutie;
2). Selectați Numere de rând de la Reguli lista verticală;
3). Apasă pe OK buton. Vedeți captura de ecran:

se creează un nou registru de lucru cu toate foile noi în interior. Vedeți capturile de ecran de mai jos.

Crearea de foi noi pentru fiecare rând pe baza valorii coloanei:

Crearea unei foi noi pentru fiecare rând fără a lua în considerare valoarea coloanei:

  Dacă doriți să aveți o încercare gratuită (30-zi) a acestei utilitati, vă rugăm să faceți clic pentru a-l descărca, și apoi mergeți pentru a aplica operația conform pașilor de mai sus.

Creați foi noi pentru fiecare rând cu utilitarul Split Data din Kutools pentru Excel


Cele mai bune instrumente de productivitate Office

Kutools pentru Excel vă rezolvă majoritatea problemelor și vă crește productivitatea cu 80%

  • reutilizarea: Introduceți rapid formule complexe, diagrame și orice ai folosit anterior; Criptați celulele cu parola; Creați o listă de corespondență și trimiteți e-mailuri ...
  • Super Formula Bar (editați cu ușurință mai multe linii de text și formulă); Layout de citire (citiți și editați cu ușurință un număr mare de celule); Lipiți la interval filtrat...
  • Merge celule / rânduri / coloane fără a pierde date; Conținut de celule divizate; Combinați rânduri / coloane duplicate... Prevenirea celulelor duplicate; Comparați gamele...
  • Selectați Duplicat sau Unic Rânduri; Selectați Rânduri goale (toate celulele sunt goale); Super Find și Fuzzy Find în multe cărți de lucru; Selectare aleatorie ...
  • Copie exactă Mai multe celule fără modificarea referinței formulelor; Creați automat referințe la foi multiple; Introduceți gloanțe, Casete de selectare și multe altele ...
  • Extrageți textul, Adăugați text, eliminați după poziție, Eliminați spațiul; Creați și imprimați subtotaluri de paginare; Convertiți conținutul dintre celule și comentarii...
  • Super Filtru (salvați și aplicați scheme de filtrare altor foi); Sortare avansată după lună / săptămână / zi, frecvență și multe altele; Filtru special cu bold, italic ...
  • Combinați cărți de lucru și foi de lucru; Merge Tables pe baza coloanelor cheie; Împărțiți datele în mai multe foi; Conversia în loturi xls, xlsx și PDF...
  • Peste 300 de funcții puternice. Suportă Office / Excel 2007-2021 și 365. Acceptă toate limbile. Implementare ușoară în întreprinderea sau organizația dvs. Funcții complete Probă gratuită de 30 de zile. Garanție de returnare a banilor de 60 de zile.
fila kte 201905

Fila Office aduce interfața cu file în Office și vă face munca mult mai ușoară

  • Activați editarea și citirea cu file în Word, Excel, PowerPoint, Publisher, Access, Visio și Project.
  • Deschideți și creați mai multe documente în filele noi ale aceleiași ferestre, mai degrabă decât în ​​ferestrele noi.
  • Vă crește productivitatea cu 50% și reduce sute de clicuri de mouse pentru dvs. în fiecare zi!
fundul officetab
Comentarii (33)
Încă nu există evaluări. Fii primul care evaluează!
Acest comentariu a fost redus la minimum de moderatorul de pe site
Bună ziua, vreau să creez foi de lucru pe baza fișierului meu șablon Myformat și să le numesc conform datelor din prima coloană. Am personalizat codul VBA după cum urmează, dar generează prea multe foi goale. Mă puteți ajuta vă rog să nu mai generez foi goale. Mulțumesc. Kumar Sub AddSheets() Dim cell As Excel.Range Dim wsWithSheetNames As Excel.Worksheet Dim wbToAddSheetsTo As Excel.Workbook Set wsWithSheetNames = ActiveSheet Set wbToAddSheetsTo = ActiveWorkbook Pentru fiecare celulă din wsWithSheets.SheetsTo. Adăugați după:=ActiveSheet Sheets.Add Type:= _ "C:\Users\Dimple\AppData\Roaming\Microsoft\Templates\MyFormat.xltx" La eroare Reluați Next ActiveSheet.Name = cell.Value Dacă Err.Number = 2 Then Debug.Print cell.Value & " deja folosit ca nume de foaie" End If On Error GoTo 165 End With Next cell End Sub
Acest comentariu a fost redus la minimum de moderatorul de pe site
Bună,
Primesc întotdeauna 2 foi pentru fiecare intrare unică pe un rând. Ai idee de ce? De asemenea, cât de dificil ar fi să adăugați înaintea numelui foii numărul total de rânduri pe care foaia generată le creează. Multumesc mult! Anunță-mă dacă iei donații.
Acest comentariu a fost redus la minimum de moderatorul de pe site
Bună ziua, vreau să folosesc șablonul meu de fișier exel MyFormat pentru a genera foi de lucru și a denumi foile de lucru după datele de pe prima coloană. Următorul cod VBA funcționează ok pentru a genera foile de lucru conform MyFormat. Dar generează sute de foi goale și pe un templu normal Excel. Ar putea cineva să mă ajute, vă rog, să nu mai generez coli goale în exces. Mulțumesc Kumar Sub AddSheets() Dim cell As Excel.Range Dim wsWithSheetNames As Excel.Worksheet Dim wbToAddSheetsTo As Excel.Workbook Set wsWithSheetNames = ActiveSheet Set wbToAddSheetsTo = ActiveWorkbook Pentru fiecare celulă din wsWithSheets.SheetSheetsTo As Excel. .Add After:=ActiveSheet Sheets.Add Type:= _ "C:\Users\Dreamline\AppData\Roaming\Microsoft\Templates\MyFormat.xltx" La eroare Resume Next ActiveSheet.Name = cell.Value If Err.Number = 2 Apoi Debug.Print cell.Value & " deja folosit ca nume de foaie" End If On Error GoTo 165 End With Next cell End Sub
Acest comentariu a fost redus la minimum de moderatorul de pe site
Numele foilor de lucru trebuie să aibă o lungime mai mică sau egală cu treizeci de caractere.
Cunoștințe nu sunt foarte comune, dar în caz contrar codul va scoate o foaie de lucru necompletată implicită „Sheet #”.

Creați o nouă foaie de lucru prin care va rula codul dvs. de analiză și faceți referire la prima coloană, după cum urmează:
=IF(SAU('Original de referință'!B1<>"", LEN('Original de referință'!B1)>30), LEFT('Original de referință'!B1,30),'Original de referință'!B1)


Fie copiați, fie consultați restul foii după cum puteți. Asigurați-vă că coloana nu are restricții de validare a datelor dacă aveți probleme cu referirea la cealaltă foaie de lucru.
Acest comentariu a fost redus la minimum de moderatorul de pe site
Multumesc mult pentru postarea asta!!!! A mers perfect. Puteți explica cum funcționează primul set de coduri?
Acest comentariu a fost redus la minimum de moderatorul de pe site
Multumesc pentru asta!



În codul VBA există oricum pentru a numi foile rezultate din prima și a doua coloană de date combinate?



deci, pentru exemplul dvs., foaia 2 ar fi numită automat „linda 100”
Acest comentariu a fost redus la minimum de moderatorul de pe site
Dragă Joyce,
Multumesc pentru comentariul tau! Sper că scriptul VBA de mai jos vă poate ajuta.

Sub parse_data()
Dim xRCount As Long
Dim xSht ca foaie de lucru
Dim xNSht ca fișă de lucru
Dim I As Long
Dim xTRrow ca număr întreg
Dim xCol As New Collection
Dim xTitle ca șir
La data de eroare CV următoare
Application.ScreenUpdating = Fals
Setați xSht = ActiveSheet
xRCount = xSht.UsedRange.End(xlDown).Row
xTitle = „A1:B1”
xTRrow = xSht.Range(xTitle).Row
Pentru I = 2 To xRCount
Apelați xCol.Add(CStr(xSht.Cells(I, 1)), CStr(xSht.Cells(I, 1)))
Pagina Următoare →
Debug.Print xCol.Count
Pentru I = 1 To xCol.Count
Apelați xSht.Range(xTitle).AutoFilter(1, CStr(xCol.Item(I)))
Set xNSht = Nimic
Set xNSht = Foi de lucru(CStr(xCol.Item(I)))
Dacă xNSht este nimic, atunci
Set xNSht = Worksheets.Add(, Sheets(Sheets.Count))
xNSht.Name = CStr(xCol.Item(I) & xSht.Cells(I + 1, 2))
Altfel
xNSht.Move , Sheets(Sheets.Count)
Final, dacă
xSht.Range("A" & xTRrow & ":A" & xRCount).EntireRow.Copy xNSht.Range ("A1")
xNSht.Columns.AutoFit
Pagina Următoare →
xSht.AutoFilterMode = Fals
xSht.Activate
Application.ScreenUpdating = Adevărat
End Sub
Acest comentariu a fost redus la minimum de moderatorul de pe site
Acest lucru a fost extrem de util, exact ceea ce căutam. Mulțumiri!
Acest comentariu a fost redus la minimum de moderatorul de pe site
Acest cod este foarte util și aproape ceea ce căutam.
Dar poate fi ajustat astfel încât să existe două foi -
Foaia 1 este Datele - un tabel de date cu Coloana A fiind numele
Fișa 2 este un șablon, cu numeroase câmpuri care necesită completare
Ceea ce speram este să rulez o macrocomandă, ceea ce va face
1 Copiați și lipiți șablonul, în același fișier, denumiți foaia ca numele din Celula A1
2 Copiați celula B1, apoi treceți într-un câmp selectat din noul șablon
3 repetați de-a lungul rândului 1 până când se golește
4 apoi repetați pentru rândul 2 și pentru fiecare rând până la sfârșit.
Rezultatul este un fișier cu x nr. foile la fel ca șablonul, cu toate câmpurile completate.
Am moștenit un fișier care funcționează invers, extragând date din șabloane într-un tabel, dar nu îl pot inversa.....
Acest comentariu a fost redus la minimum de moderatorul de pe site
Draga Sam,
Ar fi bine dacă ați putea atașa aici registrul de lucru.
Puteți încărca fișierul cu butonul de mai jos Încărcare fișiere.
Acest comentariu a fost redus la minimum de moderatorul de pe site
Bună, am încercat să folosesc codul dvs. dar primesc o eroare
Eroare de timp de rulare „1004”:
Eroare definită de aplicație sau definită de obiect
Nu am cunoștințe despre VBA (sau orice tehnologie de altfel), dar dacă o depanare prin apăsare evidențiază linia 11 xRCount=xSht.Cells(xSht.Rows.Count,1). Sfârșit(xIUp).Rând
Lucrez cu un fișier mare care are 127 de coloane și 337 de rânduri (rândurile vor varia, coloanele nu vor varia) și este o listă cu numerele și detaliile lor.
Am schimbat intervalul așa cum ați menționat, dar tot nu funcționează, folosesc Excel 2010, vă rog să-mi spuneți cum să funcționeze dacă este posibil
mulțumesc
Acest comentariu a fost redus la minimum de moderatorul de pe site
Dragă Beatriz,
Codul este actualizat odată cu rezolvarea problemei. Vă rugăm să încercați din nou. Multumesc pentru comentariu.
Acest comentariu a fost redus la minimum de moderatorul de pe site
Bună, cred că este ceva util aici pentru situația mea, dar sunt capabil să fac VBA sau script, sper că mă puteți ajuta.
Am un șablon cu multe celule de completat cu date și va exista o cheie de căutare (neunică) pe care aș dori să o introduc în șablon. Pe baza cheii de căutare, datele sunt căutate și datele corespunzătoare de pe cheia potrivită sunt preluate și completate în șablon. Șablonul completat este salvat într-o nouă foaie de lucru. Poate există mai mult de 1 intrări de potrivire. Am nevoie de script pentru a continua căutarea în listă, până când toate potrivirile sunt alese și un anumit număr de foi de lucru noi create.
Acest comentariu a fost redus la minimum de moderatorul de pe site
Bună, există o modalitate de a păstra rândul de titlu pe fiecare nouă foaie de lucru? (încercuit cu roșu pe atașamentul meu)

Codul preia toate rândurile din foaia mea de lucru principală și le transferă în foi de lucru noi, ceea ce este grozav. Dar vreau să păstrez valoarea antetului „master” (încercuită cu roșu) în partea de sus a fiecărei foi de lucru noi. Mulțumiri!



Mă refer la acest cod de mai sus:

Sub RowToSheet()
Dim xRow As Long
Dim I As Long
Cu ActiveSheet
xRow = .Range(„A” & Rows.Count).End(xlUp).Row
Pentru I = 1 To xRow
Foi de lucru.Add(, Sheets(Sheets.Count)).Nume = „Rând” și I
.Rânduri(I).Copiați foi(„Rând „ și I).Interval(„A1”)
Apoi eu
Se termina cu
End Sub
Acest comentariu a fost redus la minimum de moderatorul de pe site
Cod grozav, dar aș putea obține ajutor dacă datele mele sunt pe coloana G în loc de coloana A? ce trebuie să schimb pentru a avea datele coloanei G în filă diferită?

mulțumesc
Acest comentariu a fost redus la minimum de moderatorul de pe site
Acesta este un cod grozav. Multe mulțumiri brain-box-urilor de la OfficeExtend !! Există oricum acest cod ar putea fi ușor adaptat pentru a crea foi separate pentru fiecare *coloană* în loc de rând? Am atașat o poză cu ceea ce încerc să obțin. Este posibil? Salutări calde.
Acest comentariu a fost redus la minimum de moderatorul de pe site
O zi buna,
Nu ți-am văzut poza aici.
Acest comentariu a fost redus la minimum de moderatorul de pe site
Bună, cum să modific codul, dacă câmpul meu numele este în coloana C
Acest comentariu a fost redus la minimum de moderatorul de pe site
Bună Abdul Basit,
Codul VBA de mai jos vă poate ajuta. Vă rugăm să încercați.
În linia: xCName = „3”, 3 indică numărul coloanei (aici este coloana C) în Excel. Îl puteți schimba în orice număr de coloană după cum doriți.

Sub parse_data()
'Actualizare până la Extendoffice 2018/3/2
Dim xRCount As Long
Dim xSht ca foaie de lucru
Dim xNSht ca fișă de lucru
Dim I As Long
Dim xTRrow ca număr întreg
Dim xCol As New Collection
Dim xTitle ca șir
Dim xSUpdate ca boolean
Dim xCName ca întreg
Dim xTA, xRA, xSRg1 ca șir
Setați xSht = ActiveSheet
La data de eroare CV următoare
xRCount = xSht.Cells(xSht.Rows.Count, 1).End(xlUp).Row
xTitle = „A1:C1”
xCName = "3" 'Schimbați acest număr cu numărul coloanei pe care veți crea foi noi pe baza
xTRrow = xSht.Range(xTitle).Cells(1).Row
Pentru I = 2 To xRCount
Apelați xCol.Add(xSht.Cells(I, xCName).Text, xSht.Cells(I, xCName).Text)
Pagina Următoare →
xSUpdate = Application.ScreenUpdating
Application.ScreenUpdating = Fals
xSRg = xSht.Cells(1, xCName).Address(RowAbsolute:=False, ColumnAbsolute:=False)
Pentru I = 1 To xCol.Count
Apelați xSht.Range(xTitle).AutoFilter(xCName, CStr(xCol.Item(I)))
Set xNSht = Nimic
Set xNSht = Foi de lucru(CStr(xCol.Item(I)))
Dacă xNSht este nimic, atunci
Set xNSht = Worksheets.Add(, Sheets(Sheets.Count))
xNSht.Name = CStr(xCol.Item(I))
Altfel
xNSht.Move , Sheets(Sheets.Count)
Final, dacă
xSht.Range("A" & xTRrow & ":A" & xRCount).EntireRow.Copy xNSht.Range ("A1")
xNSht.Columns.AutoFit
Pagina Următoare →
xSht.AutoFilterMode = Fals
xSht.Activate
Application.ScreenUpdating = xSUpdate
End Sub
Acest comentariu a fost redus la minimum de moderatorul de pe site
Cod VBA cool pentru a face truc.

Cum îl pot modifica pentru a nu copia prima coloană? Și pentru a elimina numele coloanei?

În ceea ce priveşte
Acest comentariu a fost redus la minimum de moderatorul de pe site
Vă rog, pot obține ajutor despre cum să denumesc automat foile folosind o anumită coloană. Acest lucru este pentru rândul la foaia VBA. Vezi mai jos

Sub RowToSheet()

Dim xRow As Long

Dim I As Long

Cu ActiveSheet

xRow = .Range(„A” & Rows.Count).End(xlUp).Row

Pentru I = 1 To xRow

Foi de lucru.Add(, Sheets(Sheets.Count)).Nume = „Rând” și I

.Rânduri(I).Copiați foi(„Rând „ și I).Interval(„A1”)

Apoi eu

Se termina cu

End Sub
Acest comentariu a fost redus la minimum de moderatorul de pe site
Nu contează că erau spații ascunse. Am folosit funcția TRIM și am curățat-o. A avea un număr de rânduri (numărul de linii într-adevăr, așa că rândurile -1 anexate foii ar fi uimitor)
Acest comentariu a fost redus la minimum de moderatorul de pe site
Cum se face referire la utilizarea codului de mai sus (credit)? Este posibil să modifici codul?
Acest comentariu a fost redus la minimum de moderatorul de pe site
Bună, aceasta este o platformă de comunicare deschisă. Codul are voie să facă referire și să se modifice.
Acest comentariu a fost redus la minimum de moderatorul de pe site
Nana
86
2
Acest comentariu a fost redus la minimum de moderatorul de pe site
Buna! Tocmai am folosit acest cod și a funcționat! Pe lângă crearea unei noi foi pentru fiecare intrare, vreau să o transpun în coloane și nu o pot da seama. Deci, pentru exemplul de mai sus, rezultatul pentru Nana ar arăta astfel - Nume si Prenume NanaScor 86Nu. 2
Acest comentariu a fost redus la minimum de moderatorul de pe site
Bună, am folosit acest cod și am funcționat, dar dacă vreau să selectez mai multe rânduri din antet, ce se va schimba în cod? Am mai multe linii în foaie pe care le vreau în fiecare foaie.
Acest comentariu a fost redus la minimum de moderatorul de pe site
Salut, ti-ai dat seama cum?
Acest comentariu a fost redus la minimum de moderatorul de pe site
Bună, există un cod care să adauge doar 1 foaie nouă de fiecare dată când se rulează macro-ul, de exemplu, pentru prima dată noua foaie va fi denumită în conținutul celulei A1, a doua oară când a fost rulată macro-ul, noua foaie va fi numită pe conținutul A1 etc. mulțumesc anticipat
Nu există comentarii postate aici încă
Încărcați mai
Lăsa comentarii
Postare ca invitat
×
Evaluează această postare:
0   Caractere
Locații sugerate

Urmărește-ne

Copyright © 2009 - www.extendoffice.com. | Toate drepturile rezervate. Cu sprijinul ExtendOffice. | Harta site-ului
Microsoft și sigla Office sunt mărci comerciale sau mărci comerciale înregistrate ale Microsoft Corporation în Statele Unite și / sau în alte țări.
Protejat de Sectigo SSL