Hỏi về Code tách dữ liệu các Sheet trên Excel

Liên hệ QC

m_trung09

Thành viên mới
Tham gia
1/8/14
Bài viết
7
Được thích
0
Xin chào các anh chị (thầy), mình cần đoạn code lọc dữ liệu như file đính kèm, mong các anh, chị chỉ giáo giúp ạ, Xin chân trành cảm ơn nhiều
Nội dung: có Sheet SL, nội dung bào gồm Lớp, Trường, khối, bây giờ muốn lọc Sheet Lớp, Sheet Trường, Sheet khối riêng.
 

File đính kèm

  • loc du lieu.xls
    34 KB · Đọc: 9
Tiêu đề 1 đằng nội dung 1 nẻo (Bạn xem lại tư duy diễn đạt nhé).Vấn đề Của bạn không phải là lọc dữ liệu mà là tách dữ liệu của 1 sheet sang nhiều sheet theo tham chiếu.
Mình rảnh tay làm thử 1 file giúp bạn, Hy vọng là gần đúng với ý bạn muốn.
Trong dữ liệu gốc của bạn mình thấy các sheet Lop, Khoi ,Truong có mấy cái A1,B1,C1, D1, v...v mình không hiểu bạn lấy ở đâu ra, nên mình xóa và bỏ qua. Chỉ tập trung vào tách dữ liệu cột A và B của sheet SL sang 3 sheet Lop, Khoi, Truong. Sau khi chạy code kiểm tra các sheet Lop, Khoi , Truong bạn sẽ thấy dữ liệu
 

File đính kèm

  • Tách sheet theo cột phụ.xlsm
    28.6 KB · Đọc: 21
Lần chỉnh sửa cuối:
Upvote 0
Tiêu đề 1 đằng nội dung 1 nẻo (Bạn xem lại tư duy diễn đạt nhé).Vấn đề Của bạn không phải là lọc dữ liệu mà là tách dữ liệu của 1 sheet sang nhiều sheet theo tham chiếu.
Mình rảnh tay làm thử 1 file giúp bạn, Hy vọng là gần đúng với ý bạn muốn.
Trong dữ liệu gốc của bạn mình thấy các sheet Lop, Khoi ,Truong có mấy cái A1,B1,C1, D1, v...v mình không hiểu bạn lấy ở đâu ra, nên mình xóa và bỏ qua. Chỉ tập trung vào tách dữ liệu cột A và B của sheet SL sang 3 sheet Lop, Khoi, Truong. Sau khi chạy code kiểm tra các sheet Lop, Khoi , Truong bạn sẽ thấy dữ liệu
Hihi cảm ơn bạn nhiều, cái A, B.... Là công thức sau này mình sẽ chèn vào, bạn có thể giúp mình lần nữa
 
Upvote 0
Hihi cảm ơn bạn nhiều, cái A, B.... Là công thức sau này mình sẽ chèn vào, bạn có thể giúp mình lần nữa
Cũng không biết là có lần sau nữa không vì lúc đó có thể mình lại bận rồi. Nhưng bạn yên tâm sẽ có các thành viên khác trong GPE hỗ trợ bạn. Với điều kiện là bạn làm họ hiểu được điều bạn muốn ;)
 
Upvote 0
Cũng không biết là có lần sau nữa không vì lúc đó có thể mình lại bận rồi. Nhưng bạn yên tâm sẽ có các thành viên khác trong GPE hỗ trợ bạn. Với điều kiện là bạn làm họ hiểu được điều bạn muốn ;)
Ý là nhờ bạn chỉnh lại code trên giúp mình với hehe có các thành phần A1, B1... như vậy sau này mình áp dụng vào công việc của mình, thay A1 bằng hàm gì đó chẳng hạn
Cảm ơn bạn nhiều nhé
 
Upvote 0
Mã:
Dim key As String

arr = Sheets("SL").[b6:b1000]

