Công thức và hàm tính Thuế Thu Nhập Cá Nhân Năm 2009

Liên hệ QC

hoangdanh282vn

Nguyễn Cảnh Hoàng Danh
Thành viên danh dự
Tham gia
21/12/07
Bài viết
1,900
Được thích
5,277
Nghề nghiệp
Kinh doanh các mặt hàng văn phòng phẩm
Mình gửi các bạn công thức và hàm tính thuế thu nhập cá nhân năm 2009, áp dụng cho các khoản Thu nhập từ tiền lương, tiền công và kinh doanh.

1. Công thức :
=MAX(CHOOSE(IF(E2>80*10^6,7,IF(E2>52*10^6,6,IF(E2>32*10^6,5,IF(E2>18*10^6,4,IF(E2>10*10^6,3,IF(E2>5*10^6,2,1)))))),E2*5%,E2*10%-250000,E2*15%-750000,E2*20%-1650000,E2*25%-3250000,E2*30%-5850000,E2*35%-9850000),0)
Với E2 là Thu nhập từ tiền công, tiền lương và kinh doanh, sau khi trừ đi tất cả các khoản giảm trừ

2. Hàm :
PHP:
Function PIT2009(ThuNhap As Double, Optional PhuThuoc As Byte = 0, Optional GiamTru As Double = 0) As Double
    ThuNhap = Round(ThuNhap, 0)
    ThuNhap = ThuNhap - 4000000 - PhuThuoc * 1600000 - GiamTru
    Select Case ThuNhap
        Case 1 To 5000000: PIT2009 = ThuNhap * 0.05
        Case 5000001 To 10000000: PIT2009 = ThuNhap * 0.1 - 250000
        Case 10000001 To 18000000: PIT2009 = ThuNhap * 0.15 - 750000
        Case 18000001 To 32000000: PIT2009 = ThuNhap * 0.2 - 1650000
        Case 32000001 To 52000000: PIT2009 = ThuNhap * 0.25 - 3250000
        Case 52000001 To 80000000: PIT2009 = ThuNhap * 0.3 - 5850000
        Case Is > 80000000: PIT2009 = ThuNhap * 0.35 - 9850000
    End Select
End Function
Với Thunhap là khoản Thu nhập từ tiền công, tiền lương và kinh doanh, chưa trừ bất kỳ khoản giảm trừ nào như giảm trừ cho bản thân, người phụ thuộc, BHXH...

Phuthuoc là số người phụ thuộc được giảm trừ.

Giamtru là tổng các khoản giảm trừ (không bao gồm giảm trừ cho người phụ thuộc và cho bản thân 4,000,000 đ.
 

File đính kèm

  • Thue TNCN2009 - PIT2009.rar
    72.3 KB · Đọc: 7,378
Lần chỉnh sửa cuối:
Cách mình làm thì:
1. Không có giảm trừ
2. Không khai báo biến nhiều, chơi variance luôn cho tiện :)
3. Có thêm 1 vài hàm tính xuôi tính ngược cho vui.
[highlight=vb]' Copy right by www.giaiphapexcel.com
' Coded by Do Nguyen Binh - OverAC
' overac@giaiphapexcel.com
Function pitfromgross(Gross_Salary, Optional dependance = 0)
TI = Gross_Salary - 4000000 - dependance * 1600000

