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

Hvordan oprettes nye ark til hver række i Excel?

Antag, at du har en scoretabel med alle elevers navne i kolonne A. Nu vil du oprette nye ark baseret på disse navne i kolonne A, og lave pr. ark indeholder en unik elevs data. Eller bare opret et nyt ark for kun hver række i tabellen uden at overveje navnene i kolonne A. I denne vedio får du metoder til at opnå det.

Opret nye ark for hver række med VBA-kode
Opret nye ark for hver række med Split Data-hjælpeprogrammet til Kutools til Excel


Opret nye ark for hver række med VBA-kode

Med følgende koder kan du oprette nyt ark baseret på kolonneværdier eller bare oprette nye ark for hver række i Excel.

1. Trykke andre + F11 taster samtidigt for at åbne Microsoft Visual Basic til applikationer vindue.

2. i Microsoft Visual Basic til applikationer vindue, skal du klikke på indsatte > Moduler. Indsæt derefter følgende kode i Moduler vindue.

VBA-kode: Opret nyt ark for hver række baseret på kolonne

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

Bemærk: A1: C1 er titelområdet for din tabel. Du kan ændre det ud fra dine behov.

3. Trykke F5 nøgle til at køre koden, så oprettes nye regneark efter alle regneark i den aktuelle projektmappe som nedenstående skærmbillede:

Hvis du direkte vil oprette nye ark for hver række uden at overveje kolonneværdien, kan du bruge følgende kode.

VBA-kode: Opret direkte nyt ark for hver række

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

Efter kørsel af koden placeres hver række i det aktive regneark i et nyt regneark.

Bemærk: Overskriftsrækken placeres også i et nyt ark med denne VBA-kode.


Opret nye ark for hver række med Split Data-hjælpeprogrammet til Kutools til Excel

Faktisk er ovenstående metode kompliceret og svær at forstå. I dette afsnit introducerer vi dig Opdel data nytte af Kutools til Excel.

Før påføring Kutools til Excel, Bedes download og installer det først.

1. Vælg den tabel, du skal bruge til at oprette nye ark, og klik derefter på Kutools Plus> Spitdata. Se skærmbillede:

2. i Opdel data i flere regneark i dialogboksen, skal du gøre som følger.

A. Til oprettelse af nye ark baseret på søjleværdi:

1). Vælg venligst Specifik kolonne mulighed, og angiv en kolonne, som du vil opdele data baseret på i rullelisten;
2). Hvis du vil navngive regnearkene med kolonneværdier, skal du vælge Værdier i søjlen i Regler rulleliste
3). Klik på OK knap. Se skærmbillede:

B. For direkte oprettelse af nye ark for hver række:

1). Vælg Faste rækker valgmulighed, indtast nummer 1 ind i kassen;
2). Vælg Række numre fra Regler rulleliste
3). Klik på OK knap. Se skærmbillede:

en ny projektmappe oprettes med alle nye ark indeni. Se skærmbilleder nedenfor.

Oprettelse af nye ark for hver række baseret på søjleværdi:

Oprettelse af nyt ark for hver række uden at overveje kolonneværdi:

  Hvis du vil have en gratis prøveperiode (30-dag) for dette værktøj, klik for at downloade det, og gå derefter til at anvende handlingen i henhold til ovenstående trin.

Opret nye ark for hver række med Split Data-hjælpeprogrammet til Kutools til Excel


De bedste Office-produktivitetsværktøjer

