Báo cáo từ ngày đến ngày bị sai (1 người xem)

Liên hệ QC

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

Rùa Con 1080

Thành Viên Sao Chép 2
Tham gia
4/5/16
Bài viết
351
Được thích
47
Giới tính
Nữ
Chào mọi người !
Em có file này, mong mọi người xem dùm code trong sheet "Baocao" bị sai chổ nào mà khi báo cáo từ ngày đến ngày bị sai.
Em ví dụ như khi gỏ ngày 2/8/2017 vào " E3" và ngày 15/8/2017 vào "G3"thì code Worksheet_Change()
chạy sai: như mục 5"Nhan vai" làm sao mà tồn đầu tới "48186.85" (tốn đầu chỉ có 84.85 -Sheet"Ton") và tổng xuất HQ= 47613.81(thực tế là không có xuất)
Mong mọi người xem giúp.
 

File đính kèm

Ah! Anh Hiếu ơi. Bị sai chổ "Tôn đầu" của Sheet!Baocao rồi anh ơi.
Ý của em là cột tồn đầu sẽ thay đổi theo mốc thời gian được chọn.
Tức là nếu chọn 1/8/2017 ->10/8/2017 thì tồn đầu là cột tồn cũa Sheet!Ton.
Nếu chọn 10/8/2017->30/8/2017 thì tồn đầu sẽ là cột tồn Sheet!Ton+ nhập trong khoảng 1/8/2017->10/8/2017 - Xuất trong khoảng 1/8/2017-> 10/8/2017. (chỉ lấy Xuất HQ)
Mong anh giúp.
 
Upvote 0
Để thử, bạn trãi qua các bước sau:

1./ Tăng khai báo biến mảng dArr() thêm 1 cột; (Để chứa dữ liệu TXTT)
2./ Với câu lệnh tuyên cáo làm việc với ô [G3] trang 'Xuat' trở đi:
Biến mảng cần nới rọng thêm 1 cột (chứa dữ liệu của trường TXTT)
. . . ..
Sao em mò hoài không được vậy.
Em gà VBA lắm.
Mong Anh chỉ rỏ.
 
Upvote 0
Anh ơi. Đang sai chổ "Tôn đầu" của Sheet!Baocao rồi anh ơi.
Ý của em là cột tồn đầu sẽ thay đổi theo mốc thời gian được chọn.
Tức là nếu chọn 1/8/2017 ->10/8/2017 thì tồn đầu là cột tồn cũa Sheet!Ton.
Nếu chọn 10/8/2017->30/8/2017 thì tồn đầu sẽ là cột tồn Sheet!Ton+ nhập trong khoảng 1/8/2017->10/8/2017 - Xuất trong khoảng 1/8/2017-> 10/8/2017. (chỉ lấy Xuất HQ)
Mong anh giúp.

Ở trang 'Ton' có cột 'TonDau'; Nhưng số liệu chứa trong cột này chưa rõ là ở mốc thời gian nào, đầu năm, cuối quí I, hay giữa năm hoặc cuối tháng 7 không chừng.
Vì trong trang 'Nhap' có 4 mặt hàng nhập vô tháng 7;
Nếu không xác định mốc thời gian tồn hàng thì mọi tính toán có thể đi tong. Thường thì ngày kiểm kê hàng cần lưu lại ở đâu đó; Chứ như vầy thì vô chừng!
 
Upvote 0
Ah! Anh Hiếu ơi. Bị sai chổ "Tôn đầu" của Sheet!Baocao rồi anh ơi.
Ý của em là cột tồn đầu sẽ thay đổi theo mốc thời gian được chọn.
Tức là nếu chọn 1/8/2017 ->10/8/2017 thì tồn đầu là cột tồn cũa Sheet!Ton.
Nếu chọn 10/8/2017->30/8/2017 thì tồn đầu sẽ là cột tồn Sheet!Ton+ nhập trong khoảng 1/8/2017->10/8/2017 - Xuất trong khoảng 1/8/2017-> 10/8/2017. (chỉ lấy Xuất HQ)
Mong anh giúp.
Lúc đó tồn cuối TT tính như thế nào?
 
Upvote 0
Sao em mò hoài không được vậy. Em gà VBA lắm.
Mong Anh chỉ rỏ.
PHP:
Private Sub Worksheet_Change(ByVal Target As Range)
 If Not Intersect(Target, [g3]) Is Nothing Then
    Dim Arr(), Cls As Range, WF As Object, Sh As Worksheet
    Dim Rws As Long, J As Long, W As Integer, Dg As Long
   
    Rws = [b6].CurrentRegion.Rows.Count
    ReDim dArr(1 To Rws, 1 To 6)                    '5'
    For Each Cls In Range([b6], [b6].End(xlDown))
        W = W + 1:          dArr(W, 1) = Cls.Value
        dArr(W, 2) = Cls.Offset(, 1).Value
    Next Cls
    Set WF = Application.WorksheetFunction
    Set Sh = ThisWorkbook.Worksheets("Ton")
    Set Cls = Sh.Range(Sh.[b2], Sh.[b2].End(xlDown)).Resize(, 3)
    For J = 1 To W
        dArr(J, 3) = WF.VLookup(dArr(J, 1), Cls, 3, False)  'Tòn Dàu Nam'
        With Sheets("Nhap").[A3]
            Rws = .CurrentRegion.Rows.Count
            Arr() = .Resize(Rws, 6).Value
        End With
        For Dg = 1 To UBound(Arr())
            If Arr(Dg, 1) < [E3].Value And dArr(J, 1) = Arr(Dg, 4) Then
                dArr(J, 3) = dArr(J, 3) + Arr(Dg, 6)    'Nhâp Truóc Kì'
            End If
            If (Arr(Dg, 1) >= [E3].Value And Arr(Dg, 1) <= Target.Value) _
                And dArr(J, 1) = Arr(Dg, 4) Then
                dArr(J, 4) = dArr(J, 4) + Arr(Dg, 6)    'Nhâp Trong Kì'
            End If
        Next Dg
        With Sheets("Xuat").[g3]
            Rws = .CurrentRegion.Rows.Count
            Arr() = .Resize(Rws, 8).Value               '7'
        End With
        For Dg = 1 To UBound(Arr())
            If Arr(Dg, 1) < [E3].Value And dArr(J, 1) = Arr(Dg, 3) Then
                dArr(J, 3) = dArr(J, 3) - Arr(Dg, 7)    'Xuât Truóc Kì'
            End If
            If (Arr(Dg, 1) >= [E3].Value And Arr(Dg, 1) <= Target.Value) _
                And dArr(J, 1) = Arr(Dg, 3) Then
                dArr(J, 5) = dArr(J, 5) + Arr(Dg, 7)    'Xuât Trong Kì:=SL HQ '
                dArr(J, 6) = dArr(J, 6) + Arr(Dg, 8)    '*Xuât Trong Kì:= SL TT*'
            End If
        Next Dg
    Next J
    [b6].Resize(W, 6).Value = dArr()        '5'
 End If
End Sub
 
Upvote 0
Cám ơn các Anh Chị.
Vì bận, giờ mới vào DD.
Tới anh Hiếu:
Mong anh đừng quan tâm tới cột tồn cuối TT (ở Sheet!baocao có thể bỏ cột đó, vì có thể coi ở Sheet!Ton)
 
Upvote 0
Em đã bỏ cột tồn cuối TT, mong anh giúp.
 

File đính kèm

Upvote 0

File đính kèm

Upvote 0
Cám ơn Anh Hiếu nhiều!
CHÚC ANH NGÀY VUI.
 
Upvote 0
Web KT

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

Back
Top Bottom