Đây bạn ạ. Mình muống đánh số thứ thự các phiếu thu, chi theo tháng. vì khi làm mình nhập 1 loaajt, giờ filter lại để lọc nhưng lại k kéo tăng số thứ tự được ạChào cả nhà. Mong cả nhà chỉ giúp em cách đánh số thứ tự phiếu thu, chi, chứng từ ngân hàng theo thnags khi mình dùng filter ạ. Em cảm ơn!
A | B | C | |
1 | Ngày | Phiếu | Số |
2 | 1/1/2025 | PC | PC01001 |
3 | 1/1/2025 | PT | PT01001 |
4 | 1/2/2025 | PC | PC01002 |
5 | 1/2/2025 | PT | PT01002 |
6 | 2/9/2025 | PKT | PKT02001 |
7 | 3/1/2025 | PKT | PKT03001 |
8 | 3/5/2025 | PKT | PKT03002 |
9 | 3/20/2025 | PKT | PKT03003 |
10 | 3/31/2025 | PKT | PKT03004 |
Sub TaoMaPhieu()
Dim lastRow As Long, i As Long, j As Long
Dim ngay As Date
Dim namMa As String, thangMa As String, ngayMa As String, loaiMa As String
Dim soThuTu As String
Dim countSame As Integer
lastRow = Cells(Rows.Count, "A").End(xlUp).Row
For i = 2 To lastRow
If IsDate(Cells(i, 1).Value) Then
ngay = Cells(i, 1).Value
' Mã nam '
Select Case Year(ngay)
Case 2025: namMa = "E"
Case 2026: namMa = "F"
Case Else: namMa = "?"
End Select
' Mã tháng '
Select Case Month(ngay)
Case 10: thangMa = "A"
Case 11: thangMa = "B"
Case Else: thangMa = CStr(Month(ngay))
End Select
' Mã ngày '
Select Case Day(ngay)
Case 19: ngayMa = "J"
Case Else: ngayMa = CStr(Day(ngay))
End Select
' Mã lo?i phi?u '
Select Case Cells(i, 2).Value
Case "PC_": loaiMa = "C"
Case "PT_": loaiMa = "T"
Case "PCK": loaiMa = "CK"
Case Else: loaiMa = "?"
End Select
' Ð?m s? dòng tru?c dócó cùng ngày và lo?i phi?u '
countSame = 0
For j = 2 To i
If Cells(j, 1).Value = Cells(i, 1).Value And Cells(j, 2).Value = Cells(i, 2).Value Then
countSame = countSame + 1
End If
Next j
' S? th? t? d?ng 3 ch? s? '
soThuTu = Format(countSame, "000"
' Ghi mã phi?u vào c?t C '
Cells(i, 3).Value = namMa & thangMa & ngayMa & loaiMa & "_" & soThuTu
End If
Next i
MsgBox "Ðã t?o mã phi?u xong!", vbInformation
End Sub
cảm ơn bạn. Bạn có thể viết rõ công thức giùm mình được k ạMình có ý tưởng đánh phiếu thu chi tăng theo ngày của từng loại phiếu:
View attachment 309263
[Cột mã phiếu là cột mình mong muốn]
Mong muốn này của mình được Copilot thỏa đáng như macro dưới đây:
PHP:Sub TaoMaPhieu() Dim lastRow As Long, i As Long, j As Long Dim ngay As Date Dim namMa As String, thangMa As String, ngayMa As String, loaiMa As String Dim soThuTu As String Dim countSame As Integer lastRow = Cells(Rows.Count, "A").End(xlUp).Row For i = 2 To lastRow If IsDate(Cells(i, 1).Value) Then ngay = Cells(i, 1).Value ' Mã nam ' Select Case Year(ngay) Case 2025: namMa = "E" Case 2026: namMa = "F" Case Else: namMa = "?" End Select ' Mã tháng ' Select Case Month(ngay) Case 10: thangMa = "A" Case 11: thangMa = "B" Case Else: thangMa = CStr(Month(ngay)) End Select ' Mã ngày ' Select Case Day(ngay) Case 19: ngayMa = "J" Case Else: ngayMa = CStr(Day(ngay)) End Select ' Mã lo?i phi?u ' Select Case Cells(i, 2).Value Case "PC_": loaiMa = "C" Case "PT_": loaiMa = "T" Case "PCK": loaiMa = "CK" Case Else: loaiMa = "?" End Select ' Ð?m s? dòng tru?c dócó cùng ngày và lo?i phi?u ' countSame = 0 For j = 2 To i If Cells(j, 1).Value = Cells(i, 1).Value And Cells(j, 2).Value = Cells(i, 2).Value Then countSame = countSame + 1 End If Next j ' S? th? t? d?ng 3 ch? s? ' soThuTu = Format(countSame, "000" ' Ghi mã phi?u vào c?t C ' Cells(i, 3).Value = namMa & thangMa & ngayMa & loaiMa & "_" & soThuTu End If Next i MsgBox "Ðã t?o mã phi?u xong!", vbInformation End Sub
nếu mình k thêm cột phụ thì có công thức nào khác k bạn
Nếu ý tưởng của bạn là ra kết quả như thế này thì có thể thêm cột phụ loại phiếu và áp dụng công thức cho cả cột số phiếu: =B2&TEXT(MONTH(A2),"00")&TEXT(COUNTIFS(B$1:B2,B2,A$1:A2,">="&DATE(YEAR(A2),MONTH(A2),1),A$1:A2,"<"&EOMONTH(A2,0)+1),"000")
A B C 1 Ngày Phiếu Số 2 1/1/2025 PC PC01001 3 1/1/2025 PT PT01001 4 1/2/2025 PC PC01002 5 1/2/2025 PT PT01002 6 2/9/2025 PKT PKT02001 7 3/1/2025 PKT PKT03001 8 3/5/2025 PKT PKT03002 9 3/20/2025 PKT PKT03003 10 3/31/2025 PKT PKT03004
ví dụ nợ 112BV là PC, có 112BV là PT bạn ạ. Còn mấy chứng từ luân chuyển nội bộ mình sẽ đổi tên PKTNếu bạn không thêm cột phụ thì bạn cần làm rõ điều kiện nào là phiếu thu, điều kiện nào là phiếu chi... Vì mình đang thấy file của bạn điền phiếu thu và chi không tương ứng với tài khoản Nợ Có.
View attachment 309276
bạn gửi lại giùm mình file bạn làm được k ạ. Mình copy công thức mà k ra kết quảĐây là ý tưởng tách phiếu Thu, Chi, Ngân hàng, Phiếu kế toán theo tài khoản 112 không cần tách cột phụ bạn có thể thử ( công thức áp dụng cả cột "số hiệu"):
View attachment 309280
=IFS(AND(LEFT(D3,3)="112",LEFT(E3,3)="112"),"NH"&TEXT(MONTH(A3),"00")&TEXT(COUNTIFS($D$2: D3,"112*",$E$2:E3,"112*",A$2:A3,">="&DATE(YEAR(A3),MONTH(A3),1),A$2:A3,"<"&EOMONTH(A3,0)+1),"000"),
AND(LEFT(D3,3)<>"112",LEFT(E3,3)<>"112"),"PKT"&TEXT(MONTH(A3),"00")&TEXT(COUNTIFS($D$2: D3,"<>112*",$E$2:E3,"<>112*",A$2:A3,">="&DATE(YEAR(A3),MONTH(A3),1),A$2:A3,"<"&EOMONTH(A3,0)+1),"000"),
AND(LEFT(D3,3)="112",LEFT(E3,3)<>"112"), "PC"&TEXT(MONTH(A3),"00")&TEXT(COUNTIFS($D$2: D3,D3,A$2:A3,">="&DATE(YEAR(A3),MONTH(A3),1),A$2:A3,"<"&EOMONTH(A3,0)+1),"000"),
AND(LEFT(D3,3)<>"112",LEFT(E3,3)="112"),"PT"&TEXT(MONTH(A3),"00")&TEXT(COUNTIFS($E$2:E3,E3,A$2:A3,">="&DATE(YEAR(A3),MONTH(A3),1),A$2:A3,"<"&EOMONTH(A3,0)+1),"000"))
* với trường hợp có tài khoản 111 bạn thêm tiêu chí để phân loại trong công thức*
bạn thêm giùm mình công thưc thu chi tk 111 luôn nhé. Caem ơn bạn nhiều ạĐây là ý tưởng tách phiếu Thu, Chi, Ngân hàng, Phiếu kế toán theo tài khoản 112 không cần tách cột phụ bạn có thể thử ( công thức áp dụng cả cột "số hiệu"):
View attachment 309280
=IFS(AND(LEFT(D3,3)="112",LEFT(E3,3)="112"),"NH"&TEXT(MONTH(A3),"00")&TEXT(COUNTIFS($D$2: D3,"112*",$E$2:E3,"112*",A$2:A3,">="&DATE(YEAR(A3),MONTH(A3),1),A$2:A3,"<"&EOMONTH(A3,0)+1),"000"),
AND(LEFT(D3,3)<>"112",LEFT(E3,3)<>"112"),"PKT"&TEXT(MONTH(A3),"00")&TEXT(COUNTIFS($D$2: D3,"<>112*",$E$2:E3,"<>112*",A$2:A3,">="&DATE(YEAR(A3),MONTH(A3),1),A$2:A3,"<"&EOMONTH(A3,0)+1),"000"),
AND(LEFT(D3,3)="112",LEFT(E3,3)<>"112"), "PC"&TEXT(MONTH(A3),"00")&TEXT(COUNTIFS($D$2: D3,D3,A$2:A3,">="&DATE(YEAR(A3),MONTH(A3),1),A$2:A3,"<"&EOMONTH(A3,0)+1),"000"),
AND(LEFT(D3,3)<>"112",LEFT(E3,3)="112"),"PT"&TEXT(MONTH(A3),"00")&TEXT(COUNTIFS($E$2:E3,E3,A$2:A3,">="&DATE(YEAR(A3),MONTH(A3),1),A$2:A3,"<"&EOMONTH(A3,0)+1),"000"))
* với trường hợp có tài khoản 111 bạn thêm tiêu chí để phân loại trong công thức*