Đánh số chứng từ thu chi bằng code VBA (1 người xem)

Liên hệ QC

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

thinhnx22

Thành viên hoạt động
Tham gia
22/12/15
Bài viết
182
Được thích
38
Gửi Anh chị,
Mình có file đính kèm muốn nhờ mọi người đánh số chứng từ thu chi ở cột A. Tài khoản 1111 nằm ở bên nợ là phiếu thu, nằm bên có là phiếu chi. Ví dụ: PC02/01 có ỹ nghĩa số 02 là số phiếu chi số 2 của tháng 1. PC02/03 là số phiếu chi số 02 của tháng 03. Chi tiết mình gửi file đính kèm.
Nhờ anh chị tư vấn dùm.
Cảm ơn anh chị nhiều.
 

File đính kèm

Gửi Anh chị,
Mình có file đính kèm muốn nhờ mọi người đánh số chứng từ thu chi ở cột A. Tài khoản 1111 nằm ở bên nợ là phiếu thu, nằm bên có là phiếu chi. Ví dụ: PC02/01 có ỹ nghĩa số 02 là số phiếu chi số 2 của tháng 1. PC02/03 là số phiếu chi số 02 của tháng 03. Chi tiết mình gửi file đính kèm.
Nhờ anh chị tư vấn dùm.
Cảm ơn anh chị nhiều.
Bạn dùng code:
Mã:
Sub test()
Dim i, pt As Integer, pc As Integer
pt=pc=1
For i = 6 To Range("B" & Rows.Count).End(3).Row
    If Month(Cells(i, 2)) <> Month(Cells(i - 1, 2)) Then
        pt = 1
        pc = 1
    End If
    If Cells(i, 3) = 1111 Then
        Cells(i, 1) = "PT" & Format(pt, "00") & "/" & Format(Month(Cells(i, 2)), "00")
        pt = pt + 1
    End If
    If Cells(i, 4) = 1111 Then
        Cells(i, 1) = "PC" & Format(pc, "00") & "/" & Format(Month(Cells(i, 2)), "00")
        pc = pc + 1
    End If
    
Next
End Sub
 
Upvote 0
Bạn dùng code:
Mã:
Sub test()
Dim i, pt As Integer, pc As Integer
pt=pc=1
For i = 6 To Range("B" & Rows.Count).End(3).Row
    If Month(Cells(i, 2)) <> Month(Cells(i - 1, 2)) Then
        pt = 1
        pc = 1
    End If
    If Cells(i, 3) = 1111 Then
        Cells(i, 1) = "PT" & Format(pt, "00") & "/" & Format(Month(Cells(i, 2)), "00")
        pt = pt + 1
    End If
    If Cells(i, 4) = 1111 Then
        Cells(i, 1) = "PC" & Format(pc, "00") & "/" & Format(Month(Cells(i, 2)), "00")
        pc = pc + 1
    End If
    
Next
End Sub
Mình cảm ơn bạn. Code như vậy mình test thấy ok rồi. Không biết bạn nào có cách nào dùng công thức giải quyết được bài này hay không? Chân thành cảm ơn.
 
Upvote 0
Mình cảm ơn bạn. Code như vậy mình test thấy ok rồi. Không biết bạn nào có cách nào dùng công thức giải quyết được bài này hay không? Chân thành cảm ơn.

Vậy tiêu đề bỏ từ code VBA đi nhé. Vì sẽ có những cao thủ ko rành VBA, nhưng công thức cao siêu thì sao. --=0
 
Upvote 0
Mình cảm ơn bạn. Code như vậy mình test thấy ok rồi. Không biết bạn nào có cách nào dùng công thức giải quyết được bài này hay không? Chân thành cảm ơn.
Công thức thì thế này (cho ô A6):
Mã:
=IF(C6=1111,"PT"&TEXT(SUMPRODUCT((MONTH(B$6:B6)=MONTH(B6))*(C$6:C6=1111)),"00"),"PC"&TEXT(SUMPRODUCT((MONTH(B$6:B6)=MONTH(B6))*(D$6:D6=1111)),"00"))&"/"&TEXT(B6,"mm")
 
Upvote 0
Upvote 0
ý tưởng dùng công thức cũng giống hướng bạn xử lý code, nhưng mình nghĩ chưa ra.

Mã:
=choose(match(1111,c6:d6,0),"pc","pt")&text(countifs($b$6:b6,">="&date(year(b6),month(b6),1),$b$6:b6,"<="&date(year(b6),month(b6),eomonth(b6,0)),choose(match(1111,c6:d6,0),$c$6:c6,$d$6:d6),1111),"00")&"/"&text(month(b6),"00")
 
Upvote 0
Rút gọn một chút thì công thức trên trở thành:
Mã:
=IF(C6=1111,"PT","PC")&TEXT(SUMPRODUCT((MONTH(B$6:B6)=MONTH(B6))*(IF(C6=1111,C$6:C6,D$6:D6)=1111)),"00")&"/"&TEXT(B6,"mm")
Cẩn thận hơn chút nữa để phòng trường hợp chuyển sang năm khác thì dùng công thức này (công thức trên sẽ cho kết quả sai nếu trong dữ liệu có 2 tháng giống nhau của 2 năm khác nhau, chẳng hạn tháng 1/2016 và tháng 1/2017):
Mã:
=IF(C6=1111,"PT","PC")&TEXT(SUMPRODUCT((TEXT(B$6:B6,"YYMM")=TEXT(B6,"YYMM"))*(IF(C6=1111,C$6:C6,D$6:D6)=1111)),"00")&"/"&TEXT(B6,"MM")
 
Upvote 0
Mã:
=choose(match(1111,c6:d6,0),"pc","pt")&text(countifs($b$6:b6,">="&date(year(b6),month(b6),1),$b$6:b6,"<="&date(year(b6),month(b6),eomonth(b6,0)),choose(match(1111,c6:d6,0),$c$6:c6,$d$6:d6),1111),"00")&"/"&text(month(b6),"00")
Toàn công thức hay, cảm ơn tất cả các anh , các bạn đã nhiệt tình giúp đỡ.
 
Upvote 0
Web KT

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

Back
Top Bottom