Tách 1 File Thành Nhiều File Có điều Kiện | Giải Pháp Excel

Giải Pháp Excel
  • 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 New 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
  • Facebook
  • Đóng góp
Đăng nhập Đăng Ký Có gì mới? Tìm kiếm

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 Bởi: Tìm kiếm Tìm nâng cao…
  • Tìm bài viết mới
  • Tìm theo chuyên mục
Menu Đăng nhập Đăng Ký Install the app Install How to install the app on iOS

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
You are using an out of date browser. It may not display this or other websites correctly.You should upgrade or use an alternative browser. Tách 1 file thành nhiều file có điều kiện (1 người xem)
  • Thread starter Thread starter saobekhonglac
  • Ngày gửi Ngày gửi 27/10/15
Liên hệ QC

Người dùng đang xem chủ đề này

Đang trực tuyến: 2 (Thành viên: 0, Khách: 2) saobekhonglac

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

doveandrose

hello
Tham gia 3/7/09 Bài viết 2,372 Được thích 2,263
hpkhuong đã 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í --=0 saobekhonglac

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

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 ơn
hpkhuong đã 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

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

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

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...kaka--=0--=0--=0 Vậ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

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

doveandrose

hello
Tham gia 3/7/09 Bài viết 2,372 Được thích 2,263
ndu96081631 đã 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

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

doveandrose

hello
Tham gia 3/7/09 Bài viết 2,372 Được thích 2,263
ndu96081631 đã 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

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

doveandrose

hello
Tham gia 3/7/09 Bài viết 2,372 Được thích 2,263
ndu96081631 đã 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

doveandrose

hello
Tham gia 3/7/09 Bài viết 2,372 Được thích 2,263
hpkhuong đã 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 ? --=0--=0 ndu96081631

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

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

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

doveandrose

hello
Tham gia 3/7/09 Bài viết 2,372 Được thích 2,263
ndu96081631 đã 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 --=0 saobekhonglac

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
Lần chỉnh sửa cuối: 6/3/17 saobekhonglac

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

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. A

Ai_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

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

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
Trả lời 0 Đọc 14 35 phút trước hieuchi89 H adua29 File Excel kiểm phiếu bầu cử Quốc hội và HĐND các cấp (4 người xem)
    • Thích
  • adua29
  • 9/4/21
  • Excel Ứng Dụng
Trả lời 26 Đọc 7K Hôm qua, lúc 23:22 dongKH dongKH V các bác ơi giúp e hàm countif với ạ
    • Thích
  • vunl
  • Hôm qua, lúc 16:46
  • Hàm và công thức Excel
Trả lời 2 Đọc 52 Hôm qua, lúc 21:58 SA_DQ SA_DQ V Biểu diễn số đếm theo hình vẽ từ Shape (1 người xem)
  • Vũ Hải Sơn
  • 2/12/25
  • Hàm và công thức Excel
Trả lời 38 Đọc 1K Hôm qua, lúc 20:10 HUONGHCKT H katanvn File kiểm đếm phiếu bầu cử 2026-2031 dễ hiểu có kết quả và biên bản (14 người xem)
    • Thích
  • katanvn
  • 4/3/26
  • Excel Ứng Dụng
Trả lời 5 Đọc 4K Hôm qua, lúc 19:55 katanvn katanvn vova2209
  • Question Question
Co, Dãn dòng vừa trang in
  • vova2209
  • Thứ sáu lúc 00:42
  • Lập Trình với Excel
Trả lời 5 Đọc 250 Hôm qua, lúc 16:49 vova2209 vova2209 V Một Excel add-in vibe coding
    • Thích
  • vietdang170
  • 28/1/26
  • Các Add-ins cho excel
Trả lời 26 Đọc 1K Hôm qua, lúc 15:57 vietdang170 V SA_DQ Copilot bình luận các ván cờ vua từng ngày.
    • Thích
  • SA_DQ
  • 3/11/25
  • Chia sẻ
Trả lời 92 Đọc 3K Hôm qua, lúc 14:12 SA_DQ SA_DQ ongke0711
  • Question Question
