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

Kako ustvariti nove liste za vsako vrstico v Excelu?

Predpostavimo, da imate tabelo rezultatov z vsemi imeni učencev v stolpcu A. Zdaj želite ustvariti nove liste na podlagi teh imen v stolpcu A, in make na list vsebuje edinstvene podatke študenta. Ali pa preprosto ustvarite nov list za vsako vrstico v tabeli, ne da bi upoštevali imena v stolpcu A. V tem videu boste dobili metode za dosego tega.

Ustvarite nove liste za vsako vrstico s kodo VBA
Ustvarite nove liste za vsako vrstico s pripomočkom Split Data Kutools za Excel


Ustvarite nove liste za vsako vrstico s kodo VBA

Z naslednjimi kodami lahko ustvarite nov list na podlagi vrednosti stolpcev ali preprosto ustvarite nove liste za vsako vrstico v Excelu.

1. Pritisnite druga + F11 tipke hkrati, da odprete Microsoft Visual Basic za aplikacije okno.

2. V Ljubljani Microsoft Visual Basic za aplikacije okno, kliknite Vstavi > Moduli. In nato prilepite naslednjo kodo v Moduli okno.

Koda VBA: ustvarite nov list za vsako vrstico na podlagi stolpca

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

Opombe: A1: C1 je obseg naslovov vaše tabele. Lahko ga spremenite glede na svoje potrebe.

3. Pritisnite F5 ključ za zagon kode, potem se po vseh delovnih listih trenutnega delovnega zvezka ustvarijo novi delovni listi, kot je prikazano spodaj:

Če želite za vsako vrstico neposredno ustvariti nove liste, ne da bi upoštevali vrednost stolpca, lahko uporabite naslednjo kodo.

Koda VBA: Neposredno ustvarite nov list za vsako vrstico

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

Po zagonu kode bo vsaka vrstica v aktivnem delovnem listu postavljena v nov delovni list.

Opombe: Vrstica z naslovi bo prav tako postavljena v nov list s to kodo VBA.


Ustvarite nove liste za vsako vrstico s pripomočkom Split Data Kutools za Excel

Pravzaprav je zgornja metoda zapletena in težko razumljiva. V tem poglavju vam predstavljamo Razdeljeni podatki uporabnost Kutools za Excel.

Pred vložitvijo vloge Kutools za ExcelProsim najprej ga prenesite in namestite.

1. Izberite tabelo, ki jo želite uporabiti za ustvarjanje novih listov, in kliknite Kutools Plus> Podatki o pljuvanju. Oglejte si posnetek zaslona:

2. V Ljubljani Razdelite podatke na več delovnih listov pogovorno okno, naredite naslednje.

A. Za ustvarjanje novih listov na podlagi vrednosti stolpca:

1). Izberite Poseben stolpec in na spustnem seznamu določite stolpec, na podlagi katerega želite razdeliti podatke;
2). Če želite poimenovati delovne liste z vrednostmi stolpcev, izberite Vrednosti stolpca v Pravila spustni seznam;
3). Kliknite OK . Oglejte si posnetek zaslona:

B. Za neposredno ustvarjanje novih listov za vsako vrstico:

1). Izberite Fiksne vrstice možnost, vnesite številko 1 v škatlo;
2). Izberite Številke vrstic Iz Pravila spustni seznam;
3). Kliknite OK . Oglejte si posnetek zaslona:

ustvarjen je nov delovni zvezek z vsemi novimi listi. Oglejte si posnetke zaslona spodaj.

Ustvarjanje novih listov za vsako vrstico na podlagi vrednosti stolpca:

Ustvarjanje novega lista za vsako vrstico brez upoštevanja vrednosti stolpca:

  Če želite imeti brezplačen preizkus (30-dan) tega pripomočka, kliknite, če ga želite prenestiin nato nadaljujte z uporabo postopka v skladu z zgornjimi koraki.

