Tách 1 File Thành Nhiều File Có điều Kiện | Giải Pháp Excel
Có thể bạn quan tâm
- Trang chủ Có gì mới Hoạt động gần nhất Tác giả
- Diễn đàn Tìm bài viết mới Tìm theo chuyên mục
- Video
Video về Excel Video về tin học khác Tin tức về tin học chung - Thông tin mới Featured content Tìm bài mới Tài Nguyên Mới Hoạt động gần nhất
- Tài nguyên Đánh giá mới nhất Tìm tài nguyên
- Đóng góp
Tìm kiếm
Mọi nơi Đề tài Diễn đàn này Đề tài này Chỉ tìm trong tiêu đề Note Tìm kiếm Tìm nâng cao…- Tìm bài viết mới
- Tìm theo chuyên mục
Follow along with the video below to see how to install our site as a web app on your home screen.
Note: This feature may not be available in some browsers.
- Khách ơi! GPE thông tin đến bạn ấn phẩm "lập trình VBA trong Excel": - Phần cơ bản - Phần Nâng Cao - VBA trong Excel - Cải thiện và tăng tốc
- Trang chủ
- Diễn đàn
- Những vấn đề chung
- Thread starter Thread starter saobekhonglac
- Ngày gửi Ngày gửi 27/10/15
Người dùng đang xem chủ đề này
Đang trực tuyến: 2 (Thành viên: 0, Khách: 2)saobekhonglac
Thành viên mới
Tham gia 1/11/08 Bài viết 1,566 Được thích 1,454 Giới tính Nam Chào anh/chị. Em có file excel. Trong file có cột CI có 12 nhân viên. Nhờ anh/chị hướng dẫn giúp em cách tách file ra thành 12 file (mỗi nhân viên là 1 file, có thể lưu .xls hoặc xlsx nhưng vẫn giữ format cũ, có thể chọn đường dẫn lưu hoặc lưu mặc định vào file gốc cần tách, tên file lấy theo cột CJ, tên sheet lấy theo tên Sale trong cột CI). Cám ơn anh/chị.doveandrose
hello
Tham gia 3/7/09 Bài viết 2,372 Được thích 2,263hpkhuong đã viết: Bạn chạy code sau: Nhấp chuột vào đây để mở rộng...ồ bạn này làm code tách file có vẻ nhuyễn . hí hí
saobekhonglac
Thành viên mới
Tham gia 1/11/08 Bài viết 1,566 Được thích 1,454 Giới tính Nam Anh xem lại giúp em khi xuất ra thì dữ liệu cột CI bị xóa hết (anh giữ lại dữ liệu cột CI giúp em). Khi xuất thì em thấy có phát sinh cột CK (tổng hợp lại danh sách 12 nhân viên, cột này em không cần thiết). Tên file cũng lấy theo cột CI chứ chưa lấy theo cột CJ (do 2 cột của em trùng tên nên nó đúng, nếu em đổi tên cột CJ thì không đúng). Cám ơn anh.hpkhuong đã viết: Bạn chạy code sau: Mã: Sao chép. Option Explicit Sub GPE() Dim Dic As Object, Tmp As String, Sa Dim I As Long, J As Long, K As Long, ShSum As Worksheet Dim Arr, dArr, Rng As Range, Sh Application.ScreenUpdating = False Application.DisplayAlerts = False Arr = Sheet1.Range(Sheet1.[CI2], Sheet1.[CI65000].End(3)) ReDim dArr(1 To UBound(Arr, 1), 1 To UBound(Arr, 2)) Set Dic = CreateObject("Scripting.Dictionary") With Dic For I = 1 To UBound(Arr, 1) Tmp = Arr(I, 1) If Not .Exists(Tmp) Then K = K + 1 .Add Tmp, K For J = 1 To UBound(Arr, 2) dArr(K, J) = Arr(I, 1) Next J End If Next I End With Sheet1.Range("CK2").Resize(K, UBound(Arr, 2)) = dArr On Error Resume Next Set ShSum = ThisWorkbook.Sheets("Sum") Set Rng = ShSum.UsedRange ShSum.AutoFilterMode = False For Each Sa In ShSum.Range("CK2:CK" & ShSum.[CK65000].End(3).Row) With Workbooks.Add Set Sh = .Sheets(1) Sh.Name = Sa Rng.AutoFilter 87, Sa ShSum.Range(ShSum.Range("A1"), Rng).SpecialCells(12).Copy Sh.Range("A1").PasteSpecial 8 Sh.Range("A1").PasteSpecial Rng.AutoFilter .Close True, ThisWorkbook.Path & "\" & Sa & ".xlsx" End With Next Sa Sheet1.Range("CK2:CK65000").ClearContents Application.DisplayAlerts = True Application.ScreenUpdating = True End Sub Nhấp chuột vào đây để mở rộng...Lần chỉnh sửa cuối: 27/10/15
saobekhonglac
Thành viên mới
Tham gia 1/11/08 Bài viết 1,566 Được thích 1,454 Giới tính Nam Anh sửa giúp em tên file lưu theo cột CJ với nha. Cám ơnhpkhuong đã viết: Bạn lấy lại code #2 đi. Tại tôi nhầm là xóa cột CK với CI (do gõ nhầm thôi.) Nhấp chuột vào đây để mở rộng...
saobekhonglac
Thành viên mới
Tham gia 1/11/08 Bài viết 1,566 Được thích 1,454 Giới tính Nam Em để giống nhưng nếu đổi tên khác trong cột CJ thì nó vẫn lấy theo cột CI. (Nếu cột CJ của em là "Nguyễn Văn 1" ="1", "Nguyễn Văn 2" ="2",... Thì em muốn lưu tên file thành 1.xlsx, 2.xlsx,...)hpkhuong đã viết: Sao tôi thấy 2 cột có dữ liệu như nhau mà... Nhấp chuột vào đây để mở rộng...
saobekhonglac
Thành viên mới
Tham gia 1/11/08 Bài viết 1,566 Được thích 1,454 Giới tính Nam Đúng là đồng nhất, nếu CI = Nguyễn Văn 1 thì CJ = 1,..... Em muốn lưu tên file ngắn hơn để dễ nhìn và tiện theo dõi. Nhưng nếu khó quá thì em sữa cột CI lại cho gọn hơn cũng được, sẽ làm cột phụ thay thế cột CI. Cám ơn anh nhiều.hpkhuong đã viết: Nhưng quan trọng là cột CI là chính đúng không, lọc theo cột này và copy dữ liệu ra theo tên Sale ở cột này. Vậy thì giữa 2 cột CI và CJ phải tương đồng đúng không Ví dụ Cột CI có 2 tên là Nguyễn Văn 1 (2 dòng) thì bên cột CJ cũng tương đương có 2 dòng đều là số 1 (đang nói trường hợp bạn ví dụ như trên). Hay là có trường hợp cột CJ tại có 1 dòng là số 1 còn dòng còn lại là 1' (1 phẩy) chẳng hạn. Tôi nghỉ là phải đồng nhất chứ... Bạn cho biết rõ nhé... Nhấp chuột vào đây để mở rộng...
saobekhonglac
Thành viên mới
Tham gia 1/11/08 Bài viết 1,566 Được thích 1,454 Giới tính Nam Cám ơn anh trai nhiều.hpkhuong đã viết: Tất nhiên là về lý thì phải đương đồng rồi, nếu không tương đồng thì làm sao được... Nhưng ở trên tôi cố tình hỏi để bạn nói như nào thôi...có hiểu vấn đề của chính mình hok thôi ah...kakaVậy bạn lấy lại code sau: Mã: Sao chép. Option Explicit Sub GPE() Dim Dic As Object, Tmp As String, Sa Dim I As Long, J As Long, K As Long, ShSum As Worksheet Dim Arr, dArr, Rng As Range, Sh Application.ScreenUpdating = False Application.DisplayAlerts = False Arr = Sheet1.Range(Sheet1.[CI2], Sheet1.[CI65000].End(3)).Resize(, 2) ReDim dArr(1 To UBound(Arr, 1), 1 To UBound(Arr, 2)) Set Dic = CreateObject("Scripting.Dictionary") With Dic For I = 1 To UBound(Arr, 1) Tmp = Arr(I, 1) & "-" & Arr(I, 2) If Not .Exists(Tmp) Then K = K + 1 .Add Tmp, K For J = 1 To UBound(Arr, 2) dArr(K, J) = Arr(I, J) Next J End If Next I End With Sheet1.Range("CK2").Resize(K, UBound(Arr, 2)) = dArr On Error Resume Next Set ShSum = ThisWorkbook.Sheets("Sum") Set Rng = ShSum.Range(ShSum.[A1], ShSum.[A65000].End(3)).Resize(, 88) ShSum.AutoFilterMode = False For Each Sa In ShSum.Range("CK2:CK" & ShSum.[CK65000].End(3).Row) With Workbooks.Add Set Sh = .Sheets(1) Sh.Name = Sa Rng.AutoFilter 87, Sa ShSum.Range(ShSum.Range("A1"), Rng).SpecialCells(12).Copy Sh.Range("A1").PasteSpecial 8 Sh.Range("A1").PasteSpecial Rng.AutoFilter .Close True, ThisWorkbook.Path & "\" & Sa.Offset(, 1).Value & ".xlsx" End With Next Sa Sheet1.Range("CK2:CL65000").ClearContents Application.DisplayAlerts = True Application.ScreenUpdating = True End Sub Nhấp chuột vào đây để mở rộng...
ndu96081631
Huyền thoại GPE
Thành viên BQT Super Moderator Tham gia 5/6/08 Bài viết 30,703 Được thích 53,982 Nếu tôi làm bài này thì tôi sẽ dùng Dictionary + Advanced Filter + 1 vòng lập là đủ Ai thử nghiên cứu xem. Tôi nghĩ code sẽ gọn hơn đấy doveandrose
hello
Tham gia 3/7/09 Bài viết 2,372 Được thích 2,263ndu96081631 đã viết: Nếu tôi làm bài này thì tôi sẽ dùng Dictionary + Advanced Filter + 1 vòng lập là đủ Ai thử nghiên cứu xem. Tôi nghĩ code sẽ gọn hơn đấy Nhấp chuột vào đây để mở rộng...em thấy cũng vậy chứ có gọn hơn gì đâu Mã: Sao chép. Public Sub hello() Dim dic As Object, r As Long, arr, lr As Long Application.ScreenUpdating = False Application.DisplayAlerts = False Set dic = CreateObject("Scripting.Dictionary") With Sheet1 lr = .[CJ65000].End(xlUp).Row arr = .Range("CJ2:CJ" & lr).Value .Copy , Sheet1 For r = 1 To UBound(arr) Step 1 If Len(arr(r, 1)) > 0 Then If Not dic.exists(arr(r, 1)) Then dic(arr(r, 1)) = 1 .[ZZ2].Value = "=CJ2=""" & arr(r, 1) & """" .Range("A1:CJ" & lr).AdvancedFilter xlFilterCopy, .[ZZ1:ZZ2], ActiveSheet.[A1:CJ1], False ActiveSheet.Copy ActiveWorkbook.Worksheets(1).Name = .Name ActiveWorkbook.Close True, ThisWorkbook.Path & "\" & arr(r, 1) & ".xlsx" End If End If Next .[ZZ2].ClearContents End With ActiveSheet.Delete Application.DisplayAlerts = True Application.ScreenUpdating = True End Sub
ndu96081631
Huyền thoại GPE
Thành viên BQT Super Moderator Tham gia 5/6/08 Bài viết 30,703 Được thích 53,982 doveandrose đã viết: em thấy cũng vậy chứ có gọn hơn gì đâu Nhấp chuột vào đây để mở rộng...Gọn trong cách tiếp cận vấn đề! Tôi làm vầy: Mã: Sao chép. Sub Main() Dim dic As Object, rngSrc As Range, wkbNew As Workbook Dim aIDs, n As Long Dim sFolder As String, FileName As String, SheetName As String sFolder = ThisWorkbook.Path & "\" Set rngSrc = ThisWorkbook.Worksheets("Sum").Range("A1:CJ10000") aIDs = rngSrc.Offset(1).Columns("CI:CJ").Value Set dic = CreateObject("Scripting.Dictionary") Application.ScreenUpdating = False rngSrc.Range("IV1").Value = rngSrc.Range("CI1").Value For n = 1 To UBound(aIDs, 1) If Len(aIDs(n, 1)) And Len(aIDs(n, 2)) Then SheetName = aIDs(n, 1): FileName = aIDs(n, 2) If Not dic.Exists(SheetName) Then dic.Add SheetName, Empty Set wkbNew = Workbooks.Add(1) wkbNew.Sheets(1).Name = SheetName rngSrc.Range("IV2").Value = "'=" & SheetName rngSrc.AdvancedFilter 2, rngSrc.Range("IV1:IV2"), wkbNew.Sheets(1).Range("A1") wkbNew.SaveAs sFolder & FileName, xlOpenXMLWorkbook wkbNew.Close False End If End If Next Application.ScreenUpdating = True rngSrc.Range("IV1:IV2").ClearContents If dic.Count Then MsgBox "Ða luu " & dic.Count & " workbooks", , "THÔNG BÁO" End Sub Không phải "gọn" là "ngắn" đâu ------------------ Giải thuật đơn giản: - Ta duyệt cột CI rồi add vào dic - Cứ mỗi lần add được thứ gì đó vào dic, ta lại tạo 1 workbook mới, dùng công cụ AF lọc theo điều kiện (vừa add vào dic) sang workbook mới tạo (lọc luôn chứ không cần phải copy gì cả) - Lưu workbook mới thành file Vậy thôi ----------------- Có 1 vài việc cần lưu ý: - Do ta chỉ lưu mỗi file có 1 sheet nên khi tạo workbook, bằng cách nào đó ta phải tạo nó chỉ chứa 1 sheet thôi - Code trên chưa bẫy lỗi, đúng ra ta phải xét tính hợp lệ của tên sheet (nếu không thì làm sao đặt tên). - Cả tên file của phải lưu ý về tính hợp lệ này và còn vấn đề nếu file ta chuẩn bị lưu đã tồn tại trước đó thì sao? Cho lưu đè hay bỏ qua? Đó là lúc mà ta cho chạy code từ lần thứ 2 trở đi sẽ có vấn đề cần bàn.. vân.. vân...
doveandrose
hello
Tham gia 3/7/09 Bài viết 2,372 Được thích 2,263ndu96081631 đã viết: Có 1 vài việc cần lưu ý: - Do ta chỉ lưu mỗi file có 1 sheet nên khi tạo workbook, bằng cách nào đó ta phải tạo nó chỉ chứa 1 sheet thôi Nhấp chuột vào đây để mở rộng...thầy ơi thầy kiểm dùm em trên máy thầy coi code của thầy với của em các file vừa tạo có mấy sheet vậy ?
ndu96081631
Huyền thoại GPE
Thành viên BQT Super Moderator Tham gia 5/6/08 Bài viết 30,703 Được thích 53,982 doveandrose đã viết: thầy ơi thầy kiểm dùm em trên máy thầy coi code của thầy với của em các file vừa tạo có mấy sheet vậy ? Nhấp chuột vào đây để mở rộng...Đương nhiên chỉ tạo có 1 sheet thôi (Code của bạn còn chưa đặt tên sheet đó nha! Ẹc... Ẹc...)
doveandrose
hello
Tham gia 3/7/09 Bài viết 2,372 Được thích 2,263ndu96081631 đã viết: Đương nhiên chỉ tạo có 1 sheet thôi (Code của bạn còn chưa đặt tên sheet đó nha! Ẹc... Ẹc...) Nhấp chuột vào đây để mở rộng...thì phải vậy mới gọi là trò của thầy chứ ! hi hi
doveandrose
hello
Tham gia 3/7/09 Bài viết 2,372 Được thích 2,263hpkhuong đã viết: Sao code trên của anh em chạy nó hok ra file nào hết vậy nhỉ? (Hay vì lý do là mặc định khi new wbooks office trên máy em nó tự sinh ra 3 sheet là nó hok có tác dụng....??) Nhấp chuột vào đây để mở rộng...Mã: Sao chép. [COLOR=#000000][I]Workbooks.Add(1)[/I][/COLOR] là lệnh tạo file mới có đúng 1 sheet và không liên quan đến thiết lập của người dùng , nó khác với Mã: Sao chép. [COLOR=#000000][I]Workbooks.Add [/I][/COLOR] bạn chạy code trên không ra kết quả thì cần xem lại ăn ở ra sao ?

ndu96081631
Huyền thoại GPE
Thành viên BQT Super Moderator Tham gia 5/6/08 Bài viết 30,703 Được thích 53,982 doveandrose đã viết: thì phải vậy mới gọi là trò của thầy chứ ! hi hi Nhấp chuột vào đây để mở rộng...Nói quá rồi đại ca ơi! Chẳng thích ai gọi mình bằng thầy tí nào. Bạn bè hay anh em gì đó thấy thoải mái hơn
saobekhonglac
Thành viên mới
Tham gia 1/11/08 Bài viết 1,566 Được thích 1,454 Giới tính Nam Đúng rồi. Cột CJ sẽ ngắn gọn hơn cột CI (do lúc đầu em làm biếng mới copy cho giống CI cho nhanh, chứ thực tế thì CJ và CI khác nhau). Cám ơn mấy anh nhiều.hpkhuong đã viết: Kaka. Đã tìm ra nguyên nhân...là vì sao: Là vì do tác giả trên nói rằng tên sheet theo cột CI, tên File theo cột CJ. Mà thực tế thì cột CJ khác CI (có thể tác làm gọn lại cho dễ nhìn.). (Nhưng file trên #1 thì tác giả lại vô tình để nó trùng rùi.) Cho nên khi lúc tôi viết code đã chỉnh cột CJ sang tên khác cột CI. Và đã chạy code của bạn + của anh NDU trên file cũ nên nó hok có ra là đúng rồi. Vậy thì: Code của bạn & của anh NDU chỉ chưa xét tới trường hợp là đặt tên file theo cột CJ chứ hok phải theo cột CI Code của anh NDU thì đọc qua thấy anh set tên file là cột CJ nhưng nếu đổi tên tại cột CJ khác cột CI thì code lại chạy hok ra file nào hết như mình nói ở trên Chắc chờ anh í vào xem lại! keke.... Nhấp chuột vào đây để mở rộng...
ndu96081631
Huyền thoại GPE
Thành viên BQT Super Moderator Tham gia 5/6/08 Bài viết 30,703 Được thích 53,982 hpkhuong đã viết: Chắc chờ anh í vào xem lại! keke.... Nhấp chuột vào đây để mở rộng...Thử sửa chỗ: Mã: Sao chép. If Len(aIDs(n, 1)) [COLOR=#ff0000]And[/COLOR] Len(aIDs(n, 2)) Then Thành vầy xem sao: Mã: Sao chép. If Len(aIDs(n, 1)) [COLOR=#ff0000]*[/COLOR] Len(aIDs(n, 2)) Then
doveandrose
hello
Tham gia 3/7/09 Bài viết 2,372 Được thích 2,263ndu96081631 đã viết: Nói quá rồi đại ca ơi! Chẳng thích ai gọi mình bằng thầy tí nào. Bạn bè hay anh em gì đó thấy thoải mái hơn Nhấp chuột vào đây để mở rộng...cảm ơn thầy đã nói ra suy nghĩ . Trong âm thầm em quan sát và học tập kiến thức của thầy nhiều hơn học bất cứ ai ở diễn đàn này nên luôn trân trọng và biết ơn để gọi chữ thầy . Nhưng nếu thầy đã nói vậy thì đây là lần cuối từ nay sẽ là anh NDU thân mến . hi hi
saobekhonglac
Thành viên mới
Tham gia 1/11/08 Bài viết 1,566 Được thích 1,454 Giới tính Nam Anh NDU ơi. Anh xem giúp em nếu em thay đổi tên ở cột CJ thì xuất ra nó chỉ ra đúng 1 tên nhóm 1 và 1 tên nhóm 2, những cái khác cùng tên nó sẽ bị đè lên nhau. Anh xem lại giúp em. Anh sửa lại giúp em theo điều kiện sau: 1 code sẽ xuất dữ liệu sẽ xuất từ cột A đến CH và lấy tên file theo điều kiện cột CI (xuất 12 file: từ Nguyễn Văn 1 đến Nguyễn Văn 12). 1 code sẽ xuất dữ liệu sẽ xuất từ cột A đến CH và lấy tên file theo điều kiện cột CJ (xuất 2 file: file NHOM1 & NHOM2). Cám ơn anh.ndu96081631 đã viết: Gọn trong cách tiếp cận vấn đề! Tôi làm vầy: Mã: Sao chép. Sub Main() Dim dic As Object, rngSrc As Range, wkbNew As Workbook Dim aIDs, n As Long Dim sFolder As String, FileName As String, SheetName As String sFolder = ThisWorkbook.Path & "\" Set rngSrc = ThisWorkbook.Worksheets("Sum").Range("A1:CJ10000") aIDs = rngSrc.Offset(1).Columns("CI:CJ").Value Set dic = CreateObject("Scripting.Dictionary") Application.ScreenUpdating = False rngSrc.Range("IV1").Value = rngSrc.Range("CI1").Value For n = 1 To UBound(aIDs, 1) If Len(aIDs(n, 1)) * Len(aIDs(n, 2)) Then SheetName = aIDs(n, 1): FileName = aIDs(n, 2) If Not dic.Exists(SheetName) Then dic.Add SheetName, Empty Set wkbNew = Workbooks.Add(1) wkbNew.Sheets(1).Name = SheetName rngSrc.Range("IV2").Value = "'=" & SheetName rngSrc.AdvancedFilter 2, rngSrc.Range("IV1:IV2"), wkbNew.Sheets(1).Range("A1") wkbNew.SaveAs sFolder & FileName, xlOpenXMLWorkbook wkbNew.Close False End If End If Next Application.ScreenUpdating = True rngSrc.Range("IV1:IV2").ClearContents If dic.Count Then MsgBox "Ða luu " & dic.Count & " workbooks", , "THÔNG BÁO" End Sub Không phải "gọn" là "ngắn" đâu ------------------ Giải thuật đơn giản: - Ta duyệt cột CI rồi add vào dic - Cứ mỗi lần add được thứ gì đó vào dic, ta lại tạo 1 workbook mới, dùng công cụ AF lọc theo điều kiện (vừa add vào dic) sang workbook mới tạo (lọc luôn chứ không cần phải copy gì cả) - Lưu workbook mới thành file Vậy thôi ----------------- Có 1 vài việc cần lưu ý: - Do ta chỉ lưu mỗi file có 1 sheet nên khi tạo workbook, bằng cách nào đó ta phải tạo nó chỉ chứa 1 sheet thôi - Code trên chưa bẫy lỗi, đúng ra ta phải xét tính hợp lệ của tên sheet (nếu không thì làm sao đặt tên). - Cả tên file của phải lưu ý về tính hợp lệ này và còn vấn đề nếu file ta chuẩn bị lưu đã tồn tại trước đó thì sao? Cho lưu đè hay bỏ qua? Đó là lúc mà ta cho chạy code từ lần thứ 2 trở đi sẽ có vấn đề cần bàn.. vân.. vân... Nhấp chuột vào đây để mở rộng...
File đính kèm
- Tach 1 file ra thanh nhieu file.xlsm Tach 1 file ra thanh nhieu file.xlsm 350 KB · Đọc: 96
saobekhonglac
Thành viên mới
Tham gia 1/11/08 Bài viết 1,566 Được thích 1,454 Giới tính Nam Có ai giúp mình với. .................saobekhonglac đã viết: Anh NDU ơi. Anh xem giúp em nếu em thay đổi tên ở cột CJ thì xuất ra nó chỉ ra đúng 1 tên nhóm 1 và 1 tên nhóm 2, những cái khác cùng tên nó sẽ bị đè lên nhau. Anh xem lại giúp em. Anh sửa lại giúp em theo điều kiện sau: 1 code sẽ xuất dữ liệu sẽ xuất từ cột A đến CH và lấy tên file theo điều kiện cột CI (xuất 12 file: từ Nguyễn Văn 1 đến Nguyễn Văn 12). 1 code sẽ xuất dữ liệu sẽ xuất từ cột A đến CH và lấy tên file theo điều kiện cột CJ (xuất 2 file: file NHOM1 & NHOM2). Cám ơn anh. Nhấp chuột vào đây để mở rộng...
saobekhonglac
Thành viên mới
Tham gia 1/11/08 Bài viết 1,566 Được thích 1,454 Giới tính Nam Anh NDU ơi, anh vào giúp em với. AAi_Ma_Biet
Thành viên hoạt động


Tham gia 22/4/15 Bài viết 127 Được thích 20 Giới tính Nam Không biết về VBA nên không chỉ được nhưng theo tôi biết thì cột CI là cột lọc điều kiện để xuất, còn cột CJ là cột lưu tên file, nếu trùng tên thì nó chỉ lưu 1 tên là đúng. Bạn ngồi chờ tác giả giúp bạn thôi saobekhonglac đã viết: Anh NDU ơi. Anh xem giúp em nếu em thay đổi tên ở cột CJ thì xuất ra nó chỉ ra đúng 1 tên nhóm 1 và 1 tên nhóm 2, những cái khác cùng tên nó sẽ bị đè lên nhau. Anh xem lại giúp em. Anh sửa lại giúp em theo điều kiện sau: 1 code sẽ xuất dữ liệu sẽ xuất từ cột A đến CH và lấy tên file theo điều kiện cột CI (xuất 12 file: từ Nguyễn Văn 1 đến Nguyễn Văn 12). 1 code sẽ xuất dữ liệu sẽ xuất từ cột A đến CH và lấy tên file theo điều kiện cột CJ (xuất 2 file: file NHOM1 & NHOM2). Cám ơn anh. Nhấp chuột vào đây để mở rộng...
saobekhonglac
Thành viên mới
Tham gia 1/11/08 Bài viết 1,566 Được thích 1,454 Giới tính Nam Cám ơn bạn, đành phải ngồi chờ anh NDU thôi chứ biết sau giờ.Ai_Ma_Biet đã viết: Không biết về VBA nên không chỉ được nhưng theo tôi biết thì cột CI là cột lọc điều kiện để xuất, còn cột CJ là cột lưu tên file, nếu trùng tên thì nó chỉ lưu 1 tên là đúng. Bạn ngồi chờ tác giả giúp bạn thôi Nhấp chuột vào đây để mở rộng...M
Mss.Happy
Thành viên mới 
Tham gia 20/7/12 Bài viết 2 Được thích 0 doveandrose đã viết: em thấy cũng vậy chứ có gọn hơn gì đâu Mã: Sao chép. Public Sub hello() Dim dic As Object, r As Long, arr, lr As Long Application.ScreenUpdating = False Application.DisplayAlerts = False Set dic = CreateObject("Scripting.Dictionary") With Sheet1 lr = .[CJ65000].End(xlUp).Row arr = .Range("CJ2:CJ" & lr).Value .Copy , Sheet1 For r = 1 To UBound(arr) Step 1 If Len(arr(r, 1)) > 0 Then If Not dic.exists(arr(r, 1)) Then dic(arr(r, 1)) = 1 .[ZZ2].Value = "=CJ2=""" & arr(r, 1) & """" .Range("A1:CJ" & lr).AdvancedFilter xlFilterCopy, .[ZZ1:ZZ2], ActiveSheet.[A1:CJ1], False ActiveSheet.Copy ActiveWorkbook.Worksheets(1).Name = .Name ActiveWorkbook.Close True, ThisWorkbook.Path & "\" & arr(r, 1) & ".xlsx" End If End If Next .[ZZ2].ClearContents End With ActiveSheet.Delete Application.DisplayAlerts = True Application.ScreenUpdating = True End Sub Nhấp chuột vào đây để mở rộng...Bạn ơi, mình chạy thử code của bạn, nó vẫn lưu được theo điều kiện filter thành các file khác nhau, nhưng nội dung bên trong thì y chang sheet dữ liệu ban đầu. Nhờ bạn chỉ giáo nhé
DarkWanderer
Thành viên hoạt động


Tham gia 16/12/19 Bài viết 104 Được thích 77 Giới tính Nam Mss.Happy đã viết: Bạn ơi, mình chạy thử code của bạn, nó vẫn lưu được theo điều kiện filter thành các file khác nhau, nhưng nội dung bên trong thì y chang sheet dữ liệu ban đầu. Nhờ bạn chỉ giáo nhé Nhấp chuột vào đây để mở rộng...Code ấy chưa hoàn chỉnh, bạn xem code của anh Ndu bên dưới ấy Bạn phải đăng nhập hoặc đăng ký để trả lời bài viết tại đây.
Bài viết mới nhất
H Làm phiếu lương nhân viên công ty (4 người xem)- hieuchi89
- 35 phút trước
- Hàm và công thức Excel
- adua29
- 9/4/21
- Excel Ứng Dụng
- vunl
- Hôm qua, lúc 16:46
- Hàm và công thức Excel
- Vũ Hải Sơn
- 2/12/25
- Hàm và công thức Excel
- katanvn
- 4/3/26
- Excel Ứng Dụng
- Question Question
- vova2209
- Thứ sáu lúc 00:42
- Lập Trình với Excel
- vietdang170
- 28/1/26
- Các Add-ins cho excel
- SA_DQ
- 3/11/25
- Chia sẻ
- Question Question
- ongke0711
- 6/10/24
- Lập Trình với Excel
- Question Question
- phuongnam366377
- Thứ hai lúc 13:23
- Lập Trình với Excel
- adua29
- 19/5/11
- Ứng dụng cho lĩnh vực khác
- Question Question
- syquyen1987
- Thứ hai lúc 16:25
- Lập Trình với Excel
- gpe.vn
- 17/6/24
- Xây dựng ứng dụng.
- Question Question
- HeSanbi
- 26/2/26
- Lập Trình với Excel
- QUANGTUHN
- 20/8/20
- Excel và Kế Toán
- phuongnam366377
- 28/2/26
- Excel và các ngôn ngữ lập trình khác
- ducminh14
- 5/12/11
- Các Add-ins cho excel
- MinhKhai
- 4/3/26
- Cơ sở dữ liệu
- Question Question
- chienminhanh
- 3/3/26
- Lập Trình với Excel
- GPE-Trợ Lý
- Thứ bảy lúc 08:35
- Thông tin về diễn đàn
Thành viên có số lượng bài viết cao nhất tháng
- Maika8008 5
- vova2209 5
- adua29 5
- katanvn 4
- HUONGHCKT 4
- SA_DQ 4
- PhanTuHuong 3
- chienminhanh 3
- MinhKhai 3
- HeSanbi 3
- phuongnam366377 3
- ongke0711 3
- Gà Công Nghệ 2
- doredore1988 2
- Nguyễn Duy Tuân 2
- huhumalu 2
- gpe.vn 2
- vietdang170 2
- Vũ Hải Sơn 2
- hieuchi89 1
Thành viên có điểm tương tác cao nhất tháng
- Maika8008 9
- katanvn 7
- HUONGHCKT 6
- GPE-Trợ Lý 4
- ptm0412 3
- SA_DQ 3
- yeudoi 2
- vietdang170 2
- adua29 2
- kHOA1973 1
- ThuyMay93 1
- mafiana 1
- doredore1988 1
- huhumalu 1
- phuongnam366377 1
- vunl 1
Thời gian đếm ngược.
000 Ngày 00 Giờ 00 phút 00 giây Thân mời tham dự sự kiện sinh nhật GPE 2025- Trang chủ
- Diễn đàn
- Những vấn đề chung
- Website này sử dụng cookies. Tiếp tục sử dụng trang này, đồng nghĩa với việc bạn chấp nhận website sử dụng cookies. Chấp nhận Tìm hiểu thêm.…
Từ khóa » Tách File Excel Theo điều Kiện
-
Tách File Excel Theo điều Kiện - YouTube
-
Cách Tách File Excel Thành Nhiều File Theo điều Kiện - Hàng Hiệu
-
Cách Tách File Excel Thành Nhiều File Theo điều Kiện - Là Gì ở đâu ?
-
Tách Dữ Liệu Thành Nhiều Sheet Trong Excel Tự Động Theo Cột ...
-
Sử Dụng VBA để Tách Sheet Tổng Hợp Thành Nhiều Sheet Chi Tiết Với ...
-
Cách Tách Sheet Thành Nhiều File Excel - Thủ Thuật
-
Tách File Excel Thành Nhiều File Nhỏ | Add In Myexcel - BoyQuang
-
VBA Excel:Tự động Tách Dữ Liệu Và Tạo Thành Nhiều File Theo điều Kiện
-
Hướng Dẫn Tách Nội Dung Cột Trong Excel
-
Cách Tách 1 Bảng Dữ Liệu Ra Nhiều Sheet Hoặc Nhiều File Khác Nhau
-
Hướng Dẫn Cách Tách Sheet Trong Excel Thành Các File Riêng Bằng VBA
-
Làm Thế Nào để Chia Dữ Liệu Thành Nhiều Trang Tính Dựa Trên Cột ...
-
Cách Chia Cột Trong Excel Cực đơn Giản, Chi Tiết Có Ví Dụ Minh Họa