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

Jak podzielić dane na wiele arkuszy roboczych na podstawie kolumny w programie Excel?

Przypuśćmy, że masz arkusz z ogromnymi wierszami danych, a teraz musisz podzielić dane na wiele arkuszy na podstawie Imię lub Nazwa Firmy kolumna (patrz poniższy zrzut ekranu), a nazwy są wprowadzane losowo. Może najpierw możesz je posortować, a następnie skopiować i wkleić jeden po drugim do innych nowych arkuszy. Jednak wielokrotne kopiowanie i wklejanie będzie wymagało cierpliwości. Dzisiaj opowiem o kilku szybkich sztuczkach, aby rozwiązać to zadanie.

dokument podziel dane według kolumn 1

Podziel dane na wiele arkuszy roboczych na podstawie kolumny z kodem VBA

Podziel dane na wiele arkuszy roboczych na podstawie kolumny z Kutools for Excel


Podziel dane na wiele arkuszy roboczych na podstawie kolumny z kodem VBA

Jeśli chcesz szybko i automatycznie podzielić dane na podstawie wartości kolumny, poniższy kod VBA jest dobrym wyborem. Zrób tak:

1. Przytrzymaj ALT + F11 klawisze, aby otworzyć Microsoft Visual Basic for Applications okno.

2, Kliknij wstawka > Modułi wklej następujący kod w oknie modułu.

Sub Splitdatabycol()
'updateby Extendoffice
Dim lr As Long
Dim ws As Worksheet
Dim vcol, i As Integer
Dim icol As Long
Dim myarr As Variant
Dim title As String
Dim titlerow As Integer
Dim xTRg As Range
Dim xVRg As Range
Dim xWSTRg As Worksheet
Dim xWS As Worksheet
On Error Resume Next
Set xTRg = Application.InputBox("Please select the header rows:", "Kutools for Excel", "", Type:=8)
If TypeName(xTRg) = "Nothing" Then Exit Sub
Set xVRg = Application.InputBox("Please select the column you want to split data based on:", "Kutools for Excel", "", Type:=8)
If TypeName(xVRg) = "Nothing" Then Exit Sub
vcol = xVRg.Column
Set ws = xTRg.Worksheet
lr = ws.Cells(ws.Rows.Count, vcol).End(xlUp).Row
title = xTRg.AddressLocal
titlerow = xTRg.Cells(1).Row
icol = ws.Columns.Count
ws.Cells(1, icol) = "Unique"
Application.DisplayAlerts = False
If Not Evaluate("=ISREF('xTRgWs_Sheet!A1')") Then
Sheets.Add(after:=Worksheets(Worksheets.Count)).Name = "xTRgWs_Sheet"
Else
Sheets("xTRgWs_Sheet").Delete
Sheets.Add(after:=Worksheets(Worksheets.Count)).Name = "xTRgWs_Sheet"
End If
Set xWSTRg = Sheets("xTRgWs_Sheet")
xTRg.Copy
xWSTRg.Paste Destination:=xWSTRg.Range("A1")
ws.Activate
For i = (titlerow + xTRg.Rows.Count) To lr
On Error Resume Next
If ws.Cells(i, vcol) <> "" And Application.WorksheetFunction.Match(ws.Cells(i, vcol), ws.Columns(icol), 0) = 0 Then
ws.Cells(ws.Rows.Count, icol).End(xlUp).Offset(1) = ws.Cells(i, vcol)
End If
Next
myarr = Application.WorksheetFunction.Transpose(ws.Columns(icol).SpecialCells(xlCellTypeConstants))
ws.Columns(icol).Clear
For i = 2 To UBound(myarr)
ws.Range(title).AutoFilter field:=vcol, Criteria1:=myarr(i) & ""
If Not Evaluate("=ISREF('" & myarr(i) & "'!A1)") Then
Set xWS = Sheets.Add(after:=Worksheets(Worksheets.Count))
xWS.Name = myarr(i) & ""
Else
xWS.Move after:=Worksheets(Worksheets.Count)
End If
xWSTRg.Range(title).Copy
xWS.Paste Destination:=xWS.Range("A1")
ws.Range("A" & (titlerow + xTRg.Rows.Count) & ":A" & lr).EntireRow.Copy xWS.Range("A" & (titlerow + xTRg.Rows.Count))
Sheets(myarr(i) & "").Columns.AutoFit
Next
xWSTRg.Delete
ws.AutoFilterMode = False
ws.Activate
Application.DisplayAlerts = True
End Sub

