Thống nhất với dht. Tôi gởi các bạn một số hàm tính trong excel, thuận tiện cho các bạn chưa hiểu về lập trình nhưng khi thay đổi các chính sách thuế không cần thay đổi chương trình mà chỉ thêm vào hàm setarray().
Cách làm (dành cho người chưa viết CT) là mở tool\macro\view macro... (nếu đã có macro), chưa có macro tool\macro\record macro..., sau đó nhấn button edit; hoặc vào \visual basic\ insert module => past code có chữ màu xanh dưới đây. Và để chuyển từ máy này sang máy khác thì save add-in file dưới dạng *.xla, hoặc *.xlam (version 2007).
Lưu ý: có 02 hàm public để sử dụng trong bảng tính, ví dụ tính thuế pitval(a1,b1) trong đó: a1 là cell thu nhập đã trừ gia cảnh, b1 là năm thu nhập-năm chính sách thuế áp dụng (các bạn nên set cả tháng áp dụng cs thuế ví dụ như theo TT81 thì năm 2004 có 02 biểu thuế).
To all, một tuần làm việc hiệu quả!
Option Explicit
Private Sub setarray(t_array(), i_array(), pyear)
'co the xac dinh data theo thang nam (vi co nhung nam co 2 chinh sach thue), duoi day la vi du minh hoa
Select Case (pyear)
Case Is >= 2009
t_array = Array(0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35)
i_array = Array(0, 5000000, 10000000, 18000000, 32000000, 52000000, 80000000)
Case Else
t_array = Array(0.1, 0.2, 0.3, 0.4)
i_array = Array(5000000, 15000000, 25000000, 40000000)
End Select
End Sub
Private Function pitf(inc, iar(), tar(), n1, n2)
If n2 > UBound(iar, 1) Then
pitf = pitf + (inc - iar(UBound(iar, 1))) * tar(UBound(tar, 1))
Else
If inc <= iar(n2) Then
pitf = pitf + (inc - iar(n1)) * tar(n1)
Else
pitf = (iar(n2) - iar(n1)) * tar(n1) + pitf(inc, iar(), tar(), n1 + 1, n2 + 1)
End If
End If
End Function
Private Function nconvert(net, iar(), tar(), n1, n2)
'ham chinh tinh net thanh gross
Dim temp_net
temp_net = 0
If n2 <= UBound(iar, 1) Then
temp_net = net - (iar(n2) - iar(n1) - (iar(n2) - iar(n1)) * tar(n1))
End If
If temp_net > 0 Then
nconvert = nconvert(temp_net, iar(), tar(), n1 + 1, n2 + 1)
Else
nconvert = iar(n1) + Round(net / (1 - tar(n1)), 0)
End If
End Function
Public Function pitval(income, pyear)
'su dung trong bang tinh
if income<=0 then
pitval=0
exit function
end if
Dim tarray(), iarray()
Call setarray(tarray(), iarray(), pyear) 'thiet lap data thue theo chinh sach thue
pitval = pitf(income, iarray, tarray, 0, 1)
End Function
Public Function net2gross(net, pyear)
'chuyen net thanh gross su dung trong bang tinh
if net<=0 then
net2gross=0
exit function
end if
Dim tarray(), iarray()
Call setarray(tarray(), iarray(), pyear) 'thiet lap data thue theo chinh sach thue
net2gross = nconvert(net, iarray(), tarray(), 0, 1)
End Function