Từ sheet tổng tách thành nhiều sheet theo yêu cầu

Liên hệ QC
Tôi tuân thủ nội quy khi đăng bài

charactor5566

Thành viên mới
Tham gia
7/1/23
Bài viết
37
Được thích
3
Em chào anh/chị
Em có sheet tổng hợp dữ liệu. Bây giờ em muốn tách thành các sheet nhỏ theo mã hàng. Mong anh/chị giúp đỡ ạ. Em cảm ơn.
 

File đính kèm

  • CHIA_SHEET.xlsm
    16.9 KB · Đọc: 28
Em chào anh/chị
Em có sheet tổng hợp dữ liệu. Bây giờ em muốn tách thành các sheet nhỏ theo mã hàng. Mong anh/chị giúp đỡ ạ. Em cảm ơn.
Bạn tự thêm phần xóa các sheet con trước khi chạy code nhé.
Mã:
Option Explicit
Sub ABC()
    Dim Dic As Object, Rng As Range, sArr(), i&
    Set Dic = CreateObject("Scripting.dictionary")
    With Sheets("TONG")
        Set Rng = .Range("B2:C" & .Range("B" & Rows.Count).End(3).Row)
        sArr = Rng.Value
        For i = 2 To UBound(sArr)
            If Dic.exists(Split(sArr(i, 1), "-")(0)) = False Then
                Dic.Add Split(sArr(i, 1), "-")(0), ""
                Sheets.Add after:=Sheets(Sheets.Count)
                Rng.AutoFilter 1, Split(sArr(i, 1), "-")(0) & "-*"
                Rng.Copy ActiveSheet.Range("B2")
                ActiveSheet.Name = Split(sArr(i, 1), "-")(0)
            End If
        Next
        If .AutoFilterMode = True Then .AutoFilterMode = False
    End With
End Sub
 
Lần chỉnh sửa cuối:
Upvote 0
Bạn tự thêm phần xóa các sheet con trước khi chạy code nhé.
Mã:
Option Explicit
Sub ABC()
    Dim Dic As Object, Rng As Range, sArr(), i&
    Set Dic = CreateObject("Scripting.dictionary")
    With Sheets("TONG")
        Set Rng = .Range("B2:C" & .Range("B" & Rows.Count).End(3).Row)
        sArr = Rng.Value
        For i = 2 To UBound(sArr)
            If Dic.exists(Split(sArr(i, 1), "-")(0)) = False Then
                Dic.Add Split(sArr(i, 1), "-")(0), ""
                Sheets.Add after:=Sheets(Sheets.Count)
                Rng.AutoFilter 1, Split(sArr(i, 1), "-")(0) & "*"
                Rng.Copy ActiveSheet.Range("B2")
                ActiveSheet.Name = Split(sArr(i, 1), "-")(0)
            End If
        Next
        If .AutoFilterMode = True Then .AutoFilterMode = False
    End With
End Sub
Code này nếu thêm mã MI... thì sẽ thừa.
 
Upvote 0
Vấn đè này thì dùng Advanced Filter chứ ai lại cốt kiếc.
Muốn êm hơn thì dùng Data Model, Calculated Column và Power Pivot.
Hay là lười biếng, chỉ muốn nút bấm một phát lã xong?
 
Lần chỉnh sửa cuối:
Upvote 0
Bạn tự thêm phần xóa các sheet con trước khi chạy code nhé.
Mã:
Option Explicit
Sub ABC()
...
End Sub
Tôi nghĩ làm thế này nhanh hơn, khỏi phải đit sần, filter:
- Sort trước
- Chạy từ đầu đến cuối 1 lượt, tới dòng nào hết mã hàng thì tạo sheet mới chép khối thả sang.
 
Upvote 0
Em chào anh/chị
Em có sheet tổng hợp dữ liệu. Bây giờ em muốn tách thành các sheet nhỏ theo mã hàng. Mong anh/chị giúp đỡ ạ. Em cảm ơn.
Thiết kế các table, sau đó tạo data model, rồi dùng Power pivot, power bi để phân tích. Code VBA chỉ có giá trị cho một câu hỏi cụ thể, nó không thể tùy biến nhanh hay cho biết các gợi ý giải quyết vấn đề.
 
Upvote 0
Thiết kế các table, sau đó tạo data model, rồi dùng Power pivot, power bi để phân tích. Code VBA chỉ có giá trị cho một câu hỏi cụ thể, nó không thể tùy biến nhanh hay cho biết các gợi ý giải quyết vấn đề.
Kinh nghiệm nhiều năm với gPE cho tôi biết 99% ngwoif hỏi bài chỉ muốn tiện dụng bấm một nút là ra theo ý muốn. Bất cú bạn ra phuonwg án nào khác thì người ta vẫn có thể đưa lại cớ để viện rằng truonwgf hợp của mình đăc thù đến nổi khong giải quyết ddwonwgf bằng ddwonwgf lối thông thường. (uy rằng đa số cũng chả hiểu chính đề bài của mình, nhưng cái thói quen viện cớ khong bao giờ bỏ.

Bài #5 là tôi nhắc cho các bạn khác, tập tếnh bước vào Excel, vbij cái hào nhoanbgs của VBA nó ám ảnh quá cho nên việc gì hơi khó chút là VBA.

GPE ra đã hơn 15 năm. Hồi xưa Excel còn nhiều giới hạn cho nên VBA giúp giải quyết được nhiều vấn đề phức tạp.
Ngày nay, MS bổ sung vào Excel rất nhiều chức nằng quan trọng. Nhưng chính GPE cũng không khuyến khích sử dụng chúng mà lại thu về cái mảnh chăn an toàn VBA.

Cứ tư tưởng như vậy thì bao giờ mới tiến hóa?
 
Upvote 0
Dạ cảm ơn các anh đã giúp và góp ý kiến ạ. File của em hơn 5000 dòng, em Filter theo mã rồi copy cũng được.
 
Upvote 0
Web KT

Bài viết mới nhất

Back
Top Bottom