3. Następnie naciśnij F5 klucz do uruchomienia kodu i pojawia się okienko zachęty przypominające o wybraniu wiersza nagłówka, patrz zrzut ekranu:

dokument podziel dane według kolumn 7

4. A następnie kliknij OK przycisk, aw drugim polu zachęty wybierz dane kolumny, na podstawie których chcesz podzielić, patrz zrzut ekranu:

dokument podziel dane według kolumn 8

5. Następnie kliknij OK, a wszystkie dane w aktywnym arkuszu są podzielone na wiele arkuszy według wartości kolumny. A podzielone arkusze są nazywane z nazwami podzielonych komórek. Zobacz zrzut ekranu:

dokument podziel dane według kolumn 2

Uwagi: Podzielone arkusze są umieszczane na końcu skoroszytu, w którym znajduje się główny arkusz roboczy.


Podziel dane na wiele arkuszy roboczych na podstawie kolumny z Kutools for Excel

Jako początkujący w Excelu ten długi kod VBA jest dla nas nieco trudny, a większość z nas nawet nie wie, jak zmodyfikować kod zgodnie z naszymi potrzebami. Tutaj przedstawię Ci wielofunkcyjne narzędzie -Kutools dla programu Excel, jego Podziel dane Narzędzie nie tylko może pomóc w podzieleniu danych na wiele arkuszy roboczych na podstawie kolumny, ale także może podzielić dane według liczby wierszy.

Uwaga:Aby to zastosować Podziel dane, po pierwsze, należy pobrać plik Kutools dla programu Excel, a następnie szybko i łatwo zastosuj tę funkcję.

Po zainstalowaniu Kutools dla programu Excel, zrób tak:

1. Wybierz zakres danych, które chcesz podzielić.

2, Kliknij Kutools Plus > Ćwiczenie > Podziel danezobacz zrzut ekranu:

dokument podziel dane według kolumn 3

3, w Podziel dane na wiele arkuszy roboczych w oknie dialogowym, musisz:

1). Wybierz Konkretna kolumna opcja w Podziel na podstawie i wybierz wartość kolumny, na podstawie której chcesz podzielić dane, z listy rozwijanej. (Jeśli Twoje dane mają nagłówki i chcesz je wstawiać do każdego nowego podzielonego arkusza, zaznacz Moje dane mają nagłówki opcja.)

2). Następnie możesz określić nazwy podzielonych arkuszy roboczych w obszarze Nowa nazwa arkusza sekcji, określ reguły nazw arkuszy z Zasady rozwijanej listy, możesz dodać Prefiks or Przyrostek również dla nazw arkuszy.

3). Kliknij OK przycisk. Zobacz zrzut ekranu:

dokument podziel dane według kolumn 4

4. Teraz dane są podzielone na wiele arkuszy w nowym skoroszycie.

dokument podziel dane według kolumn 5

Kliknij, aby pobrać Kutools dla programu Excel i bezpłatną wersję próbną teraz!


Podziel dane na wiele arkuszy roboczych na podstawie kolumny z Kutools for Excel

Kutools dla programu Excel zawiera ponad 300 przydatnych narzędzi programu Excel. Bezpłatne wypróbowanie bez ograniczeń w ciągu 30 dni. Pobierz bezpłatną wersję próbną już teraz!