If TI < 0 Then
pitfromgross = 0
ElseIf TI < 5000000 Then
pitfromgross = TI * 0.05
ElseIf TI < 10000000 Then
pitfromgross = (TI - 5000000) * 0.1 + 250000
ElseIf TI < 18000000 Then
pitfromgross = (TI - 10000000) * 0.15 + 750000
ElseIf TI < 32000000 Then
pitfromgross = (TI - 18000000) * 0.2 + 1950000
ElseIf TI < 52000000 Then
pitfromgross = (TI - 32000000) * 0.25 + 4750000
ElseIf TI < 80000000 Then
pitfromgross = (TI - 52000000) * 0.3 + 9750000
Else
pitfromgross = (TI - 80000000) * 0.35 + 18150000
End If
End Function
Function grosstonet(Gross_Salary, Optional dependance = 0)
grosstonet = Gross_Salary - pitfromgross(Gross_Salary, dependance)
End Function
Function pitfromnet(Net_Salary, Optional dependance = 0)
base = 4000000 + dependance * 1600000
If Net_Salary < base Then
pitfromnet = 0
ElseIf Net_Salary < base + 4750000 Then
pitfromnet = (Net_Salary - base) * 0.05 / 0.95
ElseIf Net_Salary < base + 9250000 Then
pitfromnet = (Net_Salary - base - 4750000) * 0.1 / 0.9 + 250000
ElseIf Net_Salary < base + 16050000 Then
pitfromnet = (Net_Salary - base - 9250000) * 0.15 / 0.85 + 750000
ElseIf Net_Salary < base + 27250000 Then
pitfromnet = (Net_Salary - base - 16050000) * 0.2 / 0.8 + 1950000
ElseIf Net_Salary < base + 42250000 Then
pitfromnet = (Net_Salary - base - 27250000) * 0.25 / 0.75 + 4750000
ElseIf Net_Salary < base + 61850000 Then
pitfromnet = (Net_Salary - base - 42250000) * 0.3 / 0.7 + 9750000
Else
pitfromnet = (Net_Salary - base - 61850000) * 0.35 / 0.65 + 18150000
End If
End Function
Function nettogross(Net_Salary, Optional dependance = 0)
base = 4000000 + dependance * 1600000
If Net_Salary < base Then
nettogross = Net_Salary
ElseIf Net_Salary < base + 4750000 Then
nettogross = (Net_Salary - base) / 0.95 + base
ElseIf Net_Salary < base + 9250000 Then
nettogross = (Net_Salary - base - 4750000) / 0.9 + base + 5000000
ElseIf Net_Salary < base + 16050000 Then
nettogross = (Net_Salary - base - 9250000) / 0.85 + base + 10000000
ElseIf Net_Salary < base + 27250000 Then
nettogross = (Net_Salary - base - 16050000) / 0.8 + base + 18000000
ElseIf Net_Salary < base + 42250000 Then
nettogross = (Net_Salary - base - 27250000) / 0.75 + base + 32000000
ElseIf Net_Salary < base + 61850000 Then
nettogross = (Net_Salary - base - 42250000) / 0.7 + base + 52000000
Else
nettogross = (Net_Salary - base - 61850000) / 0.65 + base + 80000000
End If
End Function
Function grossfromnet(Net_Salary, Optional dependance = 0)
grossfromnet = nettogross(Net_Salary, dependance)
End Function
Function Netfromgross(Gross_Salary, Optional dependance = 0)
Netfromgross = grosstonet(Gross_Salary, dependance)
End Function[/highlight]
 

File đính kèm

  • PIT_calculators_2009.zip
    12 KB · Đọc: 1,758
Lần chỉnh sửa cuối:
Nhân đây, cũng xin gửi đến các bạn hàm tính thuế TNCN từ thu nhập Net.


* Thuế TNCN từ Thu nhập Gross
Public Function PIT(ThuNhap As Double) As Double
If ThuNhap<= 5000000 Then
PIT = 0
ElseIf ThuNhap<= 5000000 Then
PIT = ThuNhap* 5 / 100
ElseIf ThuNhap<=10000000 Then
PIT = ThuNhap* 10 / 100 - 250000
ElseIf ThuNhap<= 18000000 Then
PIT = ThuNhap* 15 / 100 – 750000
ElseIf ThuNhap<= 32000000 Then
PIT = ThuNhap* 20 / 100 – 1650000
ElseIf ThuNhap<= 52000000 Then
PIT = ThuNhap* 25 / 100 – 3250000
ElseIf ThuNhap<= 80000000 Then
PIT = ThuNhap* 30 / 100 – 5850000
Else
PIT = ThuNhap* 35 / 100 - 9850000
End If
End Function


