Tạo báo cáo giống như Pivot Table

Liên hệ QC

darknightno007

Thành viên hoạt động
Tham gia
26/11/15
Bài viết
180
Được thích
54
Nghề nghiệp
Kế toán
Mọi người giúp em làm báo cáo như file đính kèm.
Sử dụng VBA để tạo báo cáo công nợ theo điều kiện là trong 1 khoảng thời gian (Từ ngày .... đến ngày ...).
Em mò suốt bữa h mà không biết sao.
 

File đính kèm

  • Pivot Table.xlsm
    62.1 KB · Đọc: 32
Mọi người giúp em làm báo cáo như file đính kèm.
Sử dụng VBA để tạo báo cáo công nợ theo điều kiện là trong 1 khoảng thời gian (Từ ngày .... đến ngày ...).
Em mò suốt bữa h mà không biết sao.
Ý của bạn có phải như thế này ?
xem file đính kèm.
 

File đính kèm

  • Pivot Table.xlsm
    233 KB · Đọc: 86
Upvote 0
Đúng rồi bạn.
Mình cảm ơn bạn nha.
Để mình coi lại code. có gì không hiểu mình hỏi thêm bạn.
Nếu được cho mình xin skype.
hoặc add skype của mình: nguyen.tran655
 
Upvote 0
Bạn cho mình hỏi tý là dùng điều kiện gì để khi chọn ngày ngoài vùng dữ liệu khi chạy không báo lỗi.Cảm ơn
 
Upvote 0
Ý của bạn có phải như thế này ?
xem file đính kèm.

Túm lại 1 Dic xem???
Mã:
Option Explicit


Public Sub GPE()
Dim Dic As Object, sArr, dArr, tArr, zArr, TCong
Dim I As Long, K As Long, N As Long, R As Long, T As Long
Set Dic = CreateObject("Scripting.Dictionary")
Application.ScreenUpdating = False
With Sheets("Sheet1")
    .Sort.SortFields.Clear
    sArr = .Range("A1", .Range("A1").End(4)).Resize(, 4).Value
ReDim dArr(1 To UBound(sArr), 1 To 500)
ReDim tArr(1 To UBound(sArr), 1 To 1)
ReDim zArr(1 To 1, 1 To 1000)
K = 1: N = 1
dArr(K, 1) = "Ngày": tArr(1, 1) = "Grand Total": zArr(1, 1) = "Grand Total"
For I = 2 To UBound(sArr)
If sArr(I, 1) >= .Range("O2").Value And sArr(I, 1) <= .Range("Q2").Value Then
    If Not Dic.Exists(sArr(I, 3)) Then
        N = N + 1
        dArr(1, N) = sArr(I, 3)
        Dic.Add sArr(I, 3), N
    End If
    If Not Dic.Exists(sArr(I, 1)) Then
        K = K + 1
        Dic.Add sArr(I, 1), K
        dArr(K, 1) = sArr(I, 1)
    End If
        R = Dic.Item(sArr(I, 1))
        T = Dic.Item(sArr(I, 3))
        dArr(R, T) = dArr(R, T) + sArr(I, 4)
        tArr(R, 1) = tArr(R, 1) + sArr(I, 4)
        zArr(1, T) = zArr(1, T) + sArr(I, 4)
        TCong = TCong + sArr(I, 4)
End If
Next I
    zArr(1, N + 1) = TCong
    .Range("N3").CurrentRegion.Offset(2).ClearContents
    .Range("N3").CurrentRegion.Offset(2).Borders.LineStyle = 0
    .Range("N3").Resize(K, N).Value = dArr
    .Range("N3").Offset(, N).Resize(K).Value = tArr
    .Range("N3").Offset(K).Resize(, N + 1).Value = zArr
    .Range("N3").Resize(K + 1, N + 1).Borders.LineStyle = 1
    .Range("N4").Resize(K - 1, N + 1).Sort .Range("N4")
    With .Sort
        .SortFields.Clear
        .SortFields.Add Key:=Range("O3").Resize(, N - 1)
        .SetRange Range("O3").Resize(K + 1, N - 1)
        .Orientation = xlLeftToRight
        .Apply
    End With
End With
Application.ScreenUpdating = True
Set Dic = Nothing
End Sub
 
Lần chỉnh sửa cuối:
Upvote 0
Trước hết cảm ơn bác hpkhuong đã chia sẻ đoạn code, mình làm theo và đã tổng hợp được tổng số hàng tồn trong một khoảng thời gian cần biết.
Mong các bạn giúp thêm code để thực thi các yêu cầu sau:
1. Thống kê hàng tồn theo tất cả các kho hoặc từng kho nếu nhập All hoặc Tên kho/Cửa hàng vào ô D4
2. Có cách nào bằng vba để tính lượng tồn theo từng mặt hàng (=tồn đầu + nhập - xuất) không vì mình thấy Grand Total toàn phép cộng thôi, với lại trong một khoảng thời gian sẽ có những loại phiếu không xuất hiện nên số lượng cột ở sheet ThongKe luôn thay đổi.
Mong các bạn giúp đỡ. Cảm ơn nhiều
 