Ustvarite nove liste za vsako vrstico s pripomočkom Split Data Kutools za Excel


Najboljša orodja za pisarniško produktivnost

Kutools za Excel rešuje večino vaših težav in poveča vašo produktivnost za 80%

  • Ponovna uporaba: Hitro vstavite zapletene formule, grafikoni in vse, kar ste že uporabljali; Šifriraj celice z geslom; Ustvari poštni seznam in pošiljanje e-pošte ...
  • Vrstica Super Formula (enostavno urejanje več vrstic besedila in formule); Bralna postavitev (enostavno branje in urejanje velikega števila celic); Prilepite v filtrirani obseg...
  • Združi celice / vrstice / stolpce brez izgube podatkov; Vsebina razdeljenih celic; Združi podvojene vrstice / stolpce... prepreči podvojene celice; Primerjaj obsege...
  • Izberite Duplicate ali Unique Vrstice; Izberite prazne vrstice (vse celice so prazne); Super Find in Fuzzy Find v mnogih delovnih zvezkih; Naključna izbira ...
  • Natančna kopija Več celic brez spreminjanja sklica formule; Samodejno ustvarjanje referenc na več listov; Vstavi oznake, Potrditvena polja in še več ...
  • Izvleček besedila, Dodaj besedilo, Odstrani po položaju, Odstrani presledek; Ustvari in natisni vmesne seštevke strani Pretvarjanje med vsebino celic in komentarji...
  • Super filter (shranite in uporabite sheme filtrov za druge liste); Napredno razvrščanje glede na mesec / teden / dan, pogostost in drugo; Poseben filter s krepko, ležeče ...
  • Združite delovne zvezke in delovne liste; Spoji tabele na podlagi ključnih stolpcev; Razdelite podatke na več listov; Paketna pretvorba xls, xlsx in PDF...
  • Več kot 300 zmogljivih funkcij. Podpira Office / Excel 2007-2021 in 365. Podpira vse jezike. Enostavna uvedba v vašem podjetju ali organizaciji. 30-dnevna brezplačna preizkusna različica vseh funkcij. 60-dnevna garancija vračila denarja.
zavihek kte 201905

Kartica Office prinaša vmesnik z zavihki v Office in poenostavi vaše delo

  • Omogočite urejanje in branje z zavihki v Wordu, Excelu, PowerPointu, Publisher, Access, Visio in Project.
  • Odprite in ustvarite več dokumentov v novih zavihkih istega okna in ne v novih oknih.
  • Poveča vašo produktivnost za 50%in vsak dan zmanjša na stotine klikov miške za vas!