Podobne artykuły:

Jak podzielić dane na wiele arkuszy według liczby wierszy?


Najlepsze narzędzia biurowe

Kutools dla programu Excel rozwiązuje większość problemów i zwiększa produktywność o 80%

  • Ponowne użycie: Szybko włóż złożone wzory, wykresy i wszystko, czego używałeś wcześniej; Szyfruj komórki z hasłem; Utwórz listę mailingową i wysyłaj e-maile ...
  • Pasek Super Formula (łatwo edytować wiele wierszy tekstu i formuły); Układ do czytania (łatwe odczytywanie i edytowanie dużej liczby komórek); Wklej do filtrowanego zakresu...
  • Scal komórki / wiersze / kolumny bez utraty danych; Podziel zawartość komórek; Połącz zduplikowane wiersze / kolumny... Zapobiegaj zduplikowanym komórkom; Porównaj zakresy...
  • Wybierz Duplikat lub Unikalny Wydziwianie; Wybierz puste wiersze (wszystkie komórki są puste); Super Find i Fuzzy Find w wielu zeszytach ćwiczeń; Losowy wybór ...
  • Dokładna kopia Wiele komórek bez zmiany odwołania do formuły; Automatyczne tworzenie odniesień do wielu arkuszy; Wstaw punktory, Pola wyboru i nie tylko ...
  • Wyodrębnij tekst, Dodaj tekst, Usuń według pozycji, Usuń przestrzeń; Tworzenie i drukowanie podsumowań stronicowania; Konwertuj zawartość komórek i komentarze...
  • Super filtr (zapisz i zastosuj schematy filtrów do innych arkuszy); Zaawansowane sortowanie według miesiąca / tygodnia / dnia, częstotliwości i innych; Specjalny filtr pogrubieniem, kursywą ...
  • Połącz skoroszyty i arkusze robocze; Scal tabele na podstawie kluczowych kolumn; Podziel dane na wiele arkuszy; Konwersja wsadowa xls, xlsx i PDF...
  • Ponad 300 zaawansowanych funkcji. Obsługuje Office / Excel 2007-2021 i 365. Obsługuje wszystkie języki. Łatwe wdrażanie w przedsiębiorstwie lub organizacji. Pełne funkcje 30-dniowa bezpłatna wersja próbna. 60-dniowa gwarancja zwrotu pieniędzy.
karta kte 201905

Karta Office wprowadza interfejs z zakładkami do pakietu Office i znacznie ułatwia pracę

  • Włącz edycję i czytanie na kartach w programach Word, Excel, PowerPoint, Publisher, Access, Visio i Project.
  • Otwieraj i twórz wiele dokumentów w nowych kartach tego samego okna, a nie w nowych oknach.
  • Zwiększa produktywność o 50% i redukuje setki kliknięć myszką każdego dnia!
