Petua: Bahasa lain diterjemahkan Google. Anda boleh melawat English versi pautan ini.
Log masuk
x
or
x
x
Daftar Sekarang
x

or

Bagaimana untuk memecah data ke dalam banyak kerja berdasarkan lajur dalam Excel?

Supaya anda mempunyai lembaran kerja dengan baris data yang besar, dan sekarang, anda perlu memecah data ke dalam banyak helaian kerja berdasarkan Nama lajur (lihat tangkapan skrin berikut), dan nama-nama dimasukkan secara rawak. Mungkin anda boleh menyusunnya terlebih dahulu, dan kemudian salin dan tampalkannya satu demi satu ke dalam lembaran kerja lain yang lain. Tetapi ini memerlukan kesabaran anda untuk menyalin dan menyalin berulang kali. Hari ini, saya akan bercakap tentang beberapa cara cepat untuk menyelesaikan tugas ini.

data berpecah doc mengikut lajur 1

Split data ke dalam banyak kerja berdasarkan lajur dengan kod VBA

Split data ke berbilang lembaran kerja berdasarkan lajur dengan Kutools untuk Excel


Split data ke dalam pelbagai lembaran kerja berdasarkan lajur atau baris tertentu dikira dalam lembaran kerja:

Jika anda ingin membahagi lembaran kerja yang besar ke berbilang helaian berdasarkan data lajur tertentu atau menghitung baris, yang Kutools untuk Excel's Data Split Ciri ini dapat membantu anda menyelesaikan tugas ini dengan cepat dan mudah.

data berpecah doc mengikut lajur 6

Kutools untuk Excel: dengan lebih daripada 200 berguna Excel tambahan, bebas untuk mencuba tanpa had pada hari 60. Muat turun dan percubaan percuma Sekarang!


Split data ke dalam banyak kerja berdasarkan lajur dengan kod VBA


Sekiranya anda mahu memisahkan data berdasarkan nilai lajur dengan cepat dan secara automatik, kod VBA berikut adalah pilihan yang baik. Sila buat seperti ini:

1. Tahan ALT + F11 kunci untuk membuka Microsoft Visual Basic untuk Aplikasi tingkap.

2. Klik Memasukkan > Modul, dan tampal kod berikut dalam Tetingkap Modul.

Sub Splitdatabycol()
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. Kemudian, tekan F5 kunci untuk menjalankan kod dan kotak petanda muncul untuk mengingatkan anda memilih baris pengepala, lihat tangkapan skrin:

data berpecah doc mengikut lajur 7

4. Dan kemudian, klik OK butang dan dalam kotak petak kedua, sila pilih data lajur yang anda mahu berpecah berasaskan, lihat tangkapan skrin:

data berpecah doc mengikut lajur 8

5. Kemudian, klik OK, dan semua data dalam lembaran kerja aktif dibahagikan kepada berbilang lembaran kerja mengikut nilai lajur. Dan kerja-kerja split disebut dengan nama sel split. Lihat tangkapan skrin:

data berpecah doc mengikut lajur 2

Nota: Lembaran kerja berpecah diletakkan di akhir buku kerja di mana lembaran kerja induk berada.


Split data ke berbilang lembaran kerja berdasarkan lajur dengan Kutools untuk Excel

Sebagai pemula Excel, kod VBA yang lama ini agak sukar untuk kita, dan kebanyakan kita bahkan tidak tahu bagaimana mengubah suai kod itu sebagai keperluan kita.

Di sini, saya akan memperkenalkan anda alat pelbagai fungsi--Kutools untuk Excel, yang Data Split utiliti bukan sahaja boleh membantu anda untuk memecah data ke dalam banyak kerja berdasarkan lajur, tetapi juga boleh memecah data dengan menghitung baris.

Kutools untuk Excel : dengan lebih daripada 300 berguna tambahan Excel, bebas untuk mencuba tanpa had pada hari 60.

Jika anda telah memasangnya Kutools untuk Excel, sila lakukan seperti berikut:

1. Pilih julat data yang anda mahu perpecahan.

2. Klik Kutools Lebih > Lembaran kerja > Data Split, lihat tangkapan skrin:

data berpecah doc mengikut lajur 3

3. Di dalam Split Data ke Lembar Kerja Pelbagai kotak dialog, anda perlu:

