Viết công thức tính thuế trong excel bằng VB
Xin chào các bạn,
Có ai có Adds-In về công thức tính thuế TNCN năm 2009 (gồm cách tính theo lương Net va Gross).
Xin cảm ơn.
Anh Tú.
Gởi tặng các bác thủ tục viết công thức tính thuế TNCN cho bảng excel:
(Lưu ý: thủ tục này không tính ra giá trị mà viết công thức cho excel (để dễ kiểm tra ấy mà, bác nào làm kế toán sẽ chẳng tin con số nào hết)
Public Sub TinhThueThuNhap(Sh As Object, dongDau, dongCuoi, _
cotTongThuNhap, cotTienThemGio, cotBHXH, cotGiamTruGiaCanh, cotThueThuNhap)
'Sh là sheet chứa các cột các cột Tổng thu nhập, Tiền thêm giờ, Phí BHXH, Ytế, Giảm trừ gia cảnh
'dongDau, dongCuoi là các dòng đầu tiên và cuối cùng chứa các dòng cần tính thuế
Dim i, tienTinhThue As Double, congThuc$
Dim bacTinhThue(7), mucThue(7), mucTienTru(7), cachTinhThue(7)
bacTinhThue(0) = 4000000
bacTinhThue(1) = 5000000
bacTinhThue(2) = 10000000
bacTinhThue(3) = 18000000
bacTinhThue(4) = 32000000
bacTinhThue(5) = 52000000
bacTinhThue(6) = 80000000
'motTinhThue(7) tren 80
mucThue(0) = 0
mucThue(1) = 0.05
mucThue(2) = 0.1
mucThue(3) = 0.15
mucThue(4) = 0.2
mucThue(5) = 0.25
mucThue(6) = 0.3
mucThue(7) = 0.35
mucTienTru(0) = 0
mucTienTru(1) = 250000
mucTienTru(2) = 750000
mucTienTru(3) = 1650000
mucTienTru(4) = 3250000
mucTienTru(5) = 5850000
mucTienTru(6) = 9850000
cachTinhThue(1) = "5%"
cachTinhThue(2) = "10% - 2tr5"
cachTinhThue(3) = "15% - 7tr5"
cachTinhThue(4) = "20% - 1tr65"
cachTinhThue(5) = "25% - 3tr25"
cachTinhThue(6) = "30% - 5tr85"
cachTinhThue(7) = "35% - 9tr85"
With Sh
'unhide
.Cells.EntireRow.Hidden = False
For i = dongDau To dongCuoi
tienTinhThue = .Cells.Item(i, cotTongThuNhap) _
- bacTinhThue(0) _
- .Cells.Item(i, cotTienThemGio) _
- .Cells.Item(i, cotBHXH) _
- .Cells.Item(i, cotGiamTruGiaCanh)
congThuc = "(RC[" & cotTongThuNhap - cotThueThuNhap & "]" _
& "-" & bacTinhThue(0) _
& "-RC[" & cotTienThemGio - cotThueThuNhap & "]" _
& "-RC[" & cotBHXH - cotThueThuNhap & "]" _
& "-RC[" & cotGiamTruGiaCanh - cotThueThuNhap & "])"
'thue thu nhap tinh theo tung muc thue khac nha
If tienTinhThue > bacTinhThue(6) Then 'tj 80 trieu dong
congThuc = "=ROUND(" & congThuc & "*" & Format(mucThue(7), "0%") & ",0)" & "-" & mucTienTru(6)
.Cells.Item(i, C_NOTE) = Format(tienTinhThue, "#,##0") & " x " & cachTinhThue(7)
ElseIf tienTinhThue >= bacTinhThue(5) Then 'tu 52 trieu dong
congThuc = "=ROUND(" & congThuc & "*" & Format(mucThue(6), "0%") & ",0)" & "-" & mucTienTru(5)
ElseIf tienTinhThue >= bacTinhThue(4) Then 'tu 32 trieu dong
congThuc = "=ROUND(" & congThuc & "*" & Format(mucThue(5), "0%") & ",0)" & "-" & mucTienTru(4)
ElseIf tienTinhThue >= bacTinhThue(3) Then 'tu 18 trieu dong
congThuc = "=ROUND(" & congThuc & "*" & Format(mucThue(4), "0%") & ",0)" & "-" & mucTienTru(3)
ElseIf tienTinhThue >= bacTinhThue(2) Then 'tu 10 trieu dong
congThuc = "=ROUND(" & congThuc & "*" & Format(mucThue(3), "0%") & ",0)" & "-" & mucTienTru(2)
ElseIf tienTinhThue >= bacTinhThue(1) Then 'tu 5 trieu dong
congThuc = "=ROUND(" & congThuc & "*" & Format(mucThue(2), "0%") & ",0)" & "-" & mucTienTru(1)
ElseIf tienTinhThue > 0 Then 'den 5 trieu dong
congThuc = "=ROUND(" & congThuc & "*" & Format(mucThue(1), "0%") & ",0)" & "-" & mucTienTru(0)
Else 'khong chiu thue
congThuc = "0"
End If
.Cells.Item(i, cotThueThuNhap).FormulaR1C1 = congThuc
Next
End With
End Sub