Tính tổng cộng với nhiều điều kiện

Liên hệ QC

soledad_90

Thành viên thường trực
Tham gia
12/1/10
Bài viết
253
Được thích
47
Giới tính
Nam
Em xin chào mọi người trên diễn đàn ạ!
Em có báo cáo về việc tính tổng cộng :
Với cùng 1 số phương tiện vận chuyển sẽ lọc ra chi tiết từng dòng : Ngày xuất/Quốc gia / Đơn hàng / Tổng số đôi / tổng số thùng.
Em có làm mẫu 1 VD: như hình ảnh và tệp đính kèm ạ.
Em có sử dựng Pivot Table để làm nhưng kết quả đưa ra sẽ không sắp xếp như đúng yêu cầu báo cáo.
Vậy em mong nhận được sự giúp đỡ về VBA ạ
Em cảm ơn ạ!

1617606818392.png
 

File đính kèm

  • 210405_BAOCAO XUATCHITIET PHUONGTIENVAN CHUYEN.xlsx
    98.1 KB · Đọc: 13
Sửa đại code cũ bạn tham khảo
Capture.PNG
 

File đính kèm

  • 210405_BAOCAO XUATCHITIET PHUONGTIENVAN CHUYEN.xlsm
    119.3 KB · Đọc: 7
Upvote 0
Cảm ơn kết quả của bạn .
Nhưng chưa có đúng yêu cầu :
Mình muốn thể hiện ở dạng báo cáo , chứ không lọc tìm kiếm từng mục .
Và các cột thể hiện : Cùng là quốc gia Áo / các đơn hàng giống nhau sẽ tổng cộng đôi và thùng / thể hiện 1 giòng .
Nhờ bạn kiểm tra lại code giúp nhé.
cảm ơn bạn nhiều!
1617612017204.png
Bài đã được tự động gộp:

 
Upvote 0
Em xin chào mọi người trên diễn đàn ạ!
Em có báo cáo về việc tính tổng cộng :
Với cùng 1 số phương tiện vận chuyển sẽ lọc ra chi tiết từng dòng : Ngày xuất/Quốc gia / Đơn hàng / Tổng số đôi / tổng số thùng.
Em có làm mẫu 1 VD: như hình ảnh và tệp đính kèm ạ.
Em có sử dựng Pivot Table để làm nhưng kết quả đưa ra sẽ không sắp xếp như đúng yêu cầu báo cáo.
Vậy em mong nhận được sự giúp đỡ về VBA ạ
Em cảm ơn ạ!

View attachment 256557
Bạn thử với code sau nhé:

Mã:
Sub TrichLoc_HLMT()
    Dim strSQL As String, strPhuongTien As String
    strPhuongTien = "CCLU 4839319"
    strSQL = "Select F1,F2,F3,Sum(F45) As SoDoi,Sum(F46) As SoThung,F47 From [CTXUAT$A3:AV] Where F47 like '" & strPhuongTien & "' Group By F1,F2,F47,F3"
    strSQL = strSQL & " Union All Select F1 & ' Total:','','',Sum(SoDoi),Sum(SoThung),'' From (" & strSQL & ") Group By F1"
    strSQL = strSQL & " Union All Select 'Grand Total:','','',Sum(SoDoi)/2,Sum(SoThung)/2,'' From (" & strSQL & ") "
    With CreateObject("ADODB.Recordset")
        .Open ("Select * From (" & strSQL & ") Order By F1"), "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & ThisWorkbook.FullName & ";Extended Properties=""Excel 12.0 Xml;HDR=No;IMEX=1"""
        Sheet2.Range("B3").CopyFromRecordset .DataSource
    End With
End Sub
 
Upvote 0
Bạn thử với code sau nhé:

Mã:
Sub TrichLoc_HLMT()
    Dim strSQL As String, strPhuongTien As String
    strPhuongTien = "CCLU 4839319"
    strSQL = "Select F1,F2,F3,Sum(F45) As SoDoi,Sum(F46) As SoThung,F47 From [CTXUAT$A3:AV] Where F47 like '" & strPhuongTien & "' Group By F1,F2,F47,F3"
    strSQL = strSQL & " Union All Select F1 & ' Total:','','',Sum(SoDoi),Sum(SoThung),'' From (" & strSQL & ") Group By F1"
    strSQL = strSQL & " Union All Select 'Grand Total:','','',Sum(SoDoi)/2,Sum(SoThung)/2,'' From (" & strSQL & ") "
    With CreateObject("ADODB.Recordset")
        .Open ("Select * From (" & strSQL & ") Order By F1"), "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & ThisWorkbook.FullName & ";Extended Properties=""Excel 12.0 Xml;HDR=No;IMEX=1"""
        Sheet2.Range("B3").CopyFromRecordset .DataSource
    End With
