Ana içeriğe atla

Büyük bir tabloyu Excel'de birden çok küçük tabloya nasıl bölerim?

Birden çok sütun ve yüzlerce veya binlerce satır verisi içeren büyük bir çalışma sayfanız varsa, şimdi, aşağıdaki sonuçları almak için bu büyük tabloyu sütun değerine veya satır sayısına göre birden çok küçük tabloya bölmek istersiniz. Excel'de bu görevle nasıl başa çıkabilirsiniz?

Ana Tablo   Tabloyu sütun değerine göre birden çok tabloya bölün Tabloyu satır sayısına göre birden çok tabloya bölün

VBA kodu ile sütun değerine göre büyük bir tabloyu birden çok tabloya bölün

VBA kodu ile belirli satır sayısına göre büyük bir tabloyu birden çok tabloya bölün

Harika bir özellikle büyük bir tabloyu sütun değerine veya satır sayısına göre birden çok tabloya bölün


VBA kodu ile sütun değerine göre büyük bir tabloyu birden çok tabloya bölün

Bu büyük tabloyu belirli bir sütun değerine göre birden çok tabloya bölmek için aşağıdaki VBA kodu size bir iyilik yapabilir. Lütfen şunu yapın:

1. Basılı tutun ALT + F11 tuşlarını açmak için Uygulamalar için Microsoft Visual Basic pencere.

2. tıklayın Ekle > modülve aşağıdaki kodu modül Pencere.

VBA kodu: Büyük bir tabloyu anahtar sütununa göre birden çok tabloya bölün:

Sub Splitdatabycol()
'by 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
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
Sheets.Add(after:=Worksheets(Worksheets.Count)).Name = myarr(i) & ""
Else
Sheets(myarr(i) & "").Move after:=Worksheets(Worksheets.Count)
End If
xWSTRg.Range(title).Copy
Sheets(myarr(i) & "").Paste Destination:=Sheets(myarr(i) & "").Range("A1")
ws.Range("A" & (titlerow + xTRg.Rows.Count) & ":A" & lr).EntireRow.Copy Sheets(myarr(i) & "").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. Kodu yapıştırdıktan sonra F5 Bu kodu çalıştırmak için anahtar ve bir komut kutusu açılır, lütfen verilerinizden başlık satırını seçin, ekran görüntüsüne bakın:

4. Daha sonra, OKve başka bir iletişim kutusu açılır, lütfen tabloyu temel alarak bölmek istediğiniz sütun verilerini seçin, ekran görüntüsüne bakın:

5. tıklayın OKBu büyük tablo, ana sayfadan sonra yer alan sütun değerine göre birden çok çalışma sayfasına bölünmüştür. Ve yeni çalışma sayfaları sütun değeriyle adlandırılır. Ekran görüntüsüne bakın:


VBA kodu ile belirli satır sayısına göre büyük bir tabloyu birden çok tabloya bölün

Tabloyu satır sayısına göre birden çok tabloya bölmeniz gerekirse, aşağıdaki VBA kodu size yardımcı olabilir.

1. Basılı tutun ALT + F11 tuşlarını açmak için Uygulamalar için Microsoft Visual Basic pencere.

2. tıklayın Ekle > modülve aşağıdaki kodu modül Pencere.

VBA kodu: Büyük bir tabloyu satır sayısına göre birden çok tabloya bölün:

Sub Splitdatabyrows()
'Updated by Extendoffice 
Dim WorkRng As Range
Dim xRow As Range
Dim SplitRow As Integer
Dim xWs As Worksheet
Dim xTRg As Range
Dim xNTRg As Range
Dim xIER
On Error Resume Next
xTitleId = "KutoolsforExcel"
Set WorkRng = Application.Selection
Set xTRg = Application.InputBox("Please select the header row:", xTitleId, "", Type:=8)
If TypeName(xTRg) = "Nothing" Then Exit Sub
Set WorkRng = Application.InputBox("Please select the data range(exclude the header row):", xTitleId, WorkRng.Address, Type:=8)
If TypeName(WorkRng) = "Nothing" Then Exit Sub
SplitRow = Application.InputBox("Split Row Num", xTitleId, Type:=1)
If SplitRow = 0 Then Exit Sub
Set xWs = WorkRng.Parent
Set xRow = WorkRng.Rows(1)
xIER = WorkRng.Rows.Count
xIER = WorkRng.Row + xIER - 1
Application.ScreenUpdating = False
For i = 1 To WorkRng.Rows.Count Step SplitRow
    resizeCount = SplitRow
    If (xIER - xRow.Row + 1) < SplitRow Then
        resizeCount = (xIER - xRow.Row + 1)
    End If
    xRow.Resize(resizeCount).Copy
    Set xWs = Application.Worksheets.Add(after:=Application.Worksheets(Application.Worksheets.Count))
    If xIER > (xRow.Row + SplitRow - 1) Then
        xWs.Name = xRow.Row & " - " & (xRow.Row + SplitRow - 1)
    ElseIf xIER = xRow.Row Then
        xWs.Name = xRow.Row
    Else
        xWs.Name = xRow.Row & " - " & xIER
    End If
    Application.ActiveSheet.Range("A1").PasteSpecial
    Set xNTRg = Application.ActiveSheet.Range("A1")
    xTRg.Copy
    xNTRg.Insert
    Set xRow = xRow.Offset(SplitRow)
