Chuyển đổi dữ liệu từ tổng quát sang chi tiết

Liên hệ QC

kimhuynh

Thành viên mới
Tham gia
31/12/09
Bài viết
32
Được thích
10
Nhờ các bác giúp em viết một Marco để chuyển đổi từ dữ liệu báo cáo tổng quát sang dữ liệu chi tiết giúp em. Em có dùng thử các hàm để làm, nhưng dữ liệu nhiều cột và nhiều dòng quá, nên không làm nổi.
Xin xem giúp Attach file excel 2007 convert data. Vùng màu xanh là data tổng quát, vùng màu vàng là date em muốn chạy ra như vậy, em để chung 1 sheet cho các bro dễ xem.
Các bác giúp giùm nhé.
 

File đính kèm

Nhờ các bác giúp em viết một Marco để chuyển đổi từ dữ liệu báo cáo tổng quát sang dữ liệu chi tiết giúp em. Em có dùng thử các hàm để làm, nhưng dữ liệu nhiều cột và nhiều dòng quá, nên không làm nổi.
Xin xem giúp Attach file excel 2007 convert data. Vùng màu xanh là data tổng quát, vùng màu vàng là date em muốn chạy ra như vậy, em để chung 1 sheet cho các bro dễ xem.
Các bác giúp giùm nhé.
Nếu cấu trúc dữ liệu đúng như thế, bạn có thể sử dụng code này:
Mã:
Private Sub Worksheet_Activate()
    Application.ScreenUpdating = False
    Dim Vung As Range, Ngay As Range, I As Long, Ws As Worksheet
    [b5:d10000].ClearContents
    Set Ws = Sheets("sheet1")
    Set Ngay = Ws.Range(Ws.[b1], Ws.[aa1].End(xlToLeft))
    Set Vung = Ws.Range(Ws.[a2], Ws.[a10000].End(xlUp))
        For I = 1 To Ngay.Columns.Count
            With [b10000].End(xlUp)(2)
                .Resize(Vung.Rows.Count) = Ngay(I)
                .Offset(, 1).Resize(Vung.Rows.Count) = Vung.Value
                .Offset(, 2).Resize(Vung.Rows.Count) = Vung.Offset(, I).Value
            End With
        Next
     Application.ScreenUpdating = True
End Sub
Bạn cứ thêm hàng, cột, hoặc sửa dữ liệu ở sheet 1, chọn sheet2 xem kết quả
Thân
 

File đính kèm

Upvote 0
Nhờ các bác giúp em viết một Marco để chuyển đổi từ dữ liệu báo cáo tổng quát sang dữ liệu chi tiết giúp em. Em có dùng thử các hàm để làm, nhưng dữ liệu nhiều cột và nhiều dòng quá, nên không làm nổi.
Xin xem giúp Attach file excel 2007 convert data. Vùng màu xanh là data tổng quát, vùng màu vàng là date em muốn chạy ra như vậy, em để chung 1 sheet cho các bro dễ xem.
Các bác giúp giùm nhé.
Bài này tôi dùng PivotTable trong vòng 5s là xong

untitled.JPG
 

File đính kèm

Upvote 0
Cảm ơn anh concogia và anh NDU nhiều lắm.
1. Em thích đoạn code của anh Concogia nhiều hơn, vì dữ liệu có thể tự động chuyển đổi ngay lập tức.
2. Pivot của anh NDU cũng rất nhanh, tuy nhiên nếu thêm dòng hoặc cột thì em phải change Source lại nữa, và phải Refresh nữa. Mình có cách nào tự động cập nhật không anh nhỉ?

cám ơn 2 anh một lần nữa.
 
Upvote 0
2. Pivot của anh NDU cũng rất nhanh, tuy nhiên nếu thêm dòng hoặc cột thì em phải change Source lại nữa, và phải Refresh nữa. Mình có cách nào tự động cập nhật không anh nhỉ?