Kutools til Excel løser de fleste af dine problemer og øger din produktivitet med 80%

  • Genbruge: Indsæt hurtigt komplekse formler, diagrammer og alt, hvad du har brugt før; Krypter celler med adgangskode Opret postliste og send e-mails ...
  • Super formel bar (let redigere flere linjer med tekst og formel); Læsning Layout (let at læse og redigere et stort antal celler); Indsæt til filtreret rækkevidde...
  • Flet celler / rækker / kolonner uden at miste data; Split celler indhold; Kombiner duplikerede rækker / kolonner... Forhindre duplikerede celler; Sammenlign områder...
  • Vælg Duplicate eller Unique Rækker; Vælg tomme rækker (alle celler er tomme); Super Find og Fuzzy Find i mange arbejdsbøger; Tilfældig valg ...
  • Præcis kopi Flere celler uden at ændre formelreference; Auto Opret referencer til flere ark; Indsæt kugler, Afkrydsningsfelter og mere ...
  • Uddrag tekst, Tilføj tekst, Fjern efter position, Fjern mellemrum; Opret og udskriv personsøgningssubtotaler; Konverter mellem celler indhold og kommentarer...
  • Superfilter (gem og anvend filterskemaer på andre ark); Avanceret sortering efter måned / uge / dag, hyppighed og mere; Specielt filter af fed, kursiv ...
  • Kombiner arbejdsbøger og arbejdsark; Fletabeller baseret på nøglekolonner; Opdel data i flere ark; Batch Konverter xls, xlsx og PDF...
  • Mere end 300 kraftfulde funktioner. Understøtter Office / Excel 2007-2021 og 365. Understøtter alle sprog. Nem implementering i din virksomhed eller organisation. Fuld funktioner 30-dages gratis prøveperiode. 60 dages pengene tilbage garanti.
kte-fane 201905

Fanen Office bringer en grænseflade til et kontor med Office, og gør dit arbejde meget lettere

  • Aktiver redigering og læsning af faner i Word, Excel, PowerPoint, Publisher, Access, Visio og Project.
  • Åbn og opret flere dokumenter i nye faner i det samme vindue snarere end i nye vinduer.
  • Øger din produktivitet med 50 % og reducerer hundredvis af museklik for dig hver dag!
officetab bund
Sorter kommentarer efter
Kommentarer (33)
Ingen vurderinger endnu. Vær den første til at bedømme!
Denne kommentar blev minimeret af moderatoren på webstedet
Hej, jeg vil oprette regneark baseret på min skabelonfil Myformat og navngive dem i henhold til de første kolonnedata. Jeg tilpassede VBA-koden som følger, men den genererer for mange tomme ark. Kan du hjælpe mig med at stoppe med at generere tomme ark. Tak skal du have. Kumar Sub AddSheets() Dim celle Som Excel.Range Dim wsWithSheetNames As Excel.Worksheet Dim wbToAddSheetsTo As Excel.Workbook Set wsWithSheetNames = ActiveSheet Set wbToAddSheetsTo = ActiveWorkbook For Every cell In wsWithSheetNames.Range.WithSheetToS.Range.AbSheetToS Tilføj efter:=ActiveSheet Sheets.Add Type:= _ "C:\Users\Dimple\AppData\Roaming\Microsoft\Templates\MyFormat.xltx" Ved fejl Genoptag næste ActiveSheet.Name = cell.Value If Err.Number = 2 Så Debug.Print cell.Value & " allerede brugt som et arknavn" End If On Error GoTo 165 End With Next cell End Sub
Denne kommentar blev minimeret af moderatoren på webstedet
Hej,
Jeg får altid 2 ark pr. unik post på en række. Nogen idé om hvorfor? Også hvor svært ville det være at forudsætte det samlede antal rækker, som det genererede ark skaber, til arknavnet. Tusind tak! Lad mig vide, hvis du modtager donationer.
Denne kommentar blev minimeret af moderatoren på webstedet
Hej, jeg vil bruge min exel-filskabelon MyFormat til at generere regneark og navngive regnearkene efter dataene i den første kolonne. Følgende VBA-kode fungerer ok for at generere regnearkene i henhold til MyFormat. Men det genererer også hundredvis af tomme ark på normale Excel-templer. Kan en eller anden instans hjælpe mig med at stoppe med at generere overskydende blanke ark. Tak Kumar Sub AddSheets() Dim celle Som Excel.Range Dim wsWithSheetNames As Excel.Worksheet Dim wbToAddSheetsTo As Excel.Workbook Set wsWithSheetNames = ActiveSheet Set wbToAddSheetsTo = ActiveWorkbook For Every cell In wsWithSheetASheetsToSheets.SheetsToSheets. .Add After:=ActiveSheet Sheets.Add Type:= _ "C:\Users\Dreamline\AppData\Roaming\Microsoft\Templates\MyFormat.xltx" Ved fejl Genoptag næste ActiveSheet.Name = cell.Value If Err.Number = 2 Derefter Debug.Print cell.Value & " allerede brugt som et arknavn" End If On Error GoTo 165 End With Next cell End Sub
Denne kommentar blev minimeret af moderatoren på webstedet
Arbejdsarknavne skal være mindre end eller lig med tredive tegn lange.
Ikke særlig almindelig viden, men ellers vil koden udsende et standard tomt "Sheet #" regneark.

