Báo Cáo từ ngày đến ngày (1 người xem)

  • Thread starter Thread starter DMQ
  • Ngày gửi Ngày gửi
Liên hệ QC

Người dùng đang xem chủ đề này

DMQ

Thành viên dốt
Tham gia
21/3/12
Bài viết
722
Được thích
57
Giới tính
Nam
Em có file này, gồm sheet nhập,sheet xuất và sheet BC, ở sheet BC, khi gỏ ngày vào ô D1 & D2 thì sẽ lọc hết hàng hóa nhập và xuất trong khoảng thời gian đó. Mong các AC xem file đính kèm!!!! Nhờ các AC viết code dùm em ví dữ liệu cả năm nên rất nhiều dòng(cỡ 20.000 dòng).
 

File đính kèm

Đọc file bạn gửi từ vài van dòng còn vài dòng thì lấy gì mà Test, chưa kể báo cáo mẫu cũng không có. Bài thì viết liệt kê nhưng biểu mẫu lại hình thức tổng hợp, chả biết theo dạng nào.
 
Upvote 0
Em có file này, gồm sheet nhập,sheet xuất và sheet BC, ở sheet BC, khi gỏ ngày vào ô D1 & D2 thì sẽ lọc hết hàng hóa nhập và xuất trong khoảng thời gian đó. Mong các AC xem file đính kèm!!!! Nhờ các AC viết code dùm em ví dữ liệu cả năm nên rất nhiều dòng(cỡ 20.000 dòng).
Làm thí thí theo kiểu này xem có đúng ý không.
 

File đính kèm

Upvote 0
ADO cũng làm được điều này, nhưng tốc độ cần cải thiện thêm là đưa dữ liệu vào Array xong rồi gán xuống sheet.

Mã:
Sub TongHop_HLMT()
Dim adoConn As Object, adoRS As Object
Set adoConn = CreateObject("ADODB.Connection")
Set adoRS = CreateObject("ADODB.Recordset")
With adoConn
    .ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
                        "Data Source=" & ThisWorkbook.FullName & _
                        ";Extended Properties=""Excel 8.0;HDR=No;"";"
    .Open
End With
With adoRS
    .ActiveConnection = adoConn
    .Open "SELECT F3, F4, Sum(TongNhap), Sum(TongXuat) " & _
                "FROM (SELECT F1, F3, F4, Sum(F5) AS TongNhap, Sum(F6) AS TongXuat " & _
                "FROM (SELECT F1, F3, F4, F5, null as F6 from [nhap$A2:E20000] " & _
                "UNION ALL select F1, F5, F6,null, F7 FROM [Xuat$A2:G20000]) " & _
                "GROUP BY F1, F3, F4 " & _
                "HAVING F3 Is Not Null and  F1 between #" & _
                Format(DateSerial(Year(Sheet3.[d1]), Month(Sheet3.[d1]), Day(Sheet3.[d1])), "mm/dd/yyyy") & "# AND #" & _
                Format(DateSerial(Year(Sheet3.[d2]), Month(Sheet3.[d2]), Day(Sheet3.[d2])), "mm/dd/yyyy") & "#) " & _
                "GROUP BY F3, F4"
End With
With Sheet3
    .Range("A5:E65000").ClearContents
    .Range("B5").CopyFromRecordset adoRS
    .Range("A5:A" & .Range("B65000").End(xlUp).Row) = "=ROW()-4"

End With
adoRS.Close: Set adoRS = Nothing
adoConn.Close: Set adoConn = Nothing

End Sub

Lưu ý: Nếu dùng ADO thì tên sheet mình đổi lại không dấu nhé, Sheet Nhập thành Nhap và sheet Xuất thành Xuat
 
Lần chỉnh sửa cuối:
Upvote 0
Mình dùng AdvancedFilter với ~ 3 vạn dòng dữ liệu cũng chỉ 2/100 gy

& Biếu bạn thêm 1 (của 2) macro để giả lập dữ liệu đủ cả năm luôn
 

File đính kèm

Upvote 0
Cám ơn Các Thầy và AC, Bài của Thầy Ba Tê là đúng ý em rồi. Nhưng em muốn bỏ nút GPE thay bằng phương thức select change được không Thầy(Thầy làm dùm em luôn được không ah?). Bài của Thầy Hai Lúa Miền Tây thì em không hiểu. ADO là gì hả Thầy. Nó viết trong VBA luôn hả Thầy. Mong Thầy giải thích dùm em!!!
 
Upvote 0
Cám ơn Các Thầy và AC, Bài của Thầy Ba Tê là đúng ý em rồi. Nhưng em muốn bỏ nút GPE thay bằng phương thức select change được không Thầy(Thầy làm dùm em luôn được không ah?). Bài của Thầy Hai Lúa Miền Tây thì em không hiểu. ADO là gì hả Thầy. Nó viết trong VBA luôn hả Thầy. Mong Thầy giải thích dùm em!!!
Muốn thì chìu, thay đổi ô D1, D2 thích hợp.
 

File đính kèm

Upvote 0
Ah, Thầy Ba Tê ơi, sao dữ liệu trống thì nó báo lỗi Debug(lỗi 1004) hả Thầy.Ví dụ như em gỏ từ ngày 17/9/2012 đến ngày 30/9/2012 thì nó bị lỗi đó. Mong Thầy xem giúp, và có thể ra Msgbox báo không có Nhập và Xuất trong thời gian này.
 
Upvote 0
Ah, Thầy Ba Tê ơi, sao dữ liệu trống thì nó báo lỗi Debug(lỗi 1004) hả Thầy.Ví dụ như em gỏ từ ngày 17/9/2012 đến ngày 30/9/2012 thì nó bị lỗi đó. Mong Thầy xem giúp, và có thể ra Msgbox báo không có Nhập và Xuất trong thời gian này.
Khỏi cần thông báo gì cả. xem và sửa 6 dòng cuối trong Sub thành như thế này
PHP:
With Sheets("BC")
.[A5:E10000].ClearContents
If K Then .[A5].Resize(K, 5).Value = Arr    "Thêm If K then cho dòng này"
End With
Set Dic = Nothing
End Sub
 
Upvote 0
Web KT

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

Back
Top Bottom