Next
Application.CutCopyMode = False
Application.ScreenUpdating = True
End Sub

3. Daha sonra, tuşuna basın. F5 tuşu, açılan iletişim kutusunda başlık satırını seçin, ekran görüntüsüne bakın:

4. Daha sonra, OKve ikinci istem kutusunda, satır sayısına göre bölmek istediğiniz veri aralığını seçin, ekran görüntüsüne bakın:

5. Ve sonra tıklamaya devam edin OK düğmesi, üçüncü istem kutusunda, bölmek istediğiniz satır sayısını girin, ekran görüntüsüne bakın:

6. Daha sonra, OK düğmesi, ana tablo aşağıda gösterilen ekran görüntüsü gibi satır sayısına göre birden çok çalışma sayfasına bölünmüştür:


Harika bir özellikle büyük bir tabloyu sütun değerine veya satır sayısına göre birden çok tabloya bölün

Yukarıdaki kodlar çoğu kullanıcı için zor olabilir, burada harika bir özellik sunacağım.Veriyi Böl of Kutools for Excel. Bu yardımcı programla, büyük bir tabloyu anahtar sütuna veya satır sayısına göre hızlı ve kolay bir şekilde birden çok tabloya bölebilirsiniz.

İpuçları:Bunu uygulamak için Veriyi Böl özelliği, öncelikle indirmelisiniz Kutools for Excelve ardından özelliği hızlı ve kolay bir şekilde uygulayın.

Kurduktan sonra Kutools for Excellütfen şunu yapın:

1. Bölmek istediğiniz veri aralığını seçin ve ardından Kutools Artı > Veriyi Böl, ekran görüntüsüne bakın:

2. In Verileri Birden Çok Çalışma Sayfasına Bölme iletişim kutusu, ihtiyaçlarınıza göre ayarları belirtin:

(1.) Seçin Belirli sütun or Sabit satırlar itibaren Şuna göre böl ihtiyaç duyduğunuz bölüm;

(2.) Yeni çalışma sayfalarının adını, kurallar açılır listeye ekleyebilirsin Önek or Sonek sayfa adlarına da.

3. Daha sonra, Ok düğmesi ve şimdi, büyük tablo yeni bir çalışma kitabında birden çok küçük tabloya bölünmüştür. Ekran görüntülerine bakın:

Tabloyu sütun değerine göre birden çok tabloya bölün Tabloyu satır sayısına göre birden çok tabloya bölün

Kutools for Excel'i indirmek için tıklayın ve Şimdi ücretsiz deneme!