File đính kèm

  • TestKho.xls
    64.5 KB · Đọc: 9
Upvote 0
Cái Post lúc mới học VBA dc vài tháng.
 
Upvote 0
Trước hết cảm ơn bác hpkhuong đã chia sẻ đoạn code, mình làm theo và đã tổng hợp được tổng số hàng tồn trong một khoảng thời gian cần biết.
Mong các bạn giúp thêm code để thực thi các yêu cầu sau:
1. Thống kê hàng tồn theo tất cả các kho hoặc từng kho nếu nhập All hoặc Tên kho/Cửa hàng vào ô D4
2. Có cách nào bằng vba để tính lượng tồn theo từng mặt hàng (=tồn đầu + nhập - xuất) không vì mình thấy Grand Total toàn phép cộng thôi, với lại trong một khoảng thời gian sẽ có những loại phiếu không xuất hiện nên số lượng cột ở sheet ThongKe luôn thay đổi.
Mong các bạn giúp đỡ. Cảm ơn nhiều

Code trên chỉ viết cho trường hợp bài của chủ topic này (chỉ là tham khảo).
Còn đối file & yêu cầu của bạn nó hoàn toàn khác. Nó chứa đựng nhiều thứ phải tính toán hơn.
 

File đính kèm

  • Tong hop NXT Theo Kho.xlsb
    44.6 KB · Đọc: 18
Upvote 0
11-12-2017 21:00
Đang nghĩ có cần phải viết code có Dictionary như bài 2 không. Muộn rồi. để mai

12-12-2017 9:00

Pivot trong 2010 có nhiều tùy chọn hơn nên kg cần lập code dùng Dictionary.
Xem file đính kèm. Tôi có sửa một số tiêu đề cột cho ngắn gọn hơn. Vẫn dùng nút công cụ như bài 2
 

File đính kèm

  • Pivot Table (1).xlsm
    229.7 KB · Đọc: 14
Lần chỉnh sửa cuối:
Upvote 0
Các bạn giúp xem có thể dùng vba để tạo báo cáo như pivot table này được không chứ cứ phải chọn chọn tích tích thủ công mệt quá mà chẳng đẹp tý nào.
Làm sao để chọn tỉnh thì sẽ liệt kê các huyện thuộc tỉnh đó.
Cột "Sản lượng" = XBH - NHTL và giữ nguyên cột XKM
Tks
 

File đính kèm

  • Tong hop NXT Theo Kho.xls
    114 KB · Đọc: 7
Upvote 0
Các bạn giúp xem có thể dùng vba để tạo báo cáo như pivot table này được không chứ cứ phải chọn chọn tích tích thủ công mệt quá mà chẳng đẹp tý nào.
Làm sao để chọn tỉnh thì sẽ liệt kê các huyện thuộc tỉnh đó.
Cột "Sản lượng" = XBH - NHTL và giữ nguyên cột XKM
Tks

Bạn thực sự có hiểu được cách xài Pivot? Pivot mà bạn nói tích thủ công mệt & chẳng đẹp tí nào thì tôi thua rồi...
 
Upvote 0
Bạn thực sự có hiểu được cách xài Pivot? Pivot mà bạn nói tích thủ công mệt & chẳng đẹp tí nào thì tôi thua rồi...
Ý của bạn ấy là cái nào mà nhấn nút ak. nhanh gọn lẹ. còn quá trình làm ra cái đó thì k cần biết, chỉ cần nhấn nút là ra đúng ý là được.
 
Upvote 0
Các bạn giúp xem có thể dùng vba để tạo báo cáo như pivot table này được không chứ cứ phải chọn chọn tích tích thủ công mệt quá mà chẳng đẹp tý nào.
Làm sao để chọn tỉnh thì sẽ liệt kê các huyện thuộc tỉnh đó.
Cột "Sản lượng" = XBH - NHTL và giữ nguyên cột XKM
Tks

Dựa vào dữ liệu ở sheet nào để làm ra cái gì ở sheet nào. Tìm mãi mới ra. Chắc gì đã đúng.
Còn Pivot thì cũng nhiều cái lạ. Có ô xóa được, có ô không. Cũng nên để đúng tên cột của pivot theo dữ liệu gốc.

Giải thích thêm nha.

Mà cũng lạ: code của bạn thì quá hay. Còn câu hỏi thì không thế
 
