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

Đang nhờ ai làm thì quay lại topic đó mà hỏi tiếp chứ...
 
Upvote 0
Bài ở Topic kia là em nhờ chuyển qua code VBA hết, không dùng hàm DSum nữa.
Còn bài này là em nhờ chỉnh code có hàm DSum sao chạy bị sai.
Mong mọi người giúp đỡ.
 
Upvote 0
Mong các anh chị giúp em với!!
tính 2 lần thì nó thế
---------------------------------------------------
1 Cls.Offset(, 2).Value = WF.VLookup(Cls.Value, Sheets("Ton").[b3].Resize(99, 3), 3, False)
Sh.[aA4:aB4].Value = [e3].Value
2 'Tính Nhâp Dàu Kì'
Cls.Offset(, 2).Value = Cls.Offset(, 2).Value + WF.DSum(CSDL, Sh.[f2], Sh.[ab1:ac2])
---------------------------------------------------
 
Upvote 0
Cám ơn bạn, nhưng mình không biết VBA, mong bạn giúp mình với.
Sữa code như thế nào ah.
Mong bạn viết ra luôn.
 
Upvote 0
Cám ơn bạn, nhưng mình không biết VBA, mong bạn giúp mình với.
Sữa code như thế nào ah.
Mong bạn viết ra luôn.
Bỏ cái dòng code dưới đi rồi test lại xem sao.
(mình cũng trả biết cái hàm Dsum () tính toán ra "răng" nên bỏ nó thử xem)
 
Upvote 0
Mình bỏ dòng "Cls.Offset(, 2).Value" trong dòng 2, nhưng code vẫn chạy sai,
Ví dụ muc 5 "Nhan vai" chỉ tồn 84.85 và không nhập, không xuất.
Mong các anh chị giúp đỡ.
 
Upvote 0
Mã:
1               Cls.Offset(, 2).Value = WF.VLookup(Cls.Value, Sheets("Ton").[b3].Resize(99, 3), 3, False)
                Sh.[aA4:aB4].Value = [e3].Value
'2 'Tính Nhâp Dàu Kì'
'                Cls.Offset(, 2).Value = Cls.Offset(, 2).Value + WF.DSum(CSDL, Sh.[f2], Sh.[ab1:ac2]) <----bỏ đoạn này
3 'Tính Nhâp Trong Kì:'
                Sh.[aB4].Value = 1 + Target.Value
                Cls.Offset(, 3).Value = WF.DSum(CSDL, Sh.[f2], Sh.[aA1:ac2])
            ElseIf J = 2 Then
'4 'Xuát Dàu Kì:'
                Sh.[aA4:aB4].Value = [e3].Value
               Cls.Offset(, 2).Value = Cls.Offset(, 2).Value - WF.DSum(CSDL, Sh.[M2], Sh.[ab1:ac2])
5 'Xuát Trong Kì:'
                Sh.[aB4].Value = 1 + Target.Value
                Cls.Offset(, 4).Value = WF.DSum(CSDL, Sh.[M2], Sh.[aA1:ac2])    'HQ'
                Cls.Offset(, 5).Value = WF.DSum(CSDL, Sh.[N2], Sh.[aA1:ac2])    'TT'
Em bỏ đoạn màu đỏ thì code chạy đúng phần tồn đầu, còn xuất thì sai.
Mong mọi người giúp.
 
Upvote 0
Cám Ơn Anh HYen17, để emTest thử coi có bị sai số liệu không ah!
 
Upvote 0
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.
Mình hỏi tí xíu, File có tổng xuất HQ, TT và tồn HQ, TT là sao bạn? Mình thấy đa số File NXT chỉ có NXT. Thân chào bạn!
 
Upvote 0
Cám ơn Anh HYen17, test file thấy đúng rồi Anh Ah! (nhưng còn cột tổng xuất TT chưa có, em thử làm xem sao).
Tới bạn songhovl201:
mấy từ đó là từ chuyên môn của công ty mình nhe bạn.
 
Upvote 0
. . . . Test file thấy đúng rồi Anh Ah! (nhưng còn cột tổng xuất TT chưa có, em thử làm xem sao).
Để 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)
. . . ..

& chúc bạn sớm thành công!
 
Upvote 0
Cám Ơn Anh Hiếu nhiều nhiều!!!
File anh chuẩn rồi.
Tới Anh ChanhTQ:
Sao em mò mãi chưa chưa ra
Mã:
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) '<-----thay 5 = 6
    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)
        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, 7).Value
        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ì'
                dArr(J, 3) = dArr(J, 3) - Arr(Dg, 8)    'Xuât Truóc Kì TT' <----them cho nay
            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ì'
                dArr(J, 6) = dArr(J, 6) + Arr(Dg, 8)    'Xuât Trong Kì TT' <-----them cho nay
            End If
        Next Dg
    Next J
    [b6].Resize(W, 5).Value = dArr()
 End If
End Sub
 
Upvote 0
Anh Hiếu ơi!
Em muốn trong sheet!Baocao từ mục STT=21 (row =25) có màu chữ màu xanh để phân biệt, mà tại vì trong code của Anh có dòng
Mã:
  If LastR > 4 Then Range("a5:i" & LastR).Clear
nên khi code chạy thì xoá hết định dạng, vậy chỉ cho xoá giá trị chứ không xoá định dạng thì chỉnh sao Anh?
 
Upvote 0
Anh Hiếu ơi!
Em muốn trong sheet!Baocao từ mục STT=21 (row =25) có màu chữ màu xanh để phân biệt, mà tại vì trong code của Anh có dòng
Mã:
  If LastR > 4 Then Range("a5:i" & LastR).Clear
nên khi code chạy thì xoá hết định dạng, vậy chỉ cho xoá giá trị chứ không xoá định dạng thì chỉnh sao Anh?
Chỉnh lại lệnh Clear
If LastR > 4 Then Range("a5:i" & LastR).ClearContents
và xóa dòng lệnh thừa ở cuối code
Range("a5").Resize(UBound(Arr), 9).Borders.LineStyle = 1
 
Upvote 0
Web KT

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

Back
Top Bottom