For i = 1 To 10000
    If arr(i, 1) = "" Then Exit For
    key = Mid(arr(i, 1), 1, 1)
    Select Case key
        Case "L"
            j = j + 1
            arrL(j, 1) = j
            arrL(j, 2) = arr(i, 1)
        Case "K"
            m = m + 1
            arrK(m, 1) = m
            arrK(m, 2) = arr(i, 1)
        Case "T"
            n = n + 1
            arrT(n, 1) = n
            arrT(n, 2) = arr(i, 1)
    End Select
Next
With Sheets("Lop")
    .[a6:b10000].ClearContents
    If j Then .[a6].Resize(j, 2) = arrL
End With
With Sheets("Khoi")
    .[a6:b10000].ClearContents
    If m Then .[a6].Resize(m, 2) = arrK
End With
With Sheets("Truong")
    .[a6:b10000].ClearContents
    If n Then .[a6].Resize(n, 2) = arrT
End With
End Sub
 
Upvote 0

File đính kèm

  • Tách sheet theo cột phụ.xlsm
    26.9 KB · Đọc: 13
Upvote 0
Cảm ơn bạn nhiều nhé, kiến thức thật là vô tận bạn nhở :)
Bài đã được tự động gộp:

Mã:
Dim key As String

arr = Sheets("SL").[b6:b1000]

For i = 1 To 10000
    If arr(i, 1) = "" Then Exit For
    key = Mid(arr(i, 1), 1, 1)
    Select Case key
        Case "L"
            j = j + 1
            arrL(j, 1) = j
            arrL(j, 2) = arr(i, 1)
        Case "K"
            m = m + 1
            arrK(m, 1) = m
            arrK(m, 2) = arr(i, 1)
        Case "T"
            n = n + 1
            arrT(n, 1) = n
            arrT(n, 2) = arr(i, 1)
    End Select
Next
With Sheets("Lop")
    .[a6:b10000].ClearContents
    If j Then .[a6].Resize(j, 2) = arrL
End With
With Sheets("Khoi")
    .[a6:b10000].ClearContents
    If m Then .[a6].Resize(m, 2) = arrK
End With
With Sheets("Truong")
    .[a6:b10000].ClearContents
    If n Then .[a6].Resize(n, 2) = arrT
End With
End Sub
chạy báo lỗi bạn ơi!
 
Upvote 0
Cảm ơn bạn nhiều nhé, kiến thức thật là vô tận bạn nhở :)
Nếu bạn thực sự quan tâm đến việc trau dồi kiến thức thì GPE đúng là nơi bạn có thể học hỏi được nhiều điều đó. Tuy nhiên, GPE có nét văn hóa riêng; đó là yêu cầu các thành viên mới phải học cách đặt tiêu đề, cách đặt câu hỏi (Tiên học lễ, hậu học văn). Về cái này bạn đọc lại nội quy và tham khảo các bài viết nhận được nhiều trợ giúp là sẽ hiểu.
 
Upvote 0
Bạn ơi, có cái này phiền bạn (lỗi do mình chưa diễn rõ)
1. A1= A2....=A và B1= B2... =B, C...... G1=G2...=G
2. A, B...G của Sheet Lop # Sheet Khoi # Sheet Truong
Phiền bạn giúp mình chỉnh lại code với :)
 
Upvote 0
Xin chào các anh chị (thầy), mình cần đoạn code lọc dữ liệu như file đính kèm, mong các anh, chị chỉ giáo giúp ạ, Xin chân trành cảm ơn nhiều
Nội dung: có Sheet SL, nội dung bào gồm Lớp, Trường, khối, bây giờ muốn lọc Sheet Lớp, Sheet Trường, Sheet khối riêng.
Góp ý cho bạn:
1/ Để thuận tiện trong việc áp dụng code cho File đang theo dõi, cách tốt nhất là bạn nên đưa File có tiêu đề thực tế (tên trường thì bạn có thể giả định trường A, B, C gì đó).
2/ Như File bài 1 thì nhiều thành viên sẽ ngại giúp, vì khi giúp xong bạn xong, khi bạn áp dụng vào thực tế không được lại hỏi và lại phải sửa code nhiều lần nên mọi người rất ngại điều này.
 
