Help - Điền dữ liệu vào báo cáo

Liên hệ QC

lamdathoa

Thành viên chính thức
Tham gia
3/9/09
Bài viết
66
Được thích
4
http://loinhac.ucoz.com/load/0-0-0-23-20 (Direct Link - 101KB)

Em có một cái báo cáo các đơn đặt hàng từ tháng 4 tới tháng 9.

Một sheet chứa mã đơn hàng và số lượng đơn hàng.
Một sheet là báo cáo.

Trên sheet báo cáo họ lấy mã đơn hàng bỏ ra 3 ký tự cuối (thật ra là mình lấy đến hết đoạn số ở giữa đơn hàng thôi. Ví dụ như MT510BS thì chỉ lấy MT510), rồi sum những đơn có cùng mã đơn để lấy total rồi nhập vào báo cáo. Có những mã hàng không có trong tháng thì nhập số lượng = 0. Nhưng báo này có nhiều đơn hàng nếu làm = tay thì mất nhiều thời gian quá. Có anh chị nào giúp em ko ? Thanks mọi người nhiều.
 
Lần chỉnh sửa cuối:
Bạn xem cách mình làm bằng hàm CSDL

Nếu thích, mình sẽ giúp bạn tự động hóa hoàn toàn bằng 1 macro!
 

File đính kèm

  • gpeDATABASE.rar
    19.6 KB · Đọc: 15
Lần chỉnh sửa cuối:
http://loinhac.ucoz.com/load/0-0-0-23-20 (Direct Link - 101KB)

Em có một cái báo cáo các đơn đặt hàng từ tháng 4 tới tháng 9.

Một sheet chứa mã đơn hàng và số lượng đơn hàng.
Một sheet là báo cáo.

Trên sheet báo cáo họ lấy mã đơn hàng bỏ ra 3 ký tự cuối (thật ra là mình lấy đến hết đoạn số ở giữa đơn hàng thôi. Ví dụ như MT510BS thì chỉ lấy MT510), rồi sum những đơn có cùng mã đơn để lấy total rồi nhập vào báo cáo. Có những mã hàng không có trong tháng thì nhập số lượng = 0. Nhưng báo này có nhiều đơn hàng nếu làm = tay thì mất nhiều thời gian quá. Có anh chị nào giúp em ko ? Thanks mọi người nhiều.
Làm thử = ADO như sau:

[GPECODE=sql]Sub Sum_HLMT()
Dim cn As Object, rst As Object, mySQL As String
Set cn = CreateObject("ADODB.Connection")
Set rst = CreateObject("ADODB.Recordset")
With cn
.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & ThisWorkbook.FullName & _
";Extended Properties=""Excel 8.0;HDR=No;IMEX=1"";"
.Open
End With
mySQL = "SELECT F1, F2, 0 as F3,0 as f4,0 as f5,0 as f6 from [Don Hang$A3:B433] " & _
"Union all SELECT F1, 0, F2,0,0,0 from [Don Hang$d3:e501] " & _
"Union all SELECT F1, 0, 0,F2,0,0 from [Don Hang$g3:h203] " & _
"Union all SELECT F1, 0, 0,0,F2,0 from [Don Hang$j3:k68] " & _
"Union all SELECT F1, 0, 0,0,0,F2 from [Don Hang$m3:n27] "
With rst
.ActiveConnection = cn
.Open "select left(f1,len(f1)-3) as F1, sum(f2),sum(f3),sum(f4),sum(f5),sum(f6) from (" & _
mySQL & ") group by left(f1,len(f1)-3)"
End With
With Sheets("Bao1 cao")
.[B7:I65000].ClearContents
.[B7].CopyFromRecordset rst
End With
rst.Close: Set rst = Nothing
cn.Close: Set cn = Nothing

End Sub

[/GPECODE]
 

File đính kèm

  • Union.rar
    25.1 KB · Đọc: 14
Cám ơn anh nhiều lắm. Thật nếu em tính bằng tay thì phải mất gần 1 ngày mới xong. Cứ dùng filter rồi paste vào. Cám ơn anh. Thank you again!!!
 
Bạn có thể tham khảo thêm cách mà macro làm theo file #2

Mã:
Option Explicit
[B]Sub TongHop()
[/B] Dim Th As Byte, Dd As Byte
 Dim Name As String, Ma As String
 Dim Sh As Worksheet, WF As Object, Rng As Range, Cls As Range
 
 Sheets("Don hang").Select
 Set Sh = ThisWorkbook.Worksheets("Bao1 cao")
 Set WF = Application.WorksheetFunction
 Application.ScreenUpdating = False
 For Th = 4 To 8
    Name = "Th" & CStr(Th)
    Set Rng = Range(Name)
    [Da1].Value = Rng(1).Value
    For Each Cls In Sh.Range(Sh.[b7], Sh.[b7].End(xlDown))
        Ma = Cls.Value:         Dd = Len(Ma) - 3
        [da2].Value = Mid$(Ma, 1, Dd)
        Cls.Offset(, Th - 3).Value = WF.DSum(Rng, Rng(2), [da1:da2])
    Next Cls
 Next Th
 Application.ScreenUpdating = True
 Sh.Select:                 Randomize
 [b6].Resize(, Th).Interior.ColorIndex = 34 + 9 * Rnd() \ 1
[B]End Sub
[/B]
 
Web KT

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

Back
Top Bottom