Code tách data để sử dụng Pivot Table

thanhduytlv

Thành viên mới
Tham gia ngày
4 Tháng bảy 2010
Bài viết
34
Được thích
4
Điểm
365
Kính chào cả nhà GPE.
Mình cần tách dữ liệu từ sheet "DL" theo nhu cầu:
Cột A" Mã hàng, Cột B: Tên hàng, Cột C: quy cách, Cột D: giá.
5 cột còn lại là cột sản lượng.
Yêu cầu là:
Tách dữ liệu gồm các cột A+B+C+D và thêm F
Tiếp theo là A+B+C+D và thêm E
Cứ như thế đến khi hết cột
( Dữ liệu có thể tăng thêm theo hàng và cột )
Mục đích: Để làm báo cáo bằng Pivot Table
Rất mong cả nhà có thể giúp dùm sớm.
Cám ơn cả nhà.
 

File đính kèm

Ba Tê

Cạo Rồi Khỏi Gội
Tham gia ngày
5 Tháng năm 2009
Bài viết
11,253
Được thích
16,015
Điểm
1,860
Tuổi
60
Nơi ở
An Giang
Tách dữ liệu gồm các cột A+B+C+D và thêm F
Tiếp theo là A+B+C+D và thêm E
Cứ như thế đến khi hết cột
Là sao? Hiểu chết liền! Hên xui không biết và không muốn biết nữa đâu.
Sheet kết quả tên là "GPE"
PHP:
Option Explicit

Public Sub sGpe()
Dim sArr(), dArr(), I As Long, J As Long, N As Long, K As Long, R As Long, Col As Long
Col = Sheets("SL").Range("E2").End(xlToRight).Column
sArr = Sheets("SL").Range("A2", Sheets("SL").Range("A2").End(xlDown)).Resize(, Col).Value
R = UBound(sArr)
ReDim dArr(1 To R * Col, 1 To 6)
For N = 5 To Col
    For I = 2 To R
        K = K + 1
        For J = 1 To 4
            dArr(K, J) = sArr(I, J)
        Next J
        dArr(K, 5) = sArr(I, N)
        dArr(K, 6) = sArr(1, N)
    Next I
Next N
Sheets("GPE").Range("A2").Resize(1000000, 6).ClearContents
Sheets("GPE").Range("A2").Resize(K, 6) = dArr
End Sub
 
Lần chỉnh sửa cuối:

snow25

Thành viên gắn bó
Tham gia ngày
24 Tháng bảy 2018
Bài viết
2,350
Được thích
2,176
Điểm
360
Kính chào cả nhà GPE.
Mình cần tách dữ liệu từ sheet "DL" theo nhu cầu:
Cột A" Mã hàng, Cột B: Tên hàng, Cột C: quy cách, Cột D: giá.
5 cột còn lại là cột sản lượng.
Yêu cầu là:
Tách dữ liệu gồm các cột A+B+C+D và thêm F
Tiếp theo là A+B+C+D và thêm E
Cứ như thế đến khi hết cột
( Dữ liệu có thể tăng thêm theo hàng và cột )
Mục đích: Để làm báo cáo bằng Pivot Table
Rất mong cả nhà có thể giúp dùm sớm.
Cám ơn cả nhà.
Sao không làm báo cáo bằng VBA luôn mà phải chuyển qua Pivot Table.
 

hpkhuong

######
Tham gia ngày
20 Tháng năm 2011
Bài viết
4,612
Được thích
4,048
Điểm
560
Nơi ở
Quận 2 - TP.HCM
Sao không làm báo cáo bằng VBA luôn mà phải chuyển qua Pivot Table.
Dạ VBA em không biết ạ!
Làm được bằng Pivot mới là bờ rồ...
Ai làm được Pivot mà ra tất tần tật báo cáo thì người đó mới bờ rồ hơn với vợ ba...
 

be09

TNMT_Đồng Nai
Tham gia ngày
9 Tháng tư 2011
Bài viết
8,395
Được thích
8,163
Điểm
560
Tuổi
62
Nơi ở
Biên Hòa, Đồng Nai
Dạ VBA em không biết ạ!
Làm được bằng Pivot mới là bờ rồ...
Ai làm được Pivot mà ra tất tần tật báo cáo thì người đó mới bờ rồ hơn với vợ ba...
Cái này chịu khó mò một tí thì làm được (cơ bản có chịu khó mò hay không).
 

hpkhuong

######
Tham gia ngày
20 Tháng năm 2011
Bài viết
4,612
Được thích
4,048
Điểm
560
Nơi ở
Quận 2 - TP.HCM
Cái này chịu khó mò một tí thì làm được (cơ bản có chịu khó mò hay không).
Anh có chắc là Pivot làm được tất không?
Tất nhiên là có thể được...,nhưng:
Làm báo cáo họ quan trọng cái tính đẹp mắt..., họ thích trình bày này nọ nữa chứ không phải chỉ mỗi con số tính toán ra trên đó.
 

hml89

