Xin mọi người giúp đỡ lấy số dư của sổ chi tiết

Liên hệ QC

ducmagic88

Thành viên chính thức
Tham gia
14/4/20
Bài viết
65
Được thích
4
Em chào các bác, em đang có một file excel sổ chi tiết ạ. Em đã lập trình được phần lấy số phát sinh từ sheet "DATA" sang sheet"SO_CHI_TIET". Bây giờ em đang vướng cột lấy số dư nhưng nghĩ mãi chưa biết làm thế nào, các bác giúp đỡ em lập trình phần này với ạ. Em cảm ơn các bác nhiều!
 

File đính kèm

  • SO_CHI_TIET.xlsm
    36.1 KB · Đọc: 10
Lấy trong số dư và phát sinh nợ/ có

Khai báo thêm:
PHP:
Dim SoduNo As Long, SoduCo As Long, LuykeNo As Long, LuykeCo As Long
Code sửa và thêm:
PHP:
With Sheet15
SoduNo = .[H13]: SoduCo = .[I13]
    For i = 3 To UBound(arr)
    If arr(i, 4) >= .Range("G1") And arr(i, 4) <= .Range("I1") _
    And arr(i, 12) = .Range("K2") And arr(i, 7) = .Range("K3") Then
        k = k + 1
        kq(k, 1) = arr(i, 2)
        kq(k, 2) = arr(i, 3)
        kq(k, 3) = arr(i, 4)
        kq(k, 4) = arr(i, 11)
        kq(k, 5) = arr(i, 13)
        kq(k, 6) = arr(i, 14)
        kq(k, 7) = 0
            LuykeNo = LuykeNo + kq(k, 6)
            LuykeCo = LuykeCo + kq(k, 7)
            kq(k, 8) = Application.Max(SoduNo - SoduCo + LuykeNo - LuykeCo, 0)
            kq(k, 9) = Application.Max(SoduCo - SoduNo + LuykeCo - LuykeNo, 0)
    ElseIf arr(i, 4) >= .Range("G1") And arr(i, 4) <= .Range("I1") _
    And arr(i, 13) = .Range("K2") And arr(i, 9) = .Range("K3") Then
        k = k + 1
        kq(k, 1) = arr(i, 2)
        kq(k, 2) = arr(i, 3)
        kq(k, 3) = arr(i, 4)
        kq(k, 4) = arr(i, 11)
        kq(k, 5) = arr(i, 12)
        kq(k, 6) = 0
        kq(k, 7) = arr(i, 14)
            LuykeNo = LuykeNo + kq(k, 6)
            LuykeCo = LuykeCo + kq(k, 7)
            kq(k, 8) = Application.Max(SoduNo - SoduCo + LuykeNo - LuykeCo, 0)
            kq(k, 9) = Application.Max(SoduCo - SoduNo + LuykeCo - LuykeNo, 0)
    End If
    Next i
 
Upvote 0
Dạ, cột này là cột cộng dòng xuống ạ
Số dư bên nợ = Số dư đầu kỳ bên nợ + Số phát sinh nợ - Số phát sinh có
Số dư bên có = Số dư đầu kỳ bên có + Số phát sinh bên có - Số phát sinh bên nợ
Cứ như thế cộng dần xuống ạ
(Lưu ý: nếu số dư bên có hoặc bên nợ âm thì ô đấy bằng 0 ạ)
 
Upvote 0
Dạ, cột này là cột cộng dòng xuống ạ
Số dư bên nợ = Số dư đầu kỳ bên nợ + Số phát sinh nợ - Số phát sinh có
Số dư bên có = Số dư đầu kỳ bên có + Số phát sinh bên có - Số phát sinh bên nợ
Cứ như thế cộng dần xuống ạ
(Lưu ý: nếu số dư bên có hoặc bên nợ âm thì ô đấy bằng 0 ạ)
Kế toán mà làm vậy là sai rồi nhé
 
Upvote 0
Lấy trong số dư và phát sinh nợ/ có