1). Pilih Lajur khusus pilihan dalam Split berdasarkan seksyen, dan pilih nilai lajur yang anda mahu untuk memecah data berdasarkan dalam senarai juntai bawah. (Jika data anda mempunyai tajuk dan anda ingin memasukkannya ke setiap lembaran kerja split baru, sila semak Data saya mempunyai tajuk pilihan.)

2). Kemudian anda boleh menentukan nama kerja lembaran pecahan, di bawah Nama kerja baru seksyen, nyatakan peraturan nama kerja dari peraturan drop down list, anda boleh menambah Awalan or akhiran untuk nama kunci juga.

3). Klik OK butang. Lihat tangkapan skrin:

data berpecah doc mengikut lajur 4

4. Sekarang data dibahagikan kepada berbilang lembaran kerja dalam buku kerja baru.

data berpecah doc mengikut lajur 5

Klik untuk Muat turun Kutools untuk Excel dan percubaan percuma Sekarang!


Split data ke berbilang lembaran kerja berdasarkan lajur dengan Kutools untuk Excel

Kutools untuk Excel termasuk lebih banyak alat 300 alat Excel. Percuma untuk mencuba tanpa had pada hari 60. Muat turun percubaan percuma sekarang!


Artikel berkaitan:

Bagaimana untuk memecah data ke dalam banyak kerja mengikut baris?



Alat Produktiviti yang Disyorkan

Tab Pejabat

bintang emas1 Bawa tab berguna kepada Excel dan perisian Office lain, seperti Chrome, Firefox dan Internet Explorer baru.

Kutools untuk Excel

bintang emas1 Hebat! Tingkatkan produktiviti anda dalam minit 5. Tidak memerlukan kemahiran khas, kecuali dua jam setiap hari!

bintang emas1 Ciri-ciri Baru 300 untuk Excel, Buat Excel Banyak Mudah dan Berkuasa:

  • Merge Cell / Rows / Columns tanpa Kehilangan Data.
  • Menggabungkan dan Menyusun Lembaran Berbilang dan Buku Kerja.
  • Bandingkan Ranges, Salin Pelbagai Rang Undang-Undang, Tukar Teks hingga Tarikh, Penukaran Unit dan Mata Wang.
  • Count by Colors, Subtotal Paging, Urutkan Advanced dan Super Filter,
  • More Select / Insert / Delete / Text / Format / Link / Comment / Workbooks / Worksheets Tools ...

Skrin skrin Kutools untuk Excel

Say something here...
symbols left.
You are guest ( Sign Up? )
or post as a guest, but your post won't be published automatically.
Loading comment... The comment will be refreshed after 00:00.
  • To post as a guest, your comment is unpublished.
    Katharina · 21 days ago
    Great Script, thanks! What do I have to do to set the header row range and column to use for grouping/splitting within the script? I know it is more elegant to use selectable parameters but for my use case it is always the same. As I do know nothing about VBA, any little hint is appreciated :-) Best, Katharina
  • To post as a guest, your comment is unpublished.
    daiana · 25 days ago
    It doesn't work with 120000 rows. Is there any way to make it work?
  • To post as a guest, your comment is unpublished.
    Radoslav · 28 days ago
    Perfect!!! Works and refer to all my demands. Tnx for that source code.
  • To post as a guest, your comment is unpublished.
    Rudi Miller · 1 months ago
    Sub parse_data()
    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
    vcol = 1
    Set ws = Sheets("Sheet1")
    lr = ws.Cells(ws.Rows.Count, vcol).End(xlUp).Row
    title = "A1:C1"
    titlerow = ws.Range(title).Cells(1).Row
    icol = ws.Columns.Count
    ws.Cells(1, icol) = "Unique"
    For i = 2 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
    ws.Range("A" & titlerow & ":A" & lr).EntireRow.Copy Sheets(myarr(i) & "").Range("A1")
    Sheets(myarr(i) & "").Columns.AutoFit
    Next
    ws.AutoFilterMode = False
    ws.Activate
    End Sub
  • To post as a guest, your comment is unpublished.
    Jason · 2 months ago
    This formula is great, works perfectly for me.
    I want to split out data based on a location, which is in column 1. Which this does.
    However, is it possible to also split out based on column 2, for example. Built and Not Built. So a secondary condition also?