#Học dốt#
Tham gia ngày
14 Tháng chín 2012
Bài viết
382
Được thích
295
Điểm
410
Anh có chắc là Pivot làm được tất không?
Tất nhiên là có thể được...,nhưng:
Làm báo cáo họ quan trọng cái tính đẹp mắt..., họ thích trình bày này nọ nữa chứ không phải chỉ mỗi con số tính toán ra trên đó.
Cái này tôi thấy đúng, vì cùng một bảng phân tích, nhưng rõ ràng ai làm đẹp mắt hơn thì được đánh giá cao hơn.
 

be09

TNMT_Đồng Nai
Tham gia ngày
9 Tháng tư 2011
Bài viết
8,395
Được thích
8,163
Điểm
560
Tuổi
62
Nơi ở
Biên Hòa, Đồng Nai
Cái này tôi thấy đúng, vì cùng một bảng phân tích, nhưng rõ ràng ai làm đẹp mắt hơn thì được đánh giá cao hơn.
Cũng chưa chắc đâu.
Thông thường mấy ông Bộ khi ban hành một thông tư thì đính kèm theo nó là một loạt các bảng, biểu, khi làm báo cáo thì đơn vị thực hiện việc bắc buộc phải làm theo các bảng, biểu này. Vì vậy, cần phải thiết kế File theo dõi thế nào đó để thuận tiện cho việc tổng hợp và đưa kết quả vào các bảng, biểu này một cách nhanh nhất.

Lãnh đạo thường đánh giá năng lực dựa vào kết quả làm việc và việc thực hiện báo cáo nhanh hay chậm, chứ không ai đánh giá việc làm đẹp (làm đẹp chỉ là việc trang trí hoa lá cành cho dễ nhìn mà thôi).
 
Lần chỉnh sửa cuối:

hml89

#Học dốt#
Tham gia ngày
14 Tháng chín 2012
Bài viết
382
Được thích
295
Điểm
410
Cũng chưa chắc đâu.
Thông thường mấy ông Bộ khi ban hành một thông tư thì đính kèm theo nó là một loạt các bảng, biểu, khi làm báo cáo thì đơn vị thực hiện việc bắc buộc phải làm theo các bảng, biểu này. Vì vậy, cần phải thiết kế File theo dõi thế nào đó để thuận tiện cho việc tổng hợp và đưa kết quả vào các bảng, biểu này một cách nhanh nhất.

Lãnh đạo thường đánh giá năng lực dựa vào kết quả làm việc và việc thực hiện báo cáo nhanh hay chậm, chứ không ai đánh giá việc làm đẹp (làm đẹp chỉ là việc trang trí hoa lá cành cho dễ nhìn mà thôi).
Tôi cũng ước gặp được lãnh đạo như vậy đó. Chứ giờ tôi cũng lớn tuổi rồi, cứ so sánh lọ kia với bọn trẻ, thật là rầy quá đi!
 

be09

TNMT_Đồng Nai
Tham gia ngày
9 Tháng tư 2011
Bài viết
8,395
Được thích
8,163
Điểm
560
Tuổi
62
Nơi ở
Biên Hòa, Đồng Nai
Tôi cũng ước gặp được lãnh đạo như vậy đó. Chứ giờ tôi cũng lớn tuổi rồi, cứ so sánh lọ kia với bọn trẻ, thật là rầy quá đi!
Lãnh đạo bây giờ nó khác xưa rất nhiều nó không cần người giỏi mà chỉ cần người biết nghe nên có làm chậm đôi chút cũng không thành vấn đề.

Nếu bạn nêu là người lớn tuổi là so với mấy em nhỏ trong đơn vị, tôi tham gia diễn đàn cho vui và để giết thời gian chứ tôi đã nghĩ hưu 3 năm rồi.
 

thanhduytlv

Thành viên mới
Tham gia ngày
4 Tháng bảy 2010
Bài viết
34
Được thích
4
Điểm
365
Là sao? Hiểu chết liền! Hên xui không biết và không muốn biết nữa đâu.
Sheet kết quả tên là "GPE"
PHP:
Option Explicit

Public Sub sGpe()
Dim sArr(), dArr(), I As Long, J As Long, N As Long, K As Long, R As Long, Col As Long
Col = Sheets("SL").Range("E2").End(xlToRight).Column
sArr = Sheets("SL").Range("A2", Sheets("SL").Range("A2").End(xlDown)).Resize(, Col).Value
R = UBound(sArr)
ReDim dArr(1 To R * Col, 1 To 6)
For N = 5 To Col
    For I = 2 To R
        K = K + 1
        For J = 1 To 4
            dArr(K, J) = sArr(I, J)
        Next J
        dArr(K, 5) = sArr(I, N)
        dArr(K, 6) = sArr(1, N)
    Next I
Next N
Sheets("GPE").Range("A2").Resize(1000000, 6).ClearContents
Sheets("GPE").Range("A2").Resize(K, 6) = dArr
End Sub
Cám ơn bạn Ba Tê rất nhiều.
Tuy chưa hiểu hết ý nhưng vẫn viết đúng (90%) yêu cầu. Khâm phục bạn quá.
Không biết bạn bao nhiêu tuổi nhưng rất đáng gọi là " thầy".
Mình năm năm 39 tuổi.
Rất cám ơn thầy nhiều lắm.
 
Top Bottom