* Thuế TNCN từ Thu nhập Net
Public Function PITNET(ThuNhapNet As Double) As Double
Dim ThuNhapGross As Double
ThuNhapGross = ThuNhapNet
Do Until Round(PIT(ThuNhapGross), 0) = ThuNhapGross - ThuNhapNet
If ThuNhapGross - Round(PIT(ThuNhapGross), 0) < ThuNhapNet Then
ThuNhapGross = ThuNhapNet + Round(PIT(ThuNhapGross), 0)
Else
ThuNhapGross = ThuNhapNet - Round(PIT(ThuNhapGross), 0)
End If
Loop
PITNET = Round(PIT(ThuNhapGross), 0)

End Function
 
Lần chỉnh sửa cuối:
2. Hàm :
PHP:
Function PIT2009(ThuNhap As Double, Optional PhuThuoc As Byte = 0, Optional GiamTru As Double = 0) As Double
    ThuNhap = Round(ThuNhap, 0)
    ThuNhap = ThuNhap - 4000000 - PhuThuoc * 1600000 - GiamTru
    Select Case ThuNhap
        Case Is <= 0: PIT2009 = 0
        Case 1 To 5000000: PIT2009 = ThuNhap * 0.05
        Case 5000001 To 10000000: PIT2009 = ThuNhap * 0.1 - 250000
        Case 10000001 To 18000000: PIT2009 = ThuNhap * 0.15 - 750000
        Case 18000001 To 32000000: PIT2009 = ThuNhap * 0.2 - 1650000
        Case 32000001 To 52000000: PIT2009 = ThuNhap * 0.25 - 3250000
        Case 52000001 To 80000000: PIT2009 = ThuNhap * 0.3 - 5850000
        Case Is > 80000000: PIT2009 = ThuNhap * 0.35 - 9850000
    End Select
End Function

Chau chuốt thêm chút xíu :


PHP:
Function PIT2009(ThuNhap As Double, Optional PhuThuoc As Byte = 0, Optional GiamTru As Double = 0) As Double
    Application.Volatile (False)
    ThuNhap = Round(ThuNhap, 0)
    ThuNhap = ThuNhap - 4000000 - PhuThuoc * 1600000 - GiamTru
    Select Case ThuNhap
        Case 1 To 5000000: PIT2009 = ThuNhap * 0.05
        Case 5000001 To 10000000: PIT2009 = ThuNhap * 0.1 - 250000
        Case 10000001 To 18000000: PIT2009 = ThuNhap * 0.15 - 750000
        Case 18000001 To 32000000: PIT2009 = ThuNhap * 0.2 - 1650000
        Case 32000001 To 52000000: PIT2009 = ThuNhap * 0.25 - 3250000
        Case 52000001 To 80000000: PIT2009 = ThuNhap * 0.3 - 5850000
        Case Is > 80000000: PIT2009 = ThuNhap * 0.35 - 9850000
    End Select
End Function

Thân!
 
Optional PhuThuoc As Byte = 0, Optional GiamTru As Double = 0

Thưa các anh
Em hỏi chút xíu thôi, tại sao mình phải thêm = 0 vào sau byte và Double ạ
khi nào mình khai báo optional ở trước biến??

Cám ơn các anh
 
Lần chỉnh sửa cuối:
Optional PhuThuoc As Byte = 0
1. Optional: tham số có thể bỏ qua trong công thức có dùng hàm

2. = 0: Nghĩa là nếu bỏ qua (như điều 1), thì có sẵn giá trị zero để xét theo tham số này khi nó bằng zero.
Khi viết hàm, người viết có thể quy định khác, thí dụ = 1, thì khi bỏ qua, sẽ xét theo tham số này khi nó bằng 1
 
Mình gửi các bạn công thức và hàm tính thuế thu nhập cá nhân năm 2009, áp dụng cho các khoản Thu nhập từ tiền lương, tiền công và kinh doanh.