Opret et nyt regneark, som din parsingkode vil køre igennem, og referer til den første kolonne som følger:
=HVIS(ELLER('Original med reference'!B1<>"", LEN('Original med reference'!B1)>30), LEFT('Original med reference'!B1,30),'Original med reference'!B1)


Du kan enten kopiere eller henvise til resten af ​​arket. Sørg for, at kolonnen er fri for datavalideringsrestriktioner, hvis du har problemer med at henvise til det andet regneark.
Denne kommentar blev minimeret af moderatoren på webstedet
Tusind tak fordi du postede dette!!!! Virkede som en charme. Kan du forklare, hvordan det første sæt kode fungerer?
Denne kommentar blev minimeret af moderatoren på webstedet
Tak for dette!



I VBA-koden er der alligevel at navngive de resulterende ark fra den første og anden kolonnerækkedata kombineret?



så for dit eksempel ville ark 2 automatisk blive navngivet "linda 100"
Denne kommentar blev minimeret af moderatoren på webstedet
Kære Joyce,
Tak for din kommentar! Håber nedenstående VBA-script kan hjælpe dig.

Sub parse_data()
Dim xRCount As Long
Dim xSht som arbejdsark
Dim xNSht Som arbejdsark
Dim I Så længe
Dim xTRrow Som heltal
Dim xCol Som ny kollektion
Dim xTitle As String
On Error Resume Next
Application.ScreenUpdating = False
Indstil xSht = ActiveSheet
xRCount = xSht.UsedRange.End(xlDown).Række
xTitle = "A1:B1"
xTRrow = xSht.Range(xTitle).Row
For I = 2 Til xRCount
Kald xCol.Add(CSt(xSht.Cells(I, 1)), CStr(xSht.Cells(I, 1)))
Næste
Debug.Print xCol.Count
For I = 1 Til xCol.Count
Kald xSht.Range(xTitle).AutoFilter(1, CStr(xCol.Item(I)))
Indstil xNSht = Ingenting
Indstil xNSht = Worksheets(CSr(xCol.Item(I)))
Hvis xNSht ikke er noget, så
Indstil xNSht = Worksheets.Add(, Sheets(Sheets.Count))
xNSht.Name = CStr(xCol.Item(I) & xSht.Cells(I + 1, 2))
Else
xNSht.Move , Sheets(Sheets.Count)
End If
xSht.Range("A" & xTRrow & ":A" & xRCount).EntireRow.Copy xNSht.Range("A1")
xNSht.Columns.AutoFit
Næste
xSht.AutoFilterMode = Falsk
xSht.Aktiver
Application.ScreenUpdating = True
End Sub
Denne kommentar blev minimeret af moderatoren på webstedet
Dette var yderst hjælpsomt, lige hvad jeg ledte efter. Tak!
Denne kommentar blev minimeret af moderatoren på webstedet
Denne kode er meget nyttig, og næsten hvad jeg ledte efter.
Men kan det justeres sådan, at der er to ark -
Ark 1 er dataene - en tabel med data, hvor kolonne A er navnet
Ark 2 er en skabelon med adskillige felter, der skal udfyldes
Det jeg håbede var at køre en makro, som vil
1 Kopiér og indsæt skabelonen i den samme fil, navngiv arket som navnet i celle A1
2 Kopier celle B1 og indsæt derefter til et valgt felt i den nye skabelon
3 gentag langs række 1 indtil tom
4 gentag derefter for række 2 og hver række til slutningen.
Resultatet er en fil med x-nr. ark er det samme som skabelonen, med alle felter udfyldt.
Jeg har arvet en fil, der fungerer den anden vej, udtrækker data fra skabeloner til en tabel, men kan ikke vende den om.....
Denne kommentar blev minimeret af moderatoren på webstedet
Kære Sam,
Det ville være rart, hvis du kunne vedhæfte din projektmappe her.
Du kan uploade din fil med knappen Upload filer nedenfor.
Denne kommentar blev minimeret af moderatoren på webstedet
Hej jeg prøvede at bruge din kode, men jeg får en fejl
Run-time-fejl '1004':
Applikationsdefineret eller objektdefineret fejl
Jeg har intet kendskab til VBA (eller nogen teknologi for den sags skyld), men hvis en trykfejlfinding fremhæver linje 11 xRCount=xSht.Cells(xSht.Rows.Count,1). End(xIUp). Række
Jeg arbejder med en stor fil, der har 127 kolonner og 337 rækker (rækker vil variere, kolonner vil ikke), og det er en liste med I'd-numre og deres detaljer.
Jeg ændrede intervallet, som du bemærkede, men det virker stadig ikke. Jeg bruger Excel 2010, kan du fortælle mig, hvordan man får det til at fungere, hvis det er muligt
Tak
Denne kommentar blev minimeret af moderatoren på webstedet
Kære Beatriz,
Koden er opdateret med problemløsningen. Prøv det igen. Tak for din kommentar.
Denne kommentar blev minimeret af moderatoren på webstedet
Hej, jeg tror, ​​der er noget nyttigt her for min situation, men jeg er i stand til at lave VBA eller script, håber du kan hjælpe.
Jeg har en skabelon med mange celler at udfylde med data, og der vil være en søgenøgle (ikke unik), som jeg gerne vil indtaste i skabelonen. Baseret på søgenøglen søges dataene, og tilsvarende data på den matchede nøgle hentes og udfyldes i skabelonen. Den udfyldte skabelon gemmes i et nyt arbejdsark. Der kan være mere end 1 kampposter. Jeg har brug for scriptet for at fortsætte med at søge ned på listen, indtil alle matches er valgt, og det bestemte antal nye regneark er oprettet.
Denne kommentar blev minimeret af moderatoren på webstedet
Hej, er der en måde at beholde overskriftsrækken på hvert nyt regneark? (cirklet med rødt på min vedhæftede fil)