dno pisarniške mize
Komentarji (33)
Ocene še ni. Bodite prvi in ​​ocenite!
Ta komentar je moderator na spletnem mestu minimiziral
Pozdravljeni, želim ustvariti delovne liste na podlagi moje predloge datoteke Myformat in jih poimenovati glede na podatke prvega stolpca. Kodo VBA sem prilagodil na naslednji način, vendar ustvarja preveč praznih listov. Prosim, če mi lahko pomagate prenehati ustvarjati prazne liste. Hvala vam. Kumar Sub AddSheets() Zatemni celico kot Excel.Range Dim wsWithSheetNames kot Excel.Worksheet Dim wbToAddSheetsTo As Excel.Workbook Set wsWithSheetNames = ActiveSheet Set wbToAddSheetsTo = ActiveWorkbook For Every cell In wsbToAddSheetsTo = ActiveWorkbook For Every WithSheetNames. Add After:=ActiveSheet Sheets.Add Type:= _ "C:\Users\Dimple\AppData\Roaming\Microsoft\Templates\MyFormat.xltx" Ob napaki Nadaljuj Naslednji ActiveSheet.Name = cell.Value Če Err.Number = 2 Nato Debug.Print cell.Value & "že uporabljeno kot ime lista" Konec, če je vklopljen Error Pojdi na 165 Konec z naslednjo celico Konec pod
Ta komentar je moderator na spletnem mestu minimiziral
Hi,
Vedno dobim 2 lista na edinstven vnos v vrstici A. Kakšna ideja zakaj? Prav tako, kako težko bi bilo dodati skupno količino vrstic, ki jih ustvari ustvarjen list, imenu lista. Najlepša hvala! Sporočite mi, če sprejemate donacije.
Ta komentar je moderator na spletnem mestu minimiziral
Pozdravljeni, želim uporabiti svojo predlogo datoteke exel MyFormat za ustvarjanje delovnih listov in poimenovanje delovnih listov po podatkih v prvem stolpcu. Naslednja koda VBA deluje v redu za ustvarjanje delovnih listov v skladu z MyFormat. Vendar ustvarja na stotine praznih listov tudi na običajnem excel templetu. Mi lahko prosim pomaga, da preneham ustvarjati odvečne prazne liste. Hvala Kumar Sub AddSheets() Dim cell As Excel.Range Dim wsWithSheetNames As Excel.Worksheet Dim wbToAddSheetsTo As Excel.Workbook Set wsWithSheetNames = ActiveSheet Set wbToAddSheetsTo = ActiveWorkbook For Every cell In wsbToAddSheetsTo = ActiveWorkbook For Every cell In wsbNaAddSheets .Add After:=ActiveSheet Sheets.Add Type:= _ "C:\Users\Dreamline\AppData\Roaming\Microsoft\Templates\MyFormat.xltx" Ob napaki Nadaljuj Naslednji ActiveSheet.Name = cell.Value Če Err.Number = 2 Nato Debug.Print cell.Value & "že uporabljeno kot ime lista" Konec, če je vklopljen Error Pojdi na 165 Konec z naslednjo celico End Sub
Ta komentar je moderator na spletnem mestu minimiziral
Imena delovnih listov morajo biti manjša ali enaka tridesetim znakom.
Ni zelo splošno znano, sicer pa bo koda izpisala privzeti prazen delovni list "Sheet #".

Ustvarite nov delovni list, skozi katerega bo potekala vaša koda za razčlenjevanje, in se sklicujte na prvi stolpec, kot sledi:
=IF(OR('Referenčni izvirnik'!B1<>"", LEN('Referenčni izvirnik'!B1)>30), LEFT('Referenčni izvirnik'!B1,30),'Referenčni izvirnik'!B1)


Po želji kopirajte ali se sklicujte na preostali del lista. Prepričajte se, da v stolpcu ni omejitev preverjanja veljavnosti podatkov, če imate težave pri sklicevanju na drugi delovni list.
Ta komentar je moderator na spletnem mestu minimiziral
Najlepša hvala za tole objavo!!!! Deloval kot čar. Ali lahko razložite, kako deluje prvi niz kode?
Ta komentar je moderator na spletnem mestu minimiziral
Hvala za to!



Ali je v kodi VBA vseeno mogoče poimenovati nastale liste iz podatkov v vrstici prvega in drugega stolpca skupaj?



zato bi bil za vaš primer list 2 samodejno poimenovan "linda 100"
Ta komentar je moderator na spletnem mestu minimiziral
Draga Joyce,
Hvala za vaš komentar! Upam, da vam bo spodnji skript VBA pomagal.