1. Công thức :
Với E2 là Thu nhập từ tiền công, tiền lương và kinh doanh, sau khi trừ đi tất cả các khoản giảm trừ

2. Hàm :
PHP:
Function PIT2009(ThuNhap As Double, Optional PhuThuoc As Byte = 0, Optional GiamTru As Double = 0) As Double
    ThuNhap = Round(ThuNhap, 0)
    ThuNhap = ThuNhap - 4000000 - PhuThuoc * 1600000 - GiamTru
    Select Case ThuNhap
        Case 1 To 5000000: PIT2009 = ThuNhap * 0.05
        Case 5000001 To 10000000: PIT2009 = ThuNhap * 0.1 - 250000
        Case 10000001 To 18000000: PIT2009 = ThuNhap * 0.15 - 750000
        Case 18000001 To 32000000: PIT2009 = ThuNhap * 0.2 - 1650000
        Case 32000001 To 52000000: PIT2009 = ThuNhap * 0.25 - 3250000
        Case 52000001 To 80000000: PIT2009 = ThuNhap * 0.3 - 5850000
        Case Is > 80000000: PIT2009 = ThuNhap * 0.35 - 9850000
    End Select
End Function
Với Thunhap là khoản Thu nhập từ tiền công, tiền lương và kinh doanh, chưa trừ bất kỳ khoản giảm trừ nào như giảm trừ cho bản thân, người phụ thuộc, BHXH...

Phuthuoc là số người phụ thuộc được giảm trừ.