Koden tager alle rækkerne fra mit hovedregneark og overfører dem til nye regneark, hvilket er fantastisk. Men jeg vil beholde min "master"-headerværdi (cirklet med rødt) øverst på hvert nyt regneark. Tak!



Jeg henviser til denne kode fra oven:

Sub RowToSheet()
Dim xRow As Long
Dim I Så længe
Med ActiveSheet
xRow = .Range("A" & Rows.Count).End(xlUp).Row
For I = 1 Til xRække
Worksheets.Add(, Sheets(Sheets.Count)).Name = "Row " & I
.Rows(I).Copy Sheets("Row " & I).Range("A1")
Næste jeg
Slut med
End Sub
Denne kommentar blev minimeret af moderatoren på webstedet
Fantastisk kode, men kunne jeg få noget hjælp, hvis mine data er på kolonne G i stedet for kolonne A? hvad skal jeg ændre for at have kolonne G-data i en anden fane?

Tak
Denne kommentar blev minimeret af moderatoren på webstedet
Dette er fantastisk kode. Mange tak til brain-boxes hos OfficeExtend !! Er der alligevel, denne kode kunne tilpasses lidt for at oprette separate ark for hver *kolonne* i stedet for række? Jeg har vedhæftet et billede af, hvad jeg forsøger at opnå. Er dette muligt? Med venlig hilsen.
Denne kommentar blev minimeret af moderatoren på webstedet
Good Day,
Jeg så ikke dit billede her.
Denne kommentar blev minimeret af moderatoren på webstedet
Hej, hvordan ændres koden, hvis mit navnefelt er i C-kolonnen
Denne kommentar blev minimeret af moderatoren på webstedet
Hej Abdul Basit,
Nedenstående VBA-kode kan hjælpe dig. Prøv venligst.
I linjen: xCName = "3", 3 angiver kolonnenummeret (her er C-kolonnen) i Excel. Du kan ændre det til et hvilket som helst kolonnenummer efter behov.

Sub parse_data()
'Opdater af Extendoffice 2018 / 3 / 2
Dim xRCount As Long
Dim xSht som arbejdsark
Dim xNSht Som arbejdsark
Dim I Så længe
Dim xTRrow Som heltal
Dim xCol Som ny kollektion
Dim xTitle As String
Dim xSupdate Som Boolean
Dim xCName Som heltal
Dim xTA, xRA, xSRg1 Som streng
Indstil xSht = ActiveSheet
On Error Resume Next
xRCount = xSht.Cells(xSht.Rows.Count, 1).End(xlUp).Række
xTitle = "A1:C1"
xCName = "3" 'Ændre dette nummer til kolonnenummeret, som du vil oprette nye ark baseret på
xTRrow = xSht.Range(xTitle).Cells(1).Row
For I = 2 Til xRCount
Kald xCol.Add(xSht.Cells(I, xCName).Text, xSht.Cells(I, xCName).Text)
Næste
xSUpdate = Application.ScreenUpdating
Application.ScreenUpdating = False
xSRg = xSht.Cells(1, xCName).Address(RowAbsolute:=False, ColumnAbsolute:=False)
For I = 1 Til xCol.Count
Kald xSht.Range(xTitle).AutoFilter(xCName, CStr(xCol.Item(I)))
Indstil xNSht = Ingenting
Indstil xNSht = Worksheets(CSr(xCol.Item(I)))
Hvis xNSht ikke er noget, så
Indstil 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
Næste
xSht.AutoFilterMode = Falsk
xSht.Aktiver
Application.ScreenUpdating = xSUpdate
End Sub
Denne kommentar blev minimeret af moderatoren på webstedet
Fed VBA-kode til at gøre tricket.

Hvordan kan jeg ændre den til ikke at kopiere den første kolonne? Og for at fjerne kolonnenavnet?

Hilsen
Denne kommentar blev minimeret af moderatoren på webstedet
Kan jeg få hjælp til, hvordan man automatisk navngiver arkene ved hjælp af en bestemt kolonne. Dette er for række til ark VBA. Se nedenunder

Sub RowToSheet()

Dim xRow As Long

Dim I Så længe

Med ActiveSheet

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

For I = 1 Til xRække

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

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

Næste jeg

Slut med

End Sub
Denne kommentar blev minimeret af moderatoren på webstedet
Pyt med det var skjulte bagerste rum. Jeg brugte TRIM-funktionen og ryddede op. At have et rækkeantal (linjeantal virkelig så rækker -1 sat foran på arket ville være fantastisk)
Denne kommentar blev minimeret af moderatoren på webstedet
Hvordan henvises til brugen af ​​koden ovenfor (kredit)? Er det muligt at ændre koden?
Denne kommentar blev minimeret af moderatoren på webstedet
Hej, dette er en åben kommunikationsplatform. Koden er tilladt at referere og ændre.
Denne kommentar blev minimeret af moderatoren på webstedet
Nana
86
2
Denne kommentar blev minimeret af moderatoren på webstedet
Hej! Jeg brugte lige denne kode, og det virkede! Ud over at oprette et nyt ark for hver post, vil jeg transponere det til kolonner og kan ikke finde ud af det. Så for ovenstående eksempel ville output for Nana se sådan ud - Navn NanaScore 86Nej. 2
Denne kommentar blev minimeret af moderatoren på webstedet
Hej, brugte denne kode og virkede, men hvis jeg vil vælge mere end én række i overskriften, hvad vil der blive ændret i koden? Jeg har flere linjer i arket, som jeg vil have i hvert ark.
Denne kommentar blev minimeret af moderatoren på webstedet
Hej, fandt du ud af hvordan?
Denne kommentar blev minimeret af moderatoren på webstedet
Hej, er der en kode, som kun vil tilføje 1 nyt ark hver gang makroen køres, f.eks. første gang det nye ark navngives på indholdet af celle A1, anden gang makroen blev kørt vil det nye ark blive navngivet på indhold af A1 osv. tak i forventning
Der er endnu ingen kommentarer her
Load More
Efterlad dine kommentarer
Sender som gæst
×
Bedøm dette indlæg:
0   Tegn
Foreslåede steder

Følg os

Copyright © 2009 - www.extendoffice.com. | Alle rettigheder forbeholdes. Drevet af ExtendOffice. | | Sitemap
Microsoft og Office-logoet er varemærker eller registrerede varemærker tilhørende Microsoft Corporation i USA og / eller andre lande.
Beskyttet af Sectigo SSL