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
Ý của bạn có phải như thế này ?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.
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
Ý của bạn có phải như thế này ?
xem file đính kè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
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
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
Ý 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.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á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
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.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...
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ế
...
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.
DIỄN ĐÀN GIẢI PHÁP EXCEL Group 1
DIỄN ĐÀN GIẢI PHÁP EXCEL Group 2