Lần chỉnh sửa cuối:
Upvote 0
Mình làm y chang ra cái ban đầu ban đăng lên. Còn bạn viết thế này
1. A1= A2....=A và B1= B2... =B, C...... G1=G2...=G
2. A, B...G của Sheet Lop # Sheet Khoi # Sheet Truong
Thì thực sự không hiểu bạn đang muốn gì???
Mình xin mượn 1 câu châm ngôn của các anh, chị trên GPE: Bạn hãy học cách viết để người khác hiểu, đừng viết cái chỉ mình bạn hiểu
!!@@Thôi nhé, chào bạn
 
Lần chỉnh sửa cuối:
Upvote 0
Mình làm y chang ra cái ban đầu ban đăng lên. Còn bạn viết thế này

Thì thực sự không hiểu bạn đang muốn gì???
Mình xin mượn 1 câu châm ngôn của các anh, chị trên GPE: Bạn hãy học cách viết để người khác hiểu, đừng viết cái chỉ mình bạn hiểu
!!@@Thôi nhé, chào bạn
hehe bạn khó tính quá, k biết mới học thôi :)
Ý mình là như file kèm theo thôi
 

File đính kèm

  • loc du lieu.xls
    34 KB · Đọc: 9
Upvote 0
hehe bạn khó tính quá, k biết mới học thôi :)
Ý mình là như file kèm theo thôi
Góp ý cho bạn:
1/ Bài 12 người ta góp ý đúng "Viết để người khác hiểu, đừng viết cái chỉ mình bạn hiểu", sao bạn nêu là khó tính quá.
2/ Bài 11 tôi cũng chả hiểu bạn muốn cái gì nên mới góp ý là "Cách tốt nhất là bạn nên đưa File có tiêu đề thực tế (tên trường thì bạn có thể giả định trường A, B, C gì đó)".
3/ Vậy sheet nào chứa dữ liệu? Muốn tách được các sheet thì người ta phải hiểu cột nào là tên trường, cột nào là tên khối, cột nào là tên lớp. File bạn không có tiêu đề thì biểt dựa vào cột nào để tách theo yêu cầu khi dữ liệu là A, B, C, D.......?????
 
Lần chỉnh sửa cuối:
Upvote 0
Góp ý cho bạn:
1/ Bài 12 người ta góp ý đúng "Viết để người khác hiểu, đừng viết cái chỉ mình bạn hiểu", sao bạn nêu là khó tính quá.
2/ Bài 11 tôi cũng chả hiểu bạn muốn cái gì nên mới góp ý là "Cách tốt nhất là bạn nên đưa File có tiêu đề thực tế (tên trường thì bạn có thể giả định trường A, B, C gì đó)".
3/ Vậy sheet nào chứa dữ liệu? Muốn tách được các sheet thì người ta phải hiểu cột nào là tên trường, cột nào là tên khối, cột nào là tên lớp. File bạn không có tiêu đề thì biểt dựa vào cột nào để tách theo yêu cầu khi dữ liệu là A, B, C, D.......?????
Cảm ơn bạn góp ý, cái này mình đang học chứ k phải nhờ diễn đàn giúp file cụ thể nên k có file gửi lên
 
Upvote 0
Cảm ơn bạn góp ý, cái này mình đang học chứ k phải nhờ diễn đàn giúp file cụ thể nên k có file gửi lên
Học hay thử nghiệm thì cũng phải cụ thể, rõ ràng muốn làm cái gì ở sheet nào, muốn tách cái gì ở cột nào thì phải cụ thể mỗi lần tách là 1 loại.
Nếu để chung tên trường, tên khối, tên lớp vào 1 cột như sheet SL thì khi tách sheet cùng lúc nó sẽ loạn cào cào.
Còn muốn tham khảo code thì đọc một số bài viết ở Link sau:
https://www.giaiphapexcel.com/diendan/search/204992/?q=tách+sheet&c[title_only]=1&o=date
 
Upvote 0
Upvote 0
Web KT
Back
Top Bottom