End Sub
Em cảm ơn nhiều ạ.
Kết quả đúng như yêu cầu rồi ạ.
Nhưng sao kết quả chỉ hiện thị có 1 lô hàng này thôi ạ.
Không biết em có làm sai bước nào không ạ ?
Em muốn thể hiện toàn bộ các số phương tiện vận chuyển luôn ạ .
Em cảm ơn !
1617613990983.png

1617613645176.png1617613667515.png
 
Upvote 0
Em cảm ơn nhiều ạ.
Kết quả đúng như yêu cầu rồi ạ.
Nhưng sao kết quả chỉ hiện thị có 1 lô hàng này thôi ạ.
Không biết em có làm sai bước nào không ạ ?
Em muốn thể hiện toàn bộ các số phương tiện vận chuyển luôn ạ .
Em cảm ơn !
View attachment 256571

View attachment 256568View attachment 256569
Đó là điều kiện lọc phương tiện của bạn. Nếu cho hiển thị hết thì bạn thay điều kiện đó thành % nha.

strPhuongTien="%"

Mã:
Sub TrichLoc_HLMT()
    Dim strSQL As String, strPhuongTien As String
    strPhuongTien = "%"
    strSQL = "Select F1,F2,F3,Sum(F45) As SoDoi,Sum(F46) As SoThung,F47 From [CTXUAT$A3:AV] Where F47 like '" & strPhuongTien & "' Group By F1,F2,F47,F3"
    strSQL = strSQL & " Union All Select F1 & ' Total:','','',Sum(SoDoi),Sum(SoThung),'' From (" & strSQL & ") Group By F1"
    strSQL = strSQL & " Union All Select 'Grand Total:','','',Sum(SoDoi)/2,Sum(SoThung)/2,'' From (" & strSQL & ") "
    With CreateObject("ADODB.Recordset")
        .Open ("Select * From (" & strSQL & ") Order By F1,F2,F47,F3"), "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & ThisWorkbook.FullName & ";Extended Properties=""Excel 12.0 Xml;HDR=No;IMEX=1"""
        Sheet2.Range("B27").CopyFromRecordset .DataSource
    End With
End Sub
 
Upvote 0
Đó là điều kiện lọc phương tiện của bạn. Nếu cho hiển thị hết thì bạn thay điều kiện đó thành % nha.

strPhuongTien="%"

Mã:
Sub TrichLoc_HLMT()
    Dim strSQL As String, strPhuongTien As String
    strPhuongTien = "%"
    strSQL = "Select F1,F2,F3,Sum(F45) As SoDoi,Sum(F46) As SoThung,F47 From [CTXUAT$A3:AV] Where F47 like '" & strPhuongTien & "' Group By F1,F2,F47,F3"
    strSQL = strSQL & " Union All Select F1 & ' Total:','','',Sum(SoDoi),Sum(SoThung),'' From (" & strSQL & ") Group By F1"
    strSQL = strSQL & " Union All Select 'Grand Total:','','',Sum(SoDoi)/2,Sum(SoThung)/2,'' From (" & strSQL & ") "
    With CreateObject("ADODB.Recordset")
        .Open ("Select * From (" & strSQL & ") Order By F1,F2,F47,F3"), "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & ThisWorkbook.FullName & ";Extended Properties=""Excel 12.0 Xml;HDR=No;IMEX=1"""
        Sheet2.Range("B27").CopyFromRecordset .DataSource
    End With