Upvote 0
Bạn thực sự có hiểu được cách xài Pivot? Pivot mà bạn nói tích thủ công mệt & chẳng đẹp tí nào thì tôi thua rồi...
Mình nói thế vì trong bảng của mình dùng đến 3 Page Fields để xem tổng hợp bán hàng theo ngày tháng, tỉnh và huyện và thêm một cột Calculated Field (Sản lượng = XBH - NHTL). Pivot theo nguyên bản của XL bê nguyên tất cả ngày tháng, tỉnh, huyện trong sheet gốc vào nên nếu chọn theo khoảng thời gian, theo tỉnh hay theo huyện sẽ phải tích chọn những items mình cần, vì vậy nếu có hàng nghìn dòng thì click để chọn sẽ rất mất thời gian, chưa kể là có những huyện trong tỉnh mà mình ko biết thì có thể sẽ thống kê thừa hoặc thiếu. Còn Calculated Field thì mình ko biết làm sao để nó ko hiện số 0 ở những ô không có số liệu cả nên nhìn rất rối mắt.

Dựa vào dữ liệu ở sheet nào để làm ra cái gì ở sheet nào. Tìm mãi mới ra. Chắc gì đã đúng.
Còn Pivot thì cũng nhiều cái lạ. Có ô xóa được, có ô không. Cũng nên để đúng tên cột của pivot theo dữ liệu gốc.

Giải thích thêm nha.

Mà cũng lạ: code của bạn thì quá hay. Còn câu hỏi thì không thế

Hic, code là do bác hpkhuong viết đấy ạ. Còn mình xin giải thích thêm:
Mình muốn có một cái bảng tổng hợp bán hàng theo thời gian + theo tỉnh + theo huyện như trong Pivot ở file đính kèm. Khi chọn 1 tỉnh thì sẽ tự động lọc và nạp danh sách huyện thuộc tỉnh đó ở Field huyện và tự động lấy danh sách khách hàng thuộc huyện đó luôn, ko phải click chọn như trong Pivot nữa.
Còn trong phần tính toán Values thì chỉ cho hiển thị 2 loại phiếu thôi là XKM và Sản lượng (Calculated Field)
Các bạn xem giúp Pivot trong file đính kèm

Mong các bạn giúp đỡ. Cảm ơn nhiều
 

File đính kèm

  • Tong hop NXT Theo Kho.xls
    104.5 KB · Đọc: 9
Upvote 0
...
Còn mình xin giải thích thêm:
Mình muốn có một cái bảng tổng hợp bán hàng theo thời gian + theo tỉnh + theo huyện như trong Pivot ở file đính kèm (trên sheet xx nào?).
(Và dữ liệu của pivot ở trên sheet yy nào?). Sao cho
Khi chọn 1 tỉnh thì sẽ tự động lọc và nạp danh sách huyện thuộc tỉnh đó ở Field huyện và tự động lấy danh sách khách hàng thuộc huyện đó luôn, ko phải click chọn như trong Pivot nữa.
Còn trong phần tính toán Values thì chỉ cho hiển thị 2 loại phiếu thôi là XKM và Sản lượng (Calculated Field)
Các bạn xem giúp Pivot trong file đính kèm
Mong các bạn giúp đỡ. Cảm ơn nhiều

Giá bạn viết rõ thêm phần chữ đỏ thì tốt cho người giúp lắm lắm vì đỡ rất nhiều thời gian.

Tôi có cảm giác làm lại cả sheet Kho và BanHang bằng 2 Pivot mới

Nếu có chọn ngày theo khoảng trong sheet Kho thì phải làm trên E2010 để viết được code ngắn gọn.
 
Upvote 0
Giá bạn viết rõ thêm phần chữ đỏ thì tốt cho người giúp lắm lắm vì đỡ rất nhiều thời gian.

Tôi có cảm giác làm lại cả sheet Kho và BanHang bằng 2 Pivot mới

Nếu có chọn ngày theo khoảng trong sheet Kho thì phải làm trên E2010 để viết được code ngắn gọn.

Mình lấy dữ liệu cho Pivot từ sheet XuatNhap, còn tổng hợp thì sang sheet mới (đang để là sheet BanHang). Mình muốn tạo bảng tổng hợp theo điều kiện "từ ngày" ... "đến ngày", "chọn tỉnh", "chọn huyện" sau đó thì danh sách khách hàng sẽ xuống row field. Chọn tỉnh thì bên huyện sẽ chỉ thấy những huyện thuộc tỉnh đó, chọn huyện thì chỉ thấy những khách hàng thuộc huyện đó. Column field gồm 2 cột là tên hàng và loại hóa đơn (trong đó lọc theo 2 điều kiện là XKM và "sản lượng" = XBH - NHTL)
Mình đang dùng Excel 2010.
Tks bạn
 
Upvote 0
Mình đang bí cách tạo thêm 1 cột theo công thức trong Pivot. Thực chất là lấy tổng nhập trừ đi tổng xuất.
Ai biết ở trang nào thì chỉ giúp hoặc chỉ trực tiếp. Cảm ơn
 
Upvote 0
Web KT
Back
Top Bottom