Podrazč._podatki()
Dim xRCount As Long
Dim xSht kot delovni list
Dim xNSht kot delovni list
Dim I As Long
Dim xTRrow kot celo število
Dim xCol kot nova kolekcija
Dim xTitle kot niz
On Error Resume Next
Application.ScreenUpdating = Napačno
Nastavite xSht = ActiveSheet
xRCount = xSht.UsedRange.End(xlDown).Row
xTitle = "A1:B1"
xTRrow = xSht.Range(xTitle).Row
Za I = 2 do xRCount
Pokliči xCol.Add(CStr(xSht.Cells(I, 1)), CStr(xSht.Cells(I, 1)))
Naslednji
Debug.Print xCol.Count
Za I = 1 do xCol.Count
Pokliči xSht.Range(xTitle).AutoFilter(1, CStr(xCol.Item(I)))
Nastavite xNSht = Nič
Nastavite xNSht = Delovni listi(CStr(xCol.Item(I)))
Če xNSht ni nič potem
Nastavi xNSht = Delovni listi.Dodaj(, Listi(Listi.Število))
xNSht.Name = CStr(xCol.Item(I) & xSht.Cells(I + 1, 2))
Else
xNSht.Move , Sheets(Sheets.Count)
Konec Če
xSht.Range("A" & xTRrow & ":A" & xRCount).EntireRow.Copy xNSht.Range("A1")
xNSht.Columns.AutoFit
Naslednji
xSht.AutoFilterMode = False
xSht.Aktiviraj
Application.ScreenUpdating = Res
End Sub
Ta komentar je moderator na spletnem mestu minimiziral
To je bilo zelo koristno, ravno tisto, kar sem iskal. Hvala!
Ta komentar je moderator na spletnem mestu minimiziral
Ta koda je zelo koristna in skoraj to, kar sem iskal.
Toda ali se lahko prilagodi tako, da sta dva lista -
List 1 je Podatki – tabela s podatki, pri čemer je stolpec A ime
List 2 je predloga s številnimi polji, ki jih je treba izpolniti
Kar sem upal, je zagnati makro, ki bo
1 Kopirajte in prilepite predlogo, v isti datoteki poimenujte list kot ime v celici A1
2 Kopirajte celico B1 in nato prilepite v izbrano polje v novi predlogi
3 ponovite vzdolž 1. vrstice, dokler ni prazna
4 nato ponovite za 2. vrstico in vsako vrstico do konca.
Rezultat je datoteka z x št. listi so enaki kot predloga, z vsemi izpolnjenimi polji.
Podedoval sem datoteko, ki deluje drugače, ekstrahira podatke iz predlog v tabelo, vendar je ne morem obrniti.....
Ta komentar je moderator na spletnem mestu minimiziral
Dragi Sam,
Lepo bi bilo, če bi tukaj priložil svoj delovni zvezek.
Svojo datoteko lahko naložite s spodnjim gumbom Naloži datoteke.
Ta komentar je moderator na spletnem mestu minimiziral
Pozdravljeni, poskušal sem uporabiti vašo kodo, vendar se mi prikaže napaka
Napaka med izvajanjem '1004':
Napaka, definirana v aplikaciji ali objektu
Nimam znanja o VBA (ali kateri koli tehnologiji glede tega), toda če tiskanje odpravlja napake, poudari vrstico 11 xRCount=xSht.Cells(xSht.Rows.Count,1). Konec(xIUp).Vrstica
Delam z veliko datoteko, ki ima 127 stolpcev in 337 vrstic (vrstice se bodo razlikovale, stolpci ne bodo) in je seznam s številkami Id in njihovimi podrobnostmi.
Spremenil sem obseg, kot ste ugotovili, vendar še vedno ne deluje. Uporabljam Excel 2010, ali mi lahko poveste, kako naj deluje, če je mogoče
Hvala
Ta komentar je moderator na spletnem mestu minimiziral
Spoštovana Beatriz,
Koda se posodobi z reševanjem težave. Poskusite znova. Hvala za vaš komentar.
Ta komentar je moderator na spletnem mestu minimiziral
Pozdravljeni, mislim, da je tukaj nekaj koristnega za mojo situacijo, vendar lahko naredim VBA ali skript, upam, da lahko pomagate.
Imam predlogo z veliko celicami, ki jih je treba napolniti s podatki, in iskalni ključ (neunikaten), ki bi ga rad vnesel v predlogo. Na podlagi iskalnega ključa se poiščejo podatki in ustrezni podatki o ujemajočem se ključu se pridobijo in izpolnijo v predlogo. Izpolnjena predloga se shrani na nov delovni list. Morda je več kot 1 vnos ujemanja. Potrebujem skript za nadaljevanje iskanja po seznamu, dokler niso izbrana vsa ujemanja in ustvarjeno določeno število novih delovnih listov.
Ta komentar je moderator na spletnem mestu minimiziral
Pozdravljeni, ali obstaja način, da obdržite vrstico z naslovi na vsakem novem delovnem listu? (obkroženo z rdečo na moji prilogi)