Tải hóa đơn điện tử (https://hoadondientu.gdt.gov.vn/) Excel Vba (1 người xem)
    • Thích
    • Yêu thích
    • Cảm ơn
  • ongke0711
  • 6/10/24
  • Lập Trình với Excel
5 6 7 Trả lời 641 Đọc 96K Hôm qua, lúc 09:28 pycckuu410 pycckuu410 phuongnam366377
  • Question Question
Vì sao KHÔNG nên sử dụng Excel (VBA) làm máy chủ
  • phuongnam366377
  • Thứ hai lúc 13:23
  • Lập Trình với Excel
Trả lời 3 Đọc 136 Hôm qua, lúc 08:21 phuongnam366377 phuongnam366377 adua29 Gửi tặng file excel kiểm phiếu bầu cử Đại biểu Quốc hội và Hội đồng nhân dân các cấp (1 người xem)
    • Thích
    • Yêu thích
  • adua29
  • 19/5/11
  • Ứng dụng cho lĩnh vực khác
Trả lời 26 Đọc 30K Thứ hai lúc 20:40 adua29 adua29 S
  • Question Question
Lập trình VBA có nhận biết được một file trong Onedrive đang đồng bộ (sync) và đã đồng bộ?
  • syquyen1987
  • Thứ hai lúc 16:25
  • Lập Trình với Excel
Trả lời 1 Đọc 68 Thứ hai lúc 16:58 ongke0711 ongke0711 G Vẽ mặt cắt dầm từ excel
    • Thích
    • Yêu thích
    • Cảm ơn
  • gpe.vn
  • 17/6/24
  • Xây dựng ứng dụng.
Trả lời 20 Đọc 2K Thứ hai lúc 14:32 gpe.vn G HeSanbi
  • Question Question
Trình điều khiển Web tải hóa đơn điện tử từ trang Misa (actapp.misa.vn/app)
    • Thích
    • Yêu thích
  • HeSanbi
  • 26/2/26
  • Lập Trình với Excel
Trả lời 3 Đọc 388 Thứ hai lúc 11:19 VietHoangPhan VietHoangPhan Q Phần mềm kế toán Excel cho DN vừa và nhỏ
    • Thích
    • Ngạc nhiên
  • QUANGTUHN
  • 20/8/20
  • Excel và Kế Toán
Trả lời 7 Đọc 4K Thứ hai lúc 09:19 cuongluukt C phuongnam366377 Xây dựng RPC Server cho Excel / Access bằng Delphi – Tận dụng lại DLL và bảo mật mã nguồn
    • Thích
  • phuongnam366377
  • 28/2/26
  • Excel và các ngôn ngữ lập trình khác
Trả lời 1 Đọc 212 Chủ nhật lúc 08:56 phuongnam366377 phuongnam366377 D In đồng loạt phiếu thu, chi
  • ducminh14
  • 5/12/11
  • Các Add-ins cho excel
Trả lời 20 Đọc 11K Chủ nhật lúc 08:24 HUONGHCKT H MinhKhai Giúp kết nối từ Excel VBA đến Oracle database.
  • MinhKhai
  • 4/3/26
  • Cơ sở dữ liệu
Trả lời 6 Đọc 265 Thứ bảy lúc 19:54 huhumalu H C
  • Question Question
Tự động điền thông tin từ danh sách vào template, nhờ anh chị trợ giúp
  • chienminhanh
  • 3/3/26
  • Lập Trình với Excel
Trả lời 4 Đọc 226 Thứ bảy lúc 10:49 chienminhanh C GPE-Trợ Lý CHÚC MỪNG NGÀY QUỐC TẾ PHỤ NỮ 08/03/2026 (1 người xem)
    • Thích
    • Cười
    • Cảm ơn
  • GPE-Trợ Lý
  • Thứ bảy lúc 08:35
  • Thông tin về diễn đàn
Trả lời 0 Đọc 3K Thứ bảy lúc 08:35 GPE-Trợ Lý GPE-Trợ Lý Xem thêm… Chia sẻ: Facebook X Bluesky LinkedIn Reddit Pinterest Tumblr WhatsApp Email Chia sẻ Link

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.…
Back Top Bottom

Từ khóa » Tách File Excel Theo điều Kiện