Khai báo thêm:
PHP:
Dim SoduNo As Long, SoduCo As Long, LuykeNo As Long, LuykeCo As Long
Code sửa và thêm:
PHP:
With Sheet15
SoduNo = .[H13]: SoduCo = .[I13]
    For i = 3 To UBound(arr)
    If arr(i, 4) >= .Range("G1") And arr(i, 4) <= .Range("I1") _
    And arr(i, 12) = .Range("K2") And arr(i, 7) = .Range("K3") Then
        k = k + 1
        kq(k, 1) = arr(i, 2)
        kq(k, 2) = arr(i, 3)
        kq(k, 3) = arr(i, 4)
        kq(k, 4) = arr(i, 11)
        kq(k, 5) = arr(i, 13)
        kq(k, 6) = arr(i, 14)
        kq(k, 7) = 0
            LuykeNo = LuykeNo + kq(k, 6)
            LuykeCo = LuykeCo + kq(k, 7)
            kq(k, 8) = Application.Max(SoduNo - SoduCo + LuykeNo - LuykeCo, 0)
            kq(k, 9) = Application.Max(SoduCo - SoduNo + LuykeCo - LuykeNo, 0)
    ElseIf arr(i, 4) >= .Range("G1") And arr(i, 4) <= .Range("I1") _
    And arr(i, 13) = .Range("K2") And arr(i, 9) = .Range("K3") Then
        k = k + 1
        kq(k, 1) = arr(i, 2)
        kq(k, 2) = arr(i, 3)
        kq(k, 3) = arr(i, 4)
        kq(k, 4) = arr(i, 11)
        kq(k, 5) = arr(i, 12)
        kq(k, 6) = 0
        kq(k, 7) = arr(i, 14)
            LuykeNo = LuykeNo + kq(k, 6)
            LuykeCo = LuykeCo + kq(k, 7)
            kq(k, 8) = Application.Max(SoduNo - SoduCo + LuykeNo - LuykeCo, 0)
            kq(k, 9) = Application.Max(SoduCo - SoduNo + LuykeCo - LuykeNo, 0)
    End If
    Next i
Em cảm ơn bác ạ
Bài đã được tự động gộp:

Kế toán mà làm vậy là sai rồi nhé
Có thể do em giải thích chưa đúng cách hiểu nhưng em đưa code của bác vào thì đúng rồi ạ
 
Upvote 0
Lấy trong số dư và phát sinh nợ/ có

Khai báo thêm:
PHP:
Dim SoduNo As Long, SoduCo As Long, LuykeNo As Long, LuykeCo As Long
Code sửa và thêm:
PHP:
With Sheet15
SoduNo = .[H13]: SoduCo = .[I13]
    For i = 3 To UBound(arr)
    If arr(i, 4) >= .Range("G1") And arr(i, 4) <= .Range("I1") _
    And arr(i, 12) = .Range("K2") And arr(i, 7) = .Range("K3") Then
        k = k + 1
        kq(k, 1) = arr(i, 2)
        kq(k, 2) = arr(i, 3)
        kq(k, 3) = arr(i, 4)
        kq(k, 4) = arr(i, 11)
        kq(k, 5) = arr(i, 13)
        kq(k, 6) = arr(i, 14)
        kq(k, 7) = 0
            LuykeNo = LuykeNo + kq(k, 6)
            LuykeCo = LuykeCo + kq(k, 7)
            kq(k, 8) = Application.Max(SoduNo - SoduCo + LuykeNo - LuykeCo, 0)
            kq(k, 9) = Application.Max(SoduCo - SoduNo + LuykeCo - LuykeNo, 0)
    ElseIf arr(i, 4) >= .Range("G1") And arr(i, 4) <= .Range("I1") _
    And arr(i, 13) = .Range("K2") And arr(i, 9) = .Range("K3") Then
        k = k + 1
        kq(k, 1) = arr(i, 2)
        kq(k, 2) = arr(i, 3)
        kq(k, 3) = arr(i, 4)
        kq(k, 4) = arr(i, 11)
        kq(k, 5) = arr(i, 12)
        kq(k, 6) = 0
        kq(k, 7) = arr(i, 14)
            LuykeNo = LuykeNo + kq(k, 6)
            LuykeCo = LuykeCo + kq(k, 7)
            kq(k, 8) = Application.Max(SoduNo - SoduCo + LuykeNo - LuykeCo, 0)
            kq(k, 9) = Application.Max(SoduCo - SoduNo + LuykeCo - LuykeNo, 0)
    End If
    Next i
Em nhờ bác chút ạ!
em cũng có code để tính sổ chi tiết nhưng không tính được số dư luỹ kế. nhờ bác có thể sửa hộ em với ạ!
em có sửa lại nhưng khi chạy code lần 1 thì tính đúng. nhưng khi tính lại thì lại bị sai. nhờ bác sửa lại giúp em với ạ!
 

File đính kèm

  • SOCHITIET.xlsm
    1.3 MB · Đọc: 6
Lần chỉnh sửa cuối:
Upvote 0
chạy code lần 1 thì tính đúng. nhưng khi tính lại thì lại bị sai.
Khai báo LuykeNo và LuykeCo bên trong thủ tục TaoSCT thay vì khai báo đầu Module. Lý do là khi chạy thủ tục lần sau thì 2 biến trên vẫn còn giữ giá trị của lần chạy trước, càng ngày càng tăng lên.
 
Upvote 0
Web KT

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

Back
Top Bottom