Daha ilgili makaleler:

  • Excel'de Excel Dosyalarını Ayırmak İçin Çalışma Kitabını Bölme
  • Çalışma kitabının her çalışma sayfasını ayrı bir Excel dosyası olarak kaydederek Excel dosyalarını ayırmak için büyük bir çalışma kitabını bölmeniz gerekebilir. Örneğin, bir çalışma kitabını birden çok Excel dosyasına bölebilir ve ardından her dosyayı işlenmesi için farklı bir kişiye teslim edebilirsiniz. Bunu yaparak, belirli kişilerin belirli verileri işlemesini sağlayabilir ve verilerinizi güvende tutabilirsiniz. Bu makale, büyük bir çalışma kitabını her çalışma sayfasına göre Excel dosyalarını ayırmak için bölmenin yollarını tanıtacaktır.
  • Tam Adı Excel'de Ad ve Soyadına Böl
  • İlk ekran görüntüsünün aşağıdaki tek sütunda gösterildiği gibi bir isim listeniz olduğunu varsayarsak ve tam adı, gösterilen aşağıdaki ekran görüntüsü gibi ilk isim sütunu, orta isim sütunu ve soyadı sütununa ayırmanız gerekir. İşte bu sorunu çözmenize yardımcı olacak bazı zor yöntemler.
  • Uzun Bir Sütunu Excel'de Birden Çok Sütuna Böl
  • Excel'de uzun sütun verileriniz varsa, bunları görüntülerken sorun yaratacaktır. Ancak şimdi bu kadar uzun listeyi Excel'de birden çok sütuna bölebilirseniz, görüntülemeyi rahatça yapacaktır.
  • Excel'de Kelimeyi veya Sayıyı Ayrı Hücrelere Böl
  • Bir çalışma sayfasında sayıların veya kelimelerin bir listeniz varsa ve şimdi aşağıda gösterilen ekran görüntüsü gibi hücre içeriğini farklı hücrelerdeki harflere bölmeniz gerekiyorsa, Excel'de bu işi nasıl halledebilirsiniz?
  • Uzun Bir Listeyi Excel'de Eşit Gruplara Böl
  • Aşağıdaki ekran görüntüsü gibi birden çok eşit gruba bölünmesi gereken uzun bir veri listeniz varsa, bu görevi Excel'de hızlı ve kolay bir şekilde nasıl halledebilirsiniz?

 


  • Süper Formül Çubuğu (birden çok metin ve formül satırını kolayca düzenleyin); Okuma Düzeni (çok sayıda hücreyi kolayca okuyun ve düzenleyin); Filtrelenmiş Aralığa Yapıştır...
  • Hücreleri / Satırları / Sütunları Birleştirme ve Verilerin Saklanması; Bölünmüş Hücre İçeriği; Yinelenen Satırları ve Toplam / Ortalamayı Birleştirme... Yinelenen Hücreleri Önleyin; Aralıkları Karşılaştır...
  • Yinelenen veya Benzersiz'i seçin Satırlar; Boş Satırları Seçin (tüm hücreler boştur); Süper Bul ve Bulanık Bul Birçok Çalışma Kitabında; Rastgele Seçim ...
  • Tam kopya Formül referansını değiştirmeden Birden Çok Hücre; Otomatik Referans Oluştur Birden Çok Sayfaya; Madde İşaretleri Ekle, Onay Kutuları ve daha fazlası ...
  • Sık Kullanılan ve Hızlı Eklenen Formüller, Aralıklar, Grafikler ve Resimler; Hücreleri Şifrele şifre ile; Posta Listesi Oluşturun ve e-posta gönder ...
  • Metni Çıkar, Metin Ekle, Konuma Göre Kaldır, Alanı Kaldır; Sayfalama Alt Toplamları Oluşturma ve Yazdırma; Hücre İçeriği ve Yorumları Arasında Dönüştür...
  • Süper Filtre (filtre şemalarını kaydedin ve diğer sayfalara uygulayın); Gelişmiş Sıralama ay / hafta / gün, sıklık ve daha fazlasına göre; Özel Filtre kalın, italik ...
  • Çalışma Kitaplarını ve Çalışma Sayfalarını Birleştirin; Tabloları anahtar sütunlara göre birleştirin; Verileri Birden Çok Sayfaya Bölme; Toplu dönüştürme xls, xlsx ve PDF...
  • Pivot Tablo Gruplaması hafta numarası, haftanın günü ve daha fazlası ... Kilidi Açılmış, Kilitli Hücreleri Göster farklı renklerle; Formülü / Adı Olan Hücreleri Vurgulayın...
kte sekmesi 201905
  • Word, Excel, PowerPoint'te sekmeli düzenlemeyi ve okumayı etkinleştirin, Publisher, Access, Visio ve Project.
  • Yeni pencereler yerine aynı pencerenin yeni sekmelerinde birden çok belge açın ve oluşturun.
  • Üretkenliğinizi% 50 artırır ve her gün sizin için yüzlerce fare tıklamasını azaltır!
ofis tabanı

 

Comments (13)
No ratings yet. Be the first to rate!
This comment was minimized by the moderator on the site
Thank you very much.....
This comment was minimized by the moderator on the site
Super Sache

Frage:

Ist es möglich die Tabelle immer neu zu füllen und neu zu berechnen.
Bin absoluter anfänger. :-)
Danke im Voraus
This comment was minimized by the moderator on the site
Hello, Lukas,
I'm sorry, the methods in this article can't support to update the new data when the original data is changed.
So, you need to run the code again to get the latest data if there are changes in your data.
Thank you!
This comment was minimized by the moderator on the site
I can't get this macro to work (Split A Large Table Into Multiple Tables Based On Column Value With VBA Code)
My table has 5 columns and 639,165 rows. Is it too big?
This comment was minimized by the moderator on the site
Hello, Rebekah