Koda vzame vse vrstice iz mojega glavnega delovnega lista in jih prenese v nove delovne liste, kar je super. Vendar želim ohraniti svojo "glavno" vrednost glave (obkroženo z rdečo) na vrhu vsakega novega delovnega lista. Hvala!



Od zgoraj se sklicujem na to kodo:

Podvrstica na list()
Dim xRow As Long
Dim I As Long
Z ActiveSheet
xRow = .Range("A" & Rows.Count).End(xlUp).Row
Za I = 1 do xRow
Worksheets.Add(, Sheets(Sheets.Count)).Name = "Row" & I
.Rows(I).Copy Sheets("Row " & I).Range("A1")
Naslednji jaz
Končaj s
End Sub
Ta komentar je moderator na spletnem mestu minimiziral
Odlična koda, a lahko dobim pomoč, če so moji podatki v stolpcu G namesto v stolpcu A? kaj moram spremeniti, da bodo podatki stolpca G v drugem zavihku?

Hvala
Ta komentar je moderator na spletnem mestu minimiziral
To je odlična koda. Najlepša hvala možganskim škatlam na OfficeExtend !! Ali je vseeno mogoče to kodo nekoliko prilagoditi za ustvarjanje ločenih listov za vsak *stolpec* namesto vrstice? Priložila sem sliko, kaj poskušam doseči. Je to možno? Prijazni pozdravi.
Ta komentar je moderator na spletnem mestu minimiziral
Dober dan,
Tukaj nisem videl tvoje slike.
Ta komentar je moderator na spletnem mestu minimiziral
Živjo, kako spremeniti kodo, če je moje polje z imenom v stolpcu C
Ta komentar je moderator na spletnem mestu minimiziral
Živjo Abdul Basit,
Spodnja koda VBA vam lahko pomaga. Prosim, poskusite.
V vrstici: xCName = "3", 3 označuje številko stolpca (tu je stolpec C) v Excelu. Po potrebi jo lahko spremenite v katero koli številko stolpca.

Podrazč._podatki()
'Posodobite do Extendoffice 2018 / 3 / 2
Dim xRCount As Long
Dim xSht kot delovni list
Dim xNSht kot delovni list
Dim I As Long
Dim xTRrow kot celo število
Dim xCol kot nova kolekcija
Dim xTitle kot niz
Dim xSUpdate kot Boolean
Zatemni xCName kot celo število
Dim xTA, xRA, xSRg1 kot niz
Nastavite xSht = ActiveSheet
On Error Resume Next
xRCount = xSht.Cells(xSht.Rows.Count, 1).End(xlUp).Row
xTitle = "A1:C1"
xCName = "3" 'To številko spremenite v številko stolpca, na podlagi katerega boste ustvarili nove liste
xTRrow = xSht.Range(xTitle).Cells(1).Row
Za I = 2 do xRCount
Pokliči xCol.Add(xSht.Cells(I, xCName).Besedilo, xSht.Cells(I, xCName).Besedilo)
Naslednji
xSUpdate = Application.ScreenUpdating
Application.ScreenUpdating = Napačno
xSRg = xSht.Cells(1, xCName).Address(RowAbsolute:=False, ColumnAbsolute:=False)
Za I = 1 do xCol.Count
Pokliči xSht.Range(xTitle).AutoFilter(xCName, CStr(xCol.Item(I)))
Nastavite xNSht = Nič
Nastavite xNSht = Delovni listi(CStr(xCol.Item(I)))
Če xNSht ni nič potem
Nastavi xNSht = Delovni listi.Dodaj(, Listi(Listi.Število))
xNSht.Name = CStr(xCol.Item(I))
Else
xNSht.Move , Sheets(Sheets.Count)
Konec Če
xSht.Range("A" & xTRrow & ":A" & xRCount).EntireRow.Copy xNSht.Range("A1")
xNSht.Columns.AutoFit
Naslednji
xSht.AutoFilterMode = False
xSht.Aktiviraj
Application.ScreenUpdating = xSUpdate
End Sub
Ta komentar je moderator na spletnem mestu minimiziral
Kul koda VBA, da naredite trik.