officetab dół
Sortuj komentarze według
Komentarze (299)
Brak ocen. Oceń jako pierwszy!
Ten komentarz został zminimalizowany przez moderatora na stronie
Podział danych na wiele arkuszy roboczych na podstawie kolumny z kodem VBA pokazuje pewien błąd. spróbuj to naprawić i zaktualizować to samo. Jeśli dostarczysz przykładowe pliki Excela, będzie to bardzo pomocne.
Ten komentarz został zminimalizowany przez moderatora na stronie
Cześć, dziękuję za kod, który dla mnie działa! Próbuję znaleźć kod, który dzieli jeden arkusz wzorcowy na wiele arkuszy na podstawie daty
Ten komentarz został zminimalizowany przez moderatora na stronie
To było niesamowite! Ten proces zajęłby mi ponad godzinę, ale został wykonany w ciągu 30 sekund. Ten zachowam do mojej biblioteki VBA. Dziękuję Ci!
Ten komentarz został zminimalizowany przez moderatora na stronie
Cześć, mam w arkuszu 30000 komórek i muszę je podzielić w ciągu kilku miesięcy. czy istnieje kod, którego mogę użyć, aby zrobić to szybciej. Mam 8 kolumn, a data to kolumna B. Bawiłem się powyższym kodem, który został podany, ale nie udało mi się. Czy mógłbyś mi w tym pomóc. Z góry dziękuję
Ten komentarz został zminimalizowany przez moderatora na stronie
Otrzymuję następujący błąd: Przepełnienie błędu wykonania '6' Po debugowaniu pokaż wiersz For i = 2 To Ir Moje wiersze programu Excel mają ponad 500,000 XNUMX. Czy jest jakieś rozwiązanie Dziękuję bardzo za kod. Z poważaniem Lok
Ten komentarz został zminimalizowany przez moderatora na stronie
Witam, bardzo dziękuję za kod. Dostaję następujący błąd: Przepełnienie błędu czasu wykonania „6” w linii For i = 2 To Ir Dowolne rozwiązanie tego problemu. Dziękuję Ci
Ten komentarz został zminimalizowany przez moderatora na stronie
Otrzymuję błąd po naciśnięciu F5 - GoTo Box z pytaniem o referencję?
Ten komentarz został zminimalizowany przez moderatora na stronie
Proces VBA zadziałał doskonale, bardzo dziękuję za podzielenie się swoją wiedzą i zaoszczędzenie mi dużo czasu!
Ten komentarz został zminimalizowany przez moderatora na stronie
Kod VBA działał idealnie. Wygląda na to, że arkusze nie są aktualizowane w miarę wprowadzania zmian w Arkuszu1. Proszę o pomoc.
Ten komentarz został zminimalizowany przez moderatora na stronie
Cześć, Dziękuję za kod, który dla mnie działa! Mam tylko dwa pytania/uwagi. 1 skopiowane dane nie zawierają układu oryginalnego pliku. Czy dałoby się skopiować dane jako tabelę z autofiltrem? 2 skopiowane dane nie wydają się być ograniczone do zakresu tytułu. Czy możliwe jest dostosowanie kodu do określonego zakresu lub nazwy tabeli? Te dostosowania byłyby bardzo pomocne. Pozdrawiam, Pieter
Ten komentarz został zminimalizowany przez moderatora na stronie
Działa jak marzenie! Dziękuję Ci.
Ten komentarz został zminimalizowany przez moderatora na stronie
Działa jak czar... Dziękuję za kod premium... :lol:
Ten komentarz został zminimalizowany przez moderatora na stronie
Dziękuję bardzo, to zadziałało świetnie. Co się jednak stanie, jeśli chcę ponownie posortować dane w każdej karcie (przy użyciu innej kolumny)? Zasadniczo ten VBA dzieli go na zakładki, ale mogę chcieć go dalej rozbić ... czy to możliwe?
Ten komentarz został zminimalizowany przez moderatora na stronie
Cześć Jonathan, Stary komentarz, który znam, ale może być pomocny dla innych w przyszłości: musiałem to zrobić, ale nie mogłem znaleźć łatwego sposobu na VBA. Jednak odkryłem, że jeśli utworzysz nową kolumnę w arkuszu kalkulacyjnym jako połączenie 2, więc np. =A1&" "&A2 Otrzymasz 1 komórkę z obydwoma zestawami informacji. Następnie możesz uruchomić powyższy moduł i działa dobrze! Edytuj — dane w kolumnach muszą być krótsze niż 30 znaków, w przeciwnym razie dane nie zostaną skopiowane (pokazuje się jako błąd w module) i otrzymasz pusty arkusz w środku nowych arkuszy.
Ten komentarz został zminimalizowany przez moderatora na stronie
Niesamowite.. To było oszałamiające. Tak długo zmagałem się z tym problemem i ten kod przyszedł jako wytchnienie. Dzięki za udostępnienie tego.
Ten komentarz został zminimalizowany przez moderatora na stronie
Zdumiewający. Dzięki za wysłanie.
Ten komentarz został zminimalizowany przez moderatora na stronie
Kod działał jak urok dla mniejszych danych (mniej niż 1200 wierszy). Próbowałem użyć na większym arkuszu z (17000 wierszy) i po prostu się zawiesił po podzieleniu na 10-12 arkuszy. Więc próbowaliśmy podzielić oryginalne dane na 3 różne skoroszyty i nadal nas zamykać. Mamy Windows 7, a nasze komputery też nie są takie wolne. Czy sugerujesz jakieś ograniczone wiersze danych, aby bezpiecznie używać tego kodu? Wszelkie sugestie będą mile widziane.
Ten komentarz został zminimalizowany przez moderatora na stronie
Kod działał jak urok dla mniejszych danych (mniej niż 1200 wierszy). Próbowałem użyć na większym arkuszu z (17000 wierszy) i po prostu się zawiesił po podzieleniu na 10-12 arkuszy. Więc próbowaliśmy podzielić oryginalne dane na 3 różne skoroszyty i nadal nas zamykać. Mamy Windows 7, a nasze komputery też nie są takie wolne. Czy sugerujesz jakieś ograniczone wiersze danych, aby bezpiecznie używać tego kodu? Wszelkie sugestie będą mile widziane. Nie jestem pewien: jaka jest maksymalna liczba wierszy obsługiwanych przez makro? Mógłbym się tym pobawić... To gdzieś pomiędzy 20 a 40 XNUMX! [/quote]
Ten komentarz został zminimalizowany przez moderatora na stronie
W obliczu tego samego problemu. Kod działa dla arkuszy, w których danych jest mniej wierszy, jednak w przypadku większych danych wyświetla błąd „Excel nie może wykonać tego zadania z dostępnymi zasobami. Wybierz mniej danych lub zamknij inne aplikacje” (żadna inna aplikacja nie działa w tym samym czasie) Kod działał jak urok dla mniejszych danych (mniej niż 1200 wierszy). Próbowałem użyć na większym arkuszu z (17000 wierszy) i po prostu się zawiesił po podzieleniu na 10-12 arkuszy. Więc próbowaliśmy podzielić oryginalne dane na 3 różne skoroszyty i nadal nas zamykać. Mamy Windows 7, a nasze komputery też nie są takie wolne. Czy sugerujesz jakieś ograniczone wiersze danych, aby bezpiecznie używać tego kodu? Wszelkie sugestie będą mile widziane.
Ten komentarz został zminimalizowany przez moderatora na stronie
Jesteś moim bohaterem wszech czasów! Polowałem na to od miesięcy bez powodzenia. Muszę robić to cotygodniowe/miesięczne raporty z podziałem na ponad 147 arkuszy roboczych i nie dostaną mi kutools. W tej notatce... Naprawdę muszę nauczyć się kodowania. :( Ale dziękuję!
Ten komentarz został zminimalizowany przez moderatora na stronie
HI , mam arkusz zawierający 65000 rekordów i mający 8 różnych przypadków, więc w zasadzie powinien generować 80 różnych arkuszy. Próbowałem uruchomić ten kod, ale wyrzuca Runtime Error 6 Overflow. Czy można zmodyfikować ten kod, aby rozwiązać mój problem? Proszę ur pomoc będzie bardzo ceniona.
Ten komentarz został zminimalizowany przez moderatora na stronie
[cytat] Cześć, mam arkusz zawierający 65000 rekordów i mający 8 różnych przypadków, więc w zasadzie powinien generować 80 różnych arkuszy. Próbowałem uruchomić ten kod, ale wyrzuca Runtime Error 6 Overflow. Czy można zmodyfikować ten kod, aby rozwiązać mój problem? Proszę ur pomoc będzie bardzo ceniona.przez ACE[/quote] Spróbuj zmienić Dim vcol, i As Integer na Dim vcol, i As Long
Ten komentarz został zminimalizowany przez moderatora na stronie
Cześć Próbowałem zmienić DIM vcol na LOng i działało dobrze, ale nagle z powodu błędu nie ma wystarczającej ilości pamięci, aby wykonać tę akcję, spróbuj użyć mniej danych lub zamknąć inne aplikacje. Chociaż nie mam otwartych żadnych innych aplikacji. Mam niewiele więcej niż 100 tys. rzędów i ok. Rozmiar pliku 16 MB. każda pomoc byłaby wdzięczna. Dzięki Mustafie
Ten komentarz został zminimalizowany przez moderatora na stronie
Niesamowity fragment kodu - działa idealnie (jeśli zmienisz zmienne na te, których potrzebuje Twój arkusz kalkulacyjny)
Ten komentarz został zminimalizowany przez moderatora na stronie
Mam arkusz ze zmienną liczbą wierszy. Jedna z kolumn to daty od 2010 roku. Pozostałe kolumny to nazwy funduszy z danymi NAV dla każdego funduszu w stosunku do daty. Więc nie chcę dzielić kolumn na różne arkusze, chcę podzielić każdą NAZWA FUNDUSZU na osobny arkusz z danymi NAV na koniec miesiąca, a nie z datami dziennymi. Czy można to zrobić, czy jest to niemożliwe?
Ten komentarz został zminimalizowany przez moderatora na stronie
Mam arkusz roboczy, którego używam i próbuję znaleźć kod vba, który zrekonfiguruje nazwę konta i skopiuje konkretny wiersz do nowego skoroszytu i arkusza o tej samej nazwie, czy możesz pomóc?
Ten komentarz został zminimalizowany przez moderatora na stronie
Świetny! Kod VBA działa, dzięki! Potrzebuję, aby te wyjściowe arkusze robocze znajdowały się w osobnych plikach programu Excel zamiast w arkuszach roboczych i występuje błąd, gdy dzielę się na wiele wielu arkuszy roboczych.
Ten komentarz został zminimalizowany przez moderatora na stronie
Starscor i Tim, jeśli chcesz podzielić arkusze pliku na kilka plików, używając nazw wierszy, na tej samej stronie internetowej znajduje się mały kod makra, który to robi, po prostu wyszukaj „podziel skoroszyt, aby oddzielić pliki Excela”. znajdzie to. Dodaj kod tego przykładu na końcu tego, usuwając oczywiście zduplikowane końcowe sub i sub, a otrzymasz po jednym pliku dla każdego.
Ten komentarz został zminimalizowany przez moderatora na stronie
czy ktoś może mi pomóc, jak sortować kolumny w różnych arkuszach w tym samym skoroszycie na raz, a także usuwać duplikaty z różnych arkuszy, ponieważ mam około 65 arkuszy w tym samym skoroszycie
Ten komentarz został zminimalizowany przez moderatora na stronie
to takie ekscytujące! Dziękuję Ci. Szukałem tego od jakiegoś czasu.
Ten komentarz został zminimalizowany przez moderatora na stronie
Świetnie - dziękuję za udostępnienie tego. Propaguje nawet podświetlenia/format do nowych arkuszy!
Nie ma tu jeszcze żadnych komentarzy
Pokaż więcej
Zostaw swój komentarz
Publikowanie jako gość
×
Oceń ten post:
0   Postacie
Sugerowane lokalizacje

Bądż na bieżąco

Prawa autorskie © 2009 - www.extendoffice.com. | Wszelkie prawa zastrzeżone. Zasilany przez ExtendOffice, | Mapa strony
Microsoft i logo Office są znakami towarowymi lub zastrzeżonymi znakami towarowymi Microsoft Corporation w Stanach Zjednoczonych i / lub innych krajach.
Chronione przez Sectigo SSL