Giamtru là tổng các khoản giảm trừ (không bao gồm giảm trừ cho người phụ thuộc và cho bản thân 4,000,000 đ.
sao lại có các số như là 75000, 1650000...5850000 ấy nhỉ? tớ chả hiểu gì cả, híc các bác giải thích kỹ giúp với :=\+
 

File đính kèm

  • 02.PL-TNCN - Bang huong dan tinh thue luy tien.DOC
    51.5 KB · Đọc: 542
Theo mình nghỉ, tất cả các sản phẩm bên trên để tính TTN đều có thể ước lượt.

Các bạn có thấy không, trong các hàm có quá nhiều số '0'; Trông tối mắt & dễ dẫn đến sai trái
Còn phía bên kia, phương thức đặt thừa số chung ta quen từ cấp II, nhưng chưa tác giả nào áp dụng!
Xin đơn cử:
Mã:
Public Function PIT(ThuNhap As Double) As Double
If ThuNhap<= 5000000 Then
PIT = 0
ElseIf ThuNhap<= 5000000 Then
PIT = ThuNhap* 5 / 100
ElseIf ThuNhap<=10000000 Then
PIT = ThuNhap* 10 / 100 - 250000
ElseIf ThuNhap<= 18000000 Then
PIT = ThuNhap* 15 / 100 – 750000
ElseIf ThuNhap<= 32000000 Then
PIT = ThuNhap* 20 / 100 – 1650000
ElseIf ThuNhap<= 52000000 Then
PIT = ThuNhap* 25 / 100 – 3250000
ElseIf ThuNhap<= 80000000 Then
PIT = ThuNhap* 30 / 100 – 5850000
Else
PIT = ThuNhap* 35 / 100 - 9850000
End If
End Function
Ta có thể viết lại như sau:
PHP:
Public Function PIT(ThuNhap As Double) As Double
 Const Tr As Double = 10^6      '<='
ThuNhap =ThuNhap / Tr           '<='

If ThuNhap<= 5 Then '?'
PIT = 0
ElseIf ThuNhap<= 5 Then '?'
PIT = ThuNhap* 5 / 100
ElseIf ThuNhap<=10 Then
PIT = ThuNhap* 10 / 100 - .250
ElseIf ThuNhap<= 18 Then
PIT = ThuNhap* 15 / 100 – .75
ElseIf ThuNhap<= 32000000 Then
PIT = ThuNhap* 20 / 100 – 1.65
ElseIf ThuNhap<= 52 Then
PIT = ThuNhap* 25 / 100 – 3.25
ElseIf ThuNhap<= 80 Then
PIT = ThuNhap* 30 / 100 – 5.85
Else
PIT = ThuNhap* 35 / 100 - 9.85
End If
PIT =PIT * Tr    '<='
End Function
 
Các bạn cao thủ ơi, vì tớ không rành các hàm nên tớ dùng công thức thế này. Tớ dùng kiểu If and cho công thức tính thuế từ 4 năm rồi thấy vẫn ổn. Tất nhiên vì từ năm 09 thuế thay đổi nên tớ đã cập nhật, nhưng vẫn chỉ luôn là If và And lồng nhau thôi.
Giả sử D12 là ô chứa giá trị “Thu nhập tính thuế trong tháng” (Là thu nhập chịu thuế trừ đi các khoản giảm trừ) thì công thức để tính thuế thu nhập phải nộp trong tháng như sau:
=IF(AND(D12>0,D12<=5000000),0.05*D12,
IF(AND(D12>5000000,D12<=10000000),0.1*D12-250000,
IF(AND(D12>10000000,D12<=18000000),0.15*D12-750000,
IF(AND(D12>18000000,D12<=32000000),0.2*D12-1650000,
IF(AND(D12>32000000,D12<=52000000),0.25*D12-3250000,
IF(AND(D12>52000000,D12<=80000000),3*D12-5850000,
IF(D12>80000000,0.35*D12-9850000,0)))))))


Công thức tương tự khi quyết toán thuế vì thực ra quyết toán thuế chính là tính bình quân thu nhập chịu thuế theo tháng, sau đó tính ra bình quân thuế thu nhập theo tháng rồi nhân với 12 tháng mà thôi.
Mình có post bài chi tiết về cái này ở đây.
http://my.opera.com/thuydieu2710/blog/show.dml/12409942
Gửi mọi người tham khảo
 
Các ông làm VBA làm gì cho mệt, Tui làm trực tiếp trên Excel còn ngắn hơn rất nhiều, sử dụng Vlookup
Tham khảo nhé
 

File đính kèm

  • thue thu nhap ca nha.xls
    34 KB · Đọc: 87
Các ông làm VBA làm gì cho mệt, Tui làm trực tiếp trên Excel còn ngắn hơn rất nhiều, sử dụng Vlookup
Tham khảo nhé

Bạn nè, dùng bảng phụ thì công thức ngắn hơn là đúng roài. Nhưng vẫn còn mấy chỗ lê thê như sau:

1. cái ô chứa 80,00001 đó, bạn cứ quánh 81, 90, 1000 vô đi, không sao hết. Thía là bỏ được hàm Int, đúng hong?

2. Thậm chí xoá béng dòng đó đi, công thức xe buýt của bạn vẫn đúng. (xe buýt ngắn hơn xe lửa roài). Bạn thêm dòng đó, rồi xoá trống 1 ô, rồi int, khổ quá đi nà! Trong file kèm theo monalisa thử xoá đi cho Kim Na xem đoá.

3. Công thức vẫn có thể ngắn hơn, bảng phụ ít cột hơn, như Monalisa làm trong file. Cù là cù lần như Monalisa, chỉ làm được công thức xe buýt mini, chưa làm được công thức xe 4 chỗ, nhưng đỡ gây kẹt xe hơn là xe buýt đại cồ:

xe bus đại cồ: =VLOOKUP(D4;$G$6:$J$13;2;1)+(D4-INT(VLOOKUP(D4;$G$6:$G$13;1;1)))*VLOOKUP(D4;$G$6:$J$13;4;1)

xe bus mini: =D17*VLOOKUP(D17;$G$17:$I$23;2;1)-VLOOKUP(D17;$G$17:$I$23;3;1)

Mà bảng phụ có 3 cột thoai, hehe!
 

File đính kèm

  • Monalisa-ThueTNCN.xls
    29 KB · Đọc: 173
Web KT
Back
Top Bottom