Mình tham gia lớp học "Lập trình VBA trong Excel" và đã hoàn thiện được file tính thuế thu nhập cá nhân này. Mình muốn chia sẻ với mọi người. Hi vọng phần nào giúp được các anh chị kế toán trong công việc.
Mình tham gia lớp học "Lập trình VBA trong Excel" và đã hoàn thiện được file tính thuế thu nhập cá nhân này. Mình muốn chia sẻ với mọi người. Hi vọng phần nào giúp được các anh chị kế toán trong công việc.
Bạn đã gọi là "Chia sẻ" mà Code của file đặt mật khẩu như thế thì hơi ...
Theo tôi đã không đưa lên diễn đàn thì thôi, còn đưa lên thì không nên đặt mật khẩu
(nói thật nếu đọc được code trong file bạn chỉ cần 5 giây là xong, chẳng qua mệt...)
Bạn đã gọi là "Chia sẻ" mà Code của file đặt mật khẩu như thế thì hơi ...
Theo tôi đã không đưa lên diễn đàn thì thôi, còn đưa lên thì không nên đặt mật khẩu
(nói thật nếu đọc được code trong file bạn chỉ cần 5 giây là xong, chẳng qua mệt...)
Mình nhờ ChatGPT hỗ trợ
'ChatGPT
Function ThueTNCN(TNTT As Double, namquythang As String) As Double
Dim x As Double
Dim heso As Double
Dim i As Integer
Dim thue As Double
Dim BacThue() As Double
Dim TyLeThue() As Double
x = TNTT / 1000000 ' Thu nh?p tính thu? (tri?u d?ng)
' Xác d?nh h? s? theo k? tính thu?
Select Case LCase(namquythang)
Case "thang": heso = 1
Case "quy": heso = 3
Case "nam": heso = 12
Case Else
ThueTNCN = 0
Exit Function
End Select
If x <= 0 Then
thue = 0
Else
For i = 0 To UBound(BacThue)
Dim mucDuoi As Double
Dim mucTren As Double
If i = UBound(BacThue) Then
mucDuoi = BacThue(i) * heso
mucTren = x ' Không gi?i h?n trên
Else
mucDuoi = BacThue(i) * heso
mucTren = BacThue(i + 1) * heso
End If
If x > mucDuoi Then
If x <= mucTren Then
thue = thue + (x - mucDuoi) * TyLeThue(i)
Exit For
Else
thue = thue + (mucTren - mucDuoi) * TyLeThue(i)
End If
End If
Next i
End If
ThueTNCN = thue * 1000000 ' Ð?i v? d?ng
End Function
Nhờ mọi người text thử do mình không là dân kế toán nên không biết thế nào
Cấu trúc hàm =ThueTNCN(Giatri;"thang") ; =ThueTNCN(Giatri;"quy") ; =ThueTNCN(Giatri;"nam")
Function ThueTNCN(TNTT As Double, namquythang As String) As Double
Dim x As Double
Dim heso As Double
Dim i As Integer
Dim thue As Double
Dim BacThue() As Double
Dim TyLeThue() As Double
x = TNTT / 1000000 ' Thu nh?p tính thu? (tri?u d?ng)
' Xác d?nh h? s? theo k? tính thu?
Select Case LCase(namquythang)
Case "thang": heso = 1
Case "quy": heso = 3
Case "nam": heso = 12
Case Else
ThueTNCN = 0
Exit Function
End Select
' Khai báo m?ng b?c thu? và t? l? thu?
BacThue = Array(0, 5, 10, 18, 32, 52, 80)
TyLeThue = Array(0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35)
If x <= 0 Then
thue = 0
Else
For i = 0 To UBound(BacThue)
Dim mucDuoi As Double
Dim mucTren As Double
If i = UBound(BacThue) Then
mucDuoi = BacThue(i) * heso
mucTren = x ' Không gi?i h?n trên
Else
mucDuoi = BacThue(i) * heso
mucTren = BacThue(i + 1) * heso
End If
If x > mucDuoi Then
If x <= mucTren Then
thue = thue + (x - mucDuoi) * TyLeThue(i)
Exit For
Else
thue = thue + (mucTren - mucDuoi) * TyLeThue(i)
End If
End If
Next i
End If
ThueTNCN = thue * 1000000 ' Ð?i v? d?ng
End Function
Bạn đưa code vào thẻ như thế này, chứ không phải đưa vào file như bài #10.
Cùng vấn đề trên mình thấy thuật toán của Copilot khác mình nhờ mọi người đã từng kinh nghiệm kế toán xem giúp code với các thuật toán có đúng không ?
Function ThueTNCN(TNTT As Double, kyTinhThue As String, Optional SoNguoiPhuThuoc As Integer = 0) As Double
Dim heSo As Integer, thue As Double, i As Integer
Dim BacThue As Variant, TyLeThue As Variant
Dim GiamTruBanThan As Double, GiamTruNguoiPhuThuoc As Double
Dim ThuNhapTinhThue As Double
' Định nghĩa mức giảm trừ
GiamTruBanThan = 11000000
GiamTruNguoiPhuThuoc = 4400000
' Xác định hệ số kỳ tính thuế
heSo = IIf(LCase(Trim(kyTinhThue)) = "thang", 1, IIf(LCase(Trim(kyTinhThue)) = "quy", 3, IIf(LCase(Trim(kyTinhThue)) = "nam", 12, 0)))
If heSo = 0 Then
ThueTNCN = CVErr(xlErrValue)
Exit Function
End If
' Tính thu nhập chịu thuế sau giảm trừ
ThuNhapTinhThue = (TNTT - (GiamTruBanThan + GiamTruNguoiPhuThuoc * SoNguoiPhuThuoc) * heSo) / 1000000
If ThuNhapTinhThue <= 0 Then
ThueTNCN = 0
Exit Function
End If
' Định nghĩa bảng thuế suất
BacThue = Array(5, 10, 18, 32, 52, 80)
TyLeThue = Array(0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35)
' Tính thuế theo từng bậc
thue = 0
For i = 0 To UBound(BacThue)
If ThuNhapTinhThue > IIf(i = 0, 0, BacThue(i - 1)) Then
thue = thue + (Application.Min(ThuNhapTinhThue, BacThue(i)) - IIf(i = 0, 0, BacThue(i - 1))) * TyLeThue(i)
Else
Exit For
End If
Next i
ThueTNCN = thue * 1000000 ' Quy đổi về đơn vị đồng
End Function
Function ThueTNCN(TNTT As Double, namquythang As String) As Double
Dim x As Double
Dim heso As Double
Dim i As Integer
Dim thue As Double
Dim BacThue() As Double
Dim TyLeThue() As Double
x = TNTT / 1000000 ' Thu nh?p tính thu? (tri?u d?ng)
' Xác d?nh h? s? theo k? tính thu?
Select Case LCase(namquythang)
Case "thang": heso = 1
Case "quy": heso = 3
Case "nam": heso = 12
Case Else
ThueTNCN = 0
Exit Function
End Select
' Khai báo m?ng b?c thu? và t? l? thu?
BacThue = Array(0, 5, 10, 18, 32, 52, 80)
TyLeThue = Array(0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35)
If x <= 0 Then
thue = 0
Else
For i = 0 To UBound(BacThue)
Dim mucDuoi As Double
Dim mucTren As Double
If i = UBound(BacThue) Then
mucDuoi = BacThue(i) * heso
mucTren = x ' Không gi?i h?n trên
Else
mucDuoi = BacThue(i) * heso
mucTren = BacThue(i + 1) * heso
End If
If x > mucDuoi Then
If x <= mucTren Then
thue = thue + (x - mucDuoi) * TyLeThue(i)
Exit For
Else
thue = thue + (mucTren - mucDuoi) * TyLeThue(i)
End If
End If
Next i
End If
ThueTNCN = thue * 1000000 ' Ð?i v? d?ng
End Function
Bạn đưa code vào thẻ như thế này, chứ không phải đưa vào file như bài #10.
Trích: Thư viện Pháp luật "...Có thể hiểu đơn giản, thu nhập chịu thuế là khoản thu nhập tổng hợp được xem xét để tính thuế, còn thu nhập tính thuế là thu nhập chịu thuế sau khi đã trừ các khoản miễn thuế, giảm thuế và khấu trừ khác."
Từ Thu nhập chịu thuế chỉ trừ gia cảnh (11Tr) và phụ thuộc (4.4Tr/người) là chưa đủ, còn thiếu nhiều khoản khác phải trừ.
Vã lại, theo kinh nghiệm riêng của tôi dùng code VBA để tính TNCN không linh động và tiện dùng bằng công thức excel.