cám ơn 2 anh một lần nữa.
Change Source thì không cần, vì khi chọn vùng cho PivotTable, bạn chỉ cần chọn dư ra là được
Còn Refresh thì... Chỉ mỗi cái Right Click, chọn Refresh, thiết nghĩ đâu có tốn công ---> Vấn đề ở đây là công cụ có sẳn do bác Bill viết luôn mạnh hơn tất cả những thứ do ta tạo ra
Còn làm biếng nữa thì... record macro quá trình ta là cái màu đỏ ở trên, mỗi khi muốn cập nhật là NHẤN NÚT
 
Lần chỉnh sửa cuối:
Upvote 0
Cảm ơn anh NDU đã giải thích. Em test lại cách của anh cũng được rồi.
Tuy nhiên còn 1 câu hỏi này nữa, em tạo Pivot table dạng như anh, tuy nhiên các cột Ngày (ví dụ 26-MAR) thì nó không ghi rút gọn là 26-MAR mà ghi là Sum of 26-MAR , em vào Pivot Option tìm cách chỉnh mãi mà không biết nó nằm ở đâu?
Nhờ anh chỉ giùm nhé (thông cảm vì em tự học Excel nên không được đào tạo bài bản).
 
Upvote 0
Cảm ơn anh NDU đã giải thích. Em test lại cách của anh cũng được rồi.
Tuy nhiên còn 1 câu hỏi này nữa, em tạo Pivot table dạng như anh, tuy nhiên các cột Ngày (ví dụ 26-MAR) thì nó không ghi rút gọn là 26-MAR mà ghi là Sum of 26-MAR , em vào Pivot Option tìm cách chỉnh mãi mà không biết nó nằm ở đâu?
Nhờ anh chỉ giùm nhé (thông cảm vì em tự học Excel nên không được đào tạo bài bản).
Tự sửa lại bằng tay thôi
 
Upvote 0
Nếu cấu trúc dữ liệu đúng như thế, bạn có thể sử dụng code này:
Mã:
Private Sub Worksheet_Activate()
    Application.ScreenUpdating = False
    Dim Vung As Range, Ngay As Range, I As Long, Ws As Worksheet
    [b5:d10000].ClearContents
    Set Ws = Sheets("sheet1")
    Set Ngay = Ws.Range(Ws.[b1], Ws.[aa1].End(xlToLeft))
    Set Vung = Ws.Range(Ws.[a2], Ws.[a10000].End(xlUp))
        For I = 1 To Ngay.Columns.Count
            With [b10000].End(xlUp)(2)
                .Resize(Vung.Rows.Count) = Ngay(I)
                .Offset(, 1).Resize(Vung.Rows.Count) = Vung.Value
                .Offset(, 2).Resize(Vung.Rows.Count) = Vung.Offset(, I).Value
            End With
        Next
     Application.ScreenUpdating = True
End Sub
Bạn cứ thêm hàng, cột, hoặc sửa dữ liệu ở sheet 1, chọn sheet2 xem kết quả
Thân

Cho em hỏi thêm , nếu mình muốn chèn thêm 1 cột cạnh cột city (ví dụ như là mã city ) thì phải sửa code lại như thế nào vậy bác? kết quả hiển thị là 4 cột :Ngay, maCity, City, Sale Revenue.
 
Lần chỉnh sửa cuối:
Upvote 0
Cho em hỏi thêm , nếu mình muốn chèn thêm 1 cột cạnh cột city (ví dụ như là mã city ) thì phải sửa code lại như thế nào vậy bác? kết quả hiển thị là 4 cột :Ngay, maCity, City, Sale Revenue.
Thế MaCity trong dữ liệu gốc ở sheet1 được bố trí ra sao, phải nhìn thấy bảng dữ liệu gốc mới biết phải làm như thế nào bạn ạ, chứ chỉ suy đoán mình sợ làm "trật lấc". Híc
Thân
 
Upvote 0

File đính kèm

Upvote 0
Web KT

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

Back
Top Bottom