If the data is too large, the code will not work perfectly.
Here, I recommend our Kutools for Excel' Split Data feature for you. With this feature, you can split large data to multiple sheets quickly and easily.
You can try it for 30 days freely. Please download it ffrom: https://www.extendoffice.com/download/kutools-for-excel.html
Please have a try, hope it can help you!
This comment was minimized by the moderator on the site
Hallo zusammen. Ich habe das gleiche Problem wie cGast - gibt es dazu eine Lösung?
This comment was minimized by the moderator on the site
Hi, Miriam,

The VBA code has been updated to a new one in this article, please try it again, if you have any other problem, please comment here. Thank you!
This comment was minimized by the moderator on the site
I tried "Split a large table into multiple tables based on the specific number of rows with VBA code" with my data of 103,000 rows split in groups of 15000 which should have returned 8 sheets, however it didnt work, it just produced 8 sheets with the headers only. but it does work when i use it with less that 10000rows. any help there?
This comment was minimized by the moderator on the site
Hello cguest,
Yes, as you said, the VBA code does not work correctlly when there are lots of data, here, I provide a new code, please try:
Sub Splitdatabyrows()
'Updated by Extendoffice 
Dim WorkRng As Range
Dim xRow As Range
Dim SplitRow As Integer
Dim xWs As Worksheet
Dim xTRg As Range
Dim xNTRg As Range
Dim xIER
On Error Resume Next
xTitleId = "KutoolsforExcel"
Set WorkRng = Application.Selection


Set xTRg = Application.InputBox("Please select the header row:", xTitleId, "", Type:=8)
If TypeName(xTRg) = "Nothing" Then Exit Sub
Set WorkRng = Application.InputBox("Please select the data range(exclude the header row):", xTitleId, WorkRng.Address, Type:=8)
If TypeName(WorkRng) = "Nothing" Then Exit Sub


SplitRow = Application.InputBox("Split Row Num", xTitleId, Type:=1)
If SplitRow = 0 Then Exit Sub

Set xWs = WorkRng.Parent
Set xRow = WorkRng.Rows(1)
xIER = WorkRng.Rows.Count
xIER = WorkRng.Row + xIER - 1


Application.ScreenUpdating = False
For i = 1 To WorkRng.Rows.Count Step SplitRow
    resizeCount = SplitRow
    If (xIER - xRow.Row + 1) < SplitRow Then
        resizeCount = (xIER - xRow.Row + 1)
    End If
    xRow.Resize(resizeCount).Copy
    Set xWs = Application.Worksheets.Add(after:=Application.Worksheets(Application.Worksheets.Count))
    If xIER > (xRow.Row + SplitRow - 1) Then
        xWs.Name = xRow.Row & " - " & (xRow.Row + SplitRow - 1)
    ElseIf xIER = xRow.Row Then
        xWs.Name = xRow.Row
    Else
        xWs.Name = xRow.Row & " - " & xIER
    End If
    Application.ActiveSheet.Range("A1").PasteSpecial
    Set xNTRg = Application.ActiveSheet.Range("A1")
    xTRg.Copy
    xNTRg.Insert
    Set xRow = xRow.Offset(SplitRow)
Next
Application.CutCopyMode = False
Application.ScreenUpdating = True
End Sub


Hope it can help you, Thank you!
This comment was minimized by the moderator on the site
"Teilen Sie eine große Tabelle basierend auf der spezifischen Anzahl von Zeilen mit VBA-Code in mehrere Tabellen auf"Funktioniert echt Super. Ist es möglich dass auch Verbundene Zellen erkannt und die Anzahl der Zeilen entsprechend angepasst wird so dass die Verbundenen Zellen beim Seitenumbruch nicht getrennt werden?
This comment was minimized by the moderator on the site
Если разбиваете по строкам и строк больше, чем 32 767 то поменяйте тип данных у переменных xIER и SplitRow с Integer на Long
This comment was minimized by the moderator on the site
Ich habe die erste Variante mit 456.913 Zeilen und 8 Spalten probiert - leider ohne dass irgendwas ausgeführt wurde.
This comment was minimized by the moderator on the site
Всем привет. Столкнулся с проблемой. У меня таблица из 7 колонок и 235000 строк. Макрос не разбивает на страницы. Вернее он страницы создает но они внутри пустые. Тестировал с меньшим количеством строк примерно 1000. Макрос срабатывал. Подскажите метод решения.
There are no comments posted here yet
Please leave your comments in English
Posting as Guest
×
Rate this post:
0   Characters
Suggested Locations