Tách 1 sheet thành nhiều sheet theo điều kiện

Liên hệ QC

nguyendinhtutw

Thành viên chính thức
Tham gia
17/4/17
Bài viết
73
Được thích
3
Giới tính
Nam
Dear các bác,
Em có 1 file excel như đính kèm, bây giờ em muốn tách sheet "Tong hop" thành các sheet (tạm gọi là "sheet con") dựa theo tên của người quản lý sao cho:
- Khi thay đổi nội dung ở các sheet con (Chỉnh sửa nội dung trong cell, insert/delete dòng) thì sheet "Tong hop" cũng thay đổi theo.
Các bác giúp em với ạ. Em cảm ơn các bác!
Trân trọng,
 

File đính kèm

Anh ơi , hỗ trợ giúp em được không ạ ?
Góp ý cho bạn:
1/ Bạn đã đăng bài trong chủ đề tách sheet thì bạn nên đính kèm File và tiếp tục hỏi ở đây chứ không nên mở Topic mới vì có thể sẽ vi phạm nội quy.
2/ Cách hỏi của bạn trống không thế này "hỗ trợ giúp em được không ạ ?" là thiếu tôn trọng với các tành viên trên diễn đàn.
3/ Khi hỏi thì nên cụ thể việc tách sheet của bạn thì dựa vào cột nào? Của sheet nào?
 
Upvote 0
Tôi thấy cảnh bảo của @hpkhuong không sai đâu, bạn đang làm ngược đấy.
Bạn nên dùng sheets Tổng hợp để theo dõi mọi số liệu, sau mỗi lần thay đổi số liệu, bạn cập nhật lại vào các Sheet con là cách hay hơn.
Tôi sẽ làm qua các bước sau:
- Bước 1: Dùng lệnh Offset để tạo Name động cho vùng dữ liệu của Bảng tổng hợp
- Bước 2: Tạo 1 sheet PivotTable để tạo Pivot Table
- Bước 3: Dùng code của @kyo để bảng Pivot Table có thể tự động cập nhật khi dữ liệu nguồn thay đổi
- Bước 4: Dùng code của @be09 để tách sheets theo Pivot Table
Khi dữ liệu ở Sheet Tong hop thay đổi, bạn click lại nút Tách Sheets là các dữ liệu con sẽ thay đổi theo
Bạn xem file đính kèm nhé!
Em đang gặp phải một vấn đề kỳ lạ khi chạy thử file đính kèm ở bài viết #14. Chạy file thì không báo lỗi nhưng có lúc thì sheet được tách ra sẽ có tên là "Nguyễn Văn A", "Nguyễn Văn B", "Nguyễn Văn C" nhưng có lúc sheet tách ra lại có tên là "Detail1", "Detail2", "Detail3". Tên sheet tách ra sẽ được đổi tên theo một trong hai kiểu trên.
PHP:
Sub DoiTen_SheetTach()
Dim sht As Worksheet

    For Each sht In ThisWorkbook.Worksheets
    On Error Resume Next
        If sht.Name <> "PivotTable" And sht.Name <> "Tong hop" And sht.Name <> "PivotTable" Then
            sht.Name = sht.Range("C2")
            sht.Activate
            Cells.EntireColumn.AutoFit
            Sheets("PivotTable").Select
        End If
    Next sht
End Sub
Em đang nguyên cứu để tự động đổi tên sheet từ đoạn code của bác @vanthinh3101 để áp dụng vào công việc nhưng kết quả chạy thử làm em lú lẫn luôn. Mong mọi người xem bài có thể giúp em tìm ra nguyên nhân kết quả đổi tên không thống nhất như vậy ạ.
Em xin cảm ơn.
 
Upvote 0
Em đang gặp phải một vấn đề kỳ lạ khi chạy thử file đính kèm ở bài viết #14. Chạy file thì không báo lỗi nhưng có lúc thì sheet được tách ra sẽ có tên là "Nguyễn Văn A", "Nguyễn Văn B", "Nguyễn Văn C" nhưng có lúc sheet tách ra lại có tên là "Detail1", "Detail2", "Detail3". Tên sheet tách ra sẽ được đổi tên theo một trong hai kiểu trên.
PHP:
Sub DoiTen_SheetTach()
Dim sht As Worksheet

    For Each sht In ThisWorkbook.Worksheets
    On Error Resume Next
        If sht.Name <> "PivotTable" And sht.Name <> "Tong hop" And sht.Name <> "PivotTable" Then
            sht.Name = sht.Range("C2")
            sht.Activate
            Cells.EntireColumn.AutoFit
            Sheets("PivotTable").Select
        End If
    Next sht
End Sub
Em đang nguyên cứu để tự động đổi tên sheet từ đoạn code của bác @vanthinh3101 để áp dụng vào công việc nhưng kết quả chạy thử làm em lú lẫn luôn. Mong mọi người xem bài có thể giúp em tìm ra nguyên nhân kết quả đổi tên không thống nhất như vậy ạ.
Em xin cảm ơn.
Vụ đổi tên sheet thì bạn nên hiểu đoạn này "sht.Name = sht.Range("C2")"
Tên sheet sẽ được đặt theo Range("C2") tại sheet cần đổi.
 
Upvote 0
Vụ đổi tên sheet thì bạn nên hiểu đoạn này "sht.Name = sht.Range("C2")"
Tên sheet sẽ được đặt theo Range("C2") tại sheet cần đổi.
Dạ đúng rồi ạ, nên nếu đúng theo lý thuyết thì sẽ phải đổi tên sheet thống nhất là "Nguyễn Văn A", "Nguyễn Văn B", Nguyễn Văn C" là kết quả đúng. Nhưng không hiểu vì sao lại có trường hợp đổi tên thứ 2 là sheet thay vì đổi tên như trên thì lại đổi tên thành "Detail1", "Detail2", "detail3" mà trong table hàng cột đều không có giá trị"Detail1", "Detail2", "Detail3" để mà gán tên cho sheet, giống như là trên trời rơi xuống vậy á anh.
 
Upvote 0
Dạ đúng rồi ạ, nên nếu đúng theo lý thuyết thì sẽ phải đổi tên sheet thống nhất là "Nguyễn Văn A", "Nguyễn Văn B", Nguyễn Văn C" là kết quả đúng. Nhưng không hiểu vì sao lại có trường hợp đổi tên thứ 2 là sheet thay vì đổi tên như trên thì lại đổi tên thành "Detail1", "Detail2", "detail3" mà trong table hàng cột đều không có giá trị"Detail1", "Detail2", "Detail3" để mà gán tên cho sheet, giống như là trên trời rơi xuống vậy á anh.
thế bạn phải chạy debug mới biết được code lấy dữ liệu như thế nào.
Không có file mà chỉ nhìn code, mình đoán mò được thế thôi.
 
Upvote 0
Web KT

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

Back
Top Bottom