Kako ga lahko spremenim tako, da ne kopira prvega stolpca? In odstraniti ime stolpca?

S spoštovanjem
Ta komentar je moderator na spletnem mestu minimiziral
Prosim, če lahko dobim pomoč o tem, kako samodejno poimenovati liste z uporabo določenega stolpca. To je za VBA od vrstice do lista. Glej spodaj

Podvrstica na list()

Dim xRow As Long

Dim I As Long

Z ActiveSheet

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

Za I = 1 do xRow

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

.Rows(I).Copy Sheets("Row " & I).Range("A1")

Naslednji jaz

Končaj s

End Sub
Ta komentar je moderator na spletnem mestu minimiziral
Ni važno, da so bili skriti zadnji presledki. Uporabil sem funkcijo TRIM in jo počistil. Imeti štetje vrstic (resnično število vrstic, tako da bi bilo vrstic -1 priloženih listu neverjetno)
Ta komentar je moderator na spletnem mestu minimiziral
Kako se sklicevati na uporabo zgornje kode (kredit)? Ali je možno kodo spremeniti?
Ta komentar je moderator na spletnem mestu minimiziral
Pozdravljeni, to je odprta komunikacijska platforma. Koda se lahko sklicuje in spreminja.
Ta komentar je moderator na spletnem mestu minimiziral
Nana
86
2
Ta komentar je moderator na spletnem mestu minimiziral
Zdravo! Pravkar sem uporabil to kodo in je delovala! Poleg tega, da ustvarim nov list za vsak vnos, ga želim prenesti v stolpce in tega ne morem ugotoviti. Torej bi za zgornji primer izhod za Nana izgledal takole - Ime NanaRezultat 86No. 2
Ta komentar je moderator na spletnem mestu minimiziral
Pozdravljeni, uporabil sem to kodo in je delovalo, toda če želim izbrati več kot eno vrstico v glavi, kaj se bo spremenilo v kodi? Na listu imam več vrstic, ki jih želim na vsakem listu.
Ta komentar je moderator na spletnem mestu minimiziral
Pozdravljeni, ste ugotovili, kako?
Ta komentar je moderator na spletnem mestu minimiziral
Živjo, ali obstaja koda, ki bi dodala samo 1 nov list vsakič, ko se zažene makro, npr. prvič, ko bi bil nov list poimenovan na vsebini celice A1, drugič, ko je bil zagnan makro, bi bil nov list poimenovan na vsebina A1 itd. hvala v pričakovanju
Tu še ni objavljenih komentarjev
Obremenitev Več
Pustite vaše komentarje
Objava kot gost
×
Ocenite to objavo:
0   Znaki
Predlagane lokacije

Sledi nam

Copyright © 2009 - www.extendoffice.com. | Vse pravice pridržane. Poganja ga ExtendOffice. | Kazalo
Microsoft in logotip Office sta blagovni znamki ali registrirani blagovni znamki družbe Microsoft Corporation v ZDA in / ali drugih državah.
Zaščiteno s Sectigo SSL