End Sub
Chào anh và diễn đàn. Chúc mọi người buổi sáng chàn đầy năng lượng!
Với
Mã:
strPhuongTien="%"
Kết quả đã hiện thị hết.
Nhưng chưa đúng yêu cầu ban đầu ạ .
Em lấy vd : Như quốc gia Áo / với số phương tiện vận chuyển CCLU 4839319 và UETU 4084450 - cần Total từng phương tiện riêng biệt nữa ạ. Kết quả hiển thị lại cộng chung luôn.
Và kết quả trả về hiển thị từ giòng 27 trở xuống thôi ạ.
Anh kiểm tra kết quả lại dùm em với ạ.
1617668715612.png
 

File đính kèm

  • 210405_BAOCAO XUATCHITIET PHUONGTIENVAN CHUYEN.xlsx
    105.7 KB · Đọc: 7
Upvote 0
Chào anh và diễn đàn. Chúc mọi người buổi sáng chàn đầy năng lượng!
Với
Mã:
strPhuongTien="%"
Kết quả đã hiện thị hết.
Nhưng chưa đúng yêu cầu ban đầu ạ .
Em lấy vd : Như quốc gia Áo / với số phương tiện vận chuyển CCLU 4839319 và UETU 4084450 - cần Total từng phương tiện riêng biệt nữa ạ. Kết quả hiển thị lại cộng chung luôn.
Và kết quả trả về hiển thị từ giòng 27 trở xuống thôi ạ.
Anh kiểm tra kết quả lại dùm em với ạ.
View attachment 256592
Thêm 1 nhóm nữa là được thôi bạn.

Mã:
Sub TrichLoc_HLMT()
    Dim strSQLNguon, strSQL As String, strPhuongTien As String
    strPhuongTien = "CCLU 4839319"
    strSQLNguon = "Select F1,F2,F3,Sum(F45) As SoDoi,Sum(F46) As SoThung,F47,1 as SapXep From [CTXUAT$A3:AV] Where F47 like '" & strPhuongTien & "' Group By F1,F2,F47,F3"
    strSQL = strSQLNguon & " Union All Select F1 & ' Total:','','',Sum(SoDoi),Sum(SoThung),'',3 From (" & strSQLNguon & ") Group By F1"
    strSQL = strSQL & " Union All Select F1,'','',Sum(SoDoi),Sum(SoThung),  F47 & ' Total',2 From (" & strSQLNguon & ") Group By F47,F1"
    strSQL = strSQL & " Union All Select 'Grand Total:','','',Sum(SoDoi),Sum(SoThung),'',4 From (" & strSQLNguon & ") "
    With CreateObject("ADODB.Recordset")
        .Open ("Select F1,F2,F3,SoDoi,SoThung,F47 From (" & strSQL & ") Order By F1,F47,SapXep"), "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & ThisWorkbook.FullName & ";Extended Properties=""Excel 12.0 Xml;HDR=No;IMEX=1"""
        Sheet2.Range("B3").CopyFromRecordset .DataSource
    End With
End Sub
 
Upvote 0
Thêm 1 nhóm nữa là được thôi bạn.

Mã:
Sub TrichLoc_HLMT()
    Dim strSQLNguon, strSQL As String, strPhuongTien As String
    strPhuongTien = "CCLU 4839319"
    strSQLNguon = "Select F1,F2,F3,Sum(F45) As SoDoi,Sum(F46) As SoThung,F47,1 as SapXep From [CTXUAT$A3:AV] Where F47 like '" & strPhuongTien & "' Group By F1,F2,F47,F3"
    strSQL = strSQLNguon & " Union All Select F1 & ' Total:','','',Sum(SoDoi),Sum(SoThung),'',3 From (" & strSQLNguon & ") Group By F1"
    strSQL = strSQL & " Union All Select F1,'','',Sum(SoDoi),Sum(SoThung),  F47 & ' Total',2 From (" & strSQLNguon & ") Group By F47,F1"
    strSQL = strSQL & " Union All Select 'Grand Total:','','',Sum(SoDoi),Sum(SoThung),'',4 From (" & strSQLNguon & ") "
    With CreateObject("ADODB.Recordset")
        .Open ("Select F1,F2,F3,SoDoi,SoThung,F47 From (" & strSQL & ") Order By F1,F47,SapXep"), "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & ThisWorkbook.FullName & ";Extended Properties=""Excel 12.0 Xml;HDR=No;IMEX=1"""
        Sheet2.Range("B3").CopyFromRecordset .DataSource
    End With
