Ali imate na Excelovem listu velike podatke in jih morate razdeliti na več listov na podlagi nekaterih podatkov v stolpcu? To je zelo osnovna naloga, vendar zamudna.
Na primer, imam te podatke. Ti podatki imajo stolpec z imenom Datum, pisatelj in Naslov. Stolpec Writer ima ime pisca ustreznega naslova. Podatke vsakega pisatelja želim dobiti v ločenih listih.
Če želite to narediti ročno, moram narediti naslednje:
- Filtrirajte eno ime
- Kopirajte filtrirane podatke
- Dodajte list
- Prilepite podatke
- Preimenujte list
- Za vsakega ponovite vseh zgornjih 5 korakov.
V tem primeru imam samo tri imena. Predstavljajte si, če imate 100 imen. Kako bi podatke razdelili na različne liste? To bo trajalo veliko časa in izčrpalo bo tudi vas.
Če želite avtomatizirati zgornji postopek razdelitve lista na več listov, sledite tem korakom.
- Pritisnite Alt+F11. To bo odprlo urejevalnik VB za Excel
- Dodajte nov modul
- Kopirajte spodnjo kodo v modulu.
Sub SplitIntoSheets () Z aplikacijo .ScreenUpdating = False .DisplayAlerts = False End S to delovno knjigo. Aktiviraj list 1. Aktiviraj "čistilni filter, če obstaja" Napaka Nadaljuj naslednji list 1. ShowAllData Napaka Napaka GoTo 0 Dim lsrClm As Long Dim lstRow As Long "štetje zadnje uporabljene vrstice lstRow = Celice (Rows.Count, 1) .End (xlUp). Rows Dim uniques As Range Dim clm As String, clmNo As Long On Error GoTo handler clm = Application.InputBox ("Iz katerega stolpca želite ustvariti datoteke" & vbCrLf & "Npr. A, B, C, AB, ZA itd " uniques = RemoveDuplicates (uniques) Pokličite CreateSheets (uniques, clmNo) z aplikacijo .ScreenUpdating = True .DisplayAlerts = True .AlertBeforeOverwriting = True .Calculation = xlCalculationAutomatic End With Sheet1.Activate MsgBox "Dobro opravljeno!" Zaprite upravljavec podpodatkov.ShowAllData: z aplikacijo .ScreenUpdating = True .DisplayAlerts = True .AlertBeforeOverwriting = True. Funkcija RemoveDuplicates (edinstvene kot obseg) kot obseg ThisWorkbook.Activate Sheets.Add On Error Resume Next ActiveSheet.Name = "uniques" Sheets ("uniques"). Activate On Error GoTo 0 uniques.Copy Cells (2, 1). .Value = "uniques" Dim lstRow As Long lstRow = Cells (Rows.Count, 1) .End (xlUp) .Row Range ("A2: A" & lstRow). Izberite ActiveSheet.Range (Selection.Address). Odstrani Podvoji stolpce : = 1, Glava: = xlNo lstRow = Celice (Rows.Count, 1) .End (xlUp) .Row Set RemoveDuplicates = Range ("A2: A" & lstRow) Končna funkcija Sub CreateSheets (edinstveni As Range, clmNo As Long) Dim lstClm As Long Dim lstRow As Long for each unique In uniques Sheet 1. Aktivirajte lstRow = Cells (Rows.Count, 1) .End (xlUp) .Row lstClm = Cells (1, Columns.Count) .End (xlToLeft). Zatemni podatkovni niz kot obseg Nastavi podatkovni niz = obseg (celice (1, 1), celice (lstRow, lstClm)) polje dataSet.AutoFilter: = clmNo, Criteria1: = unique.Value lstRow = Cells (Rows.Count, 1) .End xlUp) .Row lstClm = Celice (1, stolpci.Število) .End (xlToLeft). Odpravljanje napak v stolpcu. Natisni lstRow; lstClm Set dataSet = Obseg (celice (1, 1), celice (lstRow, lstClm)) dataSet.Copy Sheets.Add ActiveSheet.Name = unique.Value2 ActiveCell.PasteSpecial xlPasteAll Naslednji edinstveni konec Sub
Ko boš tekel SplitIntoSheets () po postopku bo list razdeljen na več listov glede na dani stolpec. Na list lahko dodate gumb in mu dodelite ta makro.
Kako deluje
Zgornja koda ima dva postopka in eno funkcijo. Dva postopka sta SplitIntoSheets (), CreateSheets (edinstveni As Range, clmNo As Long) in ena funkcija je RemoveDuplicates (edinstveni kot obseg) kot obseg.
Prvi postopek je SplitIntoSheets (). To je glavni postopek. Ta postopek nastavi spremenljivke in Odstrani podvojene datoteke za pridobitev edinstvenih imen iz danega stolpca in nato ta imena posreduje v Ustvari liste za ustvarjanje listov.
Odstrani podvojene datoteke sprejme en argument, ki je obseg, ki vsebuje ime. Odstrani dvojnike od njih in vrne predmet obsega, ki vsebuje edinstvena imena.
Zdaj Ustvari liste je poklican. Za to sta potrebna dva argumenta. Najprej edinstvena imena in drugi stolpec št. iz katerega bomo ujemali podatke. Zdaj Ustvari liste vzame vsako ime iz unikatov in filtrira podano številko stolpca po vsakem imenu. Kopira filtrirane podatke, doda list in tam prilepi podatke. In vaši podatki so v nekaj sekundah razdeljeni na različne liste.
Datoteko lahko prenesete tukaj.
Razdelite na liste
Kako uporabljati datoteko:
-
- Kopirajte svoje podatke na Sheet1. Prepričajte se, da se začne od A1.
-
- Kliknite gumb Razdeli na liste
- Vnesite črko stolpca, iz katerega želite ločiti. Kliknite V redu.
-
- Videli boste takšen poziv. Vaš list je razdeljen.
Upam, da vam je bil članek o razdelitvi podatkov na ločene liste v pomoč. Če dvomite o tem ali o kateri koli drugi lastnosti programa Excel, ga vprašajte v spodnjem razdelku za komentarje.
Prenesite datoteko:
Razdelite list Excel v več datotek na podlagi stolpca z uporabo VBA