End Sub
Kết quả đúng chuẩn rồi ạ.
Em cảm ơn anh nhiều ạ.
Về phần tô nên màu cho Total từng ngày ( trình bày thêm từ anh nhưng rất đúng với ý nghĩa báo cáo ) :
anh có thể giúp em cho mục yêu cầu này thêm với ạ.
Em có gửi tệp đính kèm cho bạn nào có như cầu giống như mình.


1617678343057.png
 

File đính kèm

  • 210405_BAOCAO XUATCHITIET PHUONGTIENVAN CHUYEN-.xlsm
    112.7 KB · Đọc: 7
Lần chỉnh sửa cuối:
Upvote 0
Kết quả đúng chuẩn rồi ạ.
Em cảm ơn anh nhiều ạ.
Về phần tô nên màu cho Total từng ngày ( trình bày thêm từ anh nhưng rất đúng với ý nghĩa báo cáo ) :
anh có thể giúp em cho mục yêu cầu này thêm với ạ.
Em có gửi tệp đính kèm cho bạn nào có như cầu giống như mình.


View attachment 256597
Bạn tìm hiểu thêm về tô màu có điều kiện ở diễn đàn này nhé.
 
Upvote 0

File đính kèm

  • 210405_BAOCAO XUATCHITIET PHUONGTIENVAN CHUYEN-.xlsm
    110.5 KB · Đọc: 18
Lần chỉnh sửa cuối:
Upvote 0
Lở rồi, làm luôn cho bạn. Bạn có thể tham khảo ở file đính kèm nhé.
Cảm ơn anh nhiều ạ.
Mã:
Sheet2.Range("B3:G1000").ClearContents
        Sheet2.Range("B3").CopyFromRecordset .DataSource
2 dòng ngắn tuy nhỏ mà võ đầy mình ạ, em vọc các kiểu ở công cụ Conditional Formatting mà chưa đúng ý ạ.
 
Upvote 0
Cảm ơn anh nhiều ạ.
Mã:
Sheet2.Range("B3:G1000").ClearContents
        Sheet2.Range("B3").CopyFromRecordset .DataSource
2 dòng ngắn tuy nhỏ mà võ đầy mình ạ, em vọc các kiểu ở công cụ Conditional Formatting mà chưa đúng ý ạ.
Tôi đã làm luôn trong file cho bạn luôn rồi mà.
 
Upvote 0
Tôi đã làm luôn trong file cho bạn luôn rồi mà.
Xin chào anh @Hai Lúa Miền Tây !
Về kết quả anh làm , khi làm báo cáo cho lô hàng mới của tháng 4 thì xuất hiện sự sai lệnh,
Về kết quả tổng thì đúng , nhưng chi tiết cho từng lô hàng, đơn hàng - thì chưa đúng
Em có gửi tệp đính kèm và kết quả làm thủ công bằng tay:
Mong nhận được thông tin từ anh ạ.
Em cảm ơn!
1619232672311.png
 

File đính kèm

  • 210405_BAOCAO XUATCHITIET PHUONGTIENVAN CHUYEN.xlsm
    357.5 KB · Đọc: 5
Lần chỉnh sửa cuối:
Upvote 0
Em xin chào mọi người trên diễn đàn ạ!
Em có báo cáo về việc tính tổng cộng :
Với cùng 1 số phương tiện vận chuyển sẽ lọc ra chi tiết từng dòng : Ngày xuất/Quốc gia / Đơn hàng / Tổng số đôi / tổng số thùng.
Em có làm mẫu 1 VD: như hình ảnh và tệp đính kèm ạ.
Em có sử dựng Pivot Table để làm nhưng kết quả đưa ra sẽ không sắp xếp như đúng yêu cầu báo cáo.
Vậy em mong nhận được sự giúp đỡ về VBA ạ
Em cảm ơn ạ!

View attachment 256557
Bạn tham khảo.
Dữ liệu của bạn có một số chỗ không cùng định dạng, nên kiểm tra trước khi tổng hợp, nếu không sẽ ra kết quả sai.
 

File đính kèm

  • 210405_BAOCAO XUATCHITIET PHUONGTIENVAN CHUYEN.xlsm
    332.8 KB · Đọc: 3
Lần chỉnh sửa cuối:
Upvote 0
Web KT

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

Back
Top Bottom