Hàm đơn giản tính thuế TNCN (3 người xem)

  • Thread starter Thread starter taybacxa
  • Ngày gửi Ngày gửi
Liên hệ QC

Người dùng đang xem chủ đề này

taybacxa

Thành viên mới
Tham gia
28/1/13
Bài viết
6
Được thích
3
Việc tính thuế TNCN theo biểu thuế lũy tiến từng phần sẽ mất thời gian nếu như tính bằng tay, ta có thể khắc phục bằng cách lập trình đoạn mã lệnh VBA trong Excel để tính tự động
Biểu thuế lũy tiến từng phần được quy định như sau:

2014-05-02_183028.jpg

Từ biểu này ta tính thuế như sau
Gọi thu nhập bình quân tháng là x
Bậc 1:Nếu x <=5 ====> Thuế = x*5%
Bậc 2: nếu 5 <x<10
Thuế = 5 *5% + (x -5 )*10% =====> thuế =x*10%- 250 000
Bậc 3: Nếu 10<x<18
Thuế = 5 *5% +(10-5) *10% + (x-10)*15%
=250 000+ 500 000 -1500 000 + x*15% = x*15% -750 000
Bậc 4: Nếu 18 <x<32
Thuế = 5 *5% +(10-5) *10% + (18-10)*15% + (x-18)*20%
=250 000+ 500 000 +1200 000 -3600 000 + x*20%
=x*20% - 1 650 000
Bậc 5: Nếu 32<x<52
Thuế =5 *5% +(10-5) *10% + (18-10)*15% + (32-18)*20% + (x-32)25%
=250 000+ 500 000+ 1200 000 + 2 800 000 - 8 000 000 + x*25% =x*25%- 3 250 000
Bậc 6:nếu 52<x<80
Thuế =5 *5% +(10-5) *10% + (18-10)*15% + (32-18)*20% + (52-32)25% + (x-52)*30%
=250000+500000+1200000+2800000+5000000– 15600000 + x*30%
=x*30%-5 850 000
Bậc 7:nếu x>80
Thuế =5 *5% +(10-5) *10% + (18-10)*15% + (32-18)*20% + (52-32)25% + (80-52)*30% + (x-80)*35%
= x*35% - 9 850 000


Từ đó dùng VBA trong Excel ta xây dựng hàm tính thuế TNCN như sau ( phối hợp hàm round để làm tròn)

Function thuepn(thunhap As Double) As Double ‘ truyen gia tri o o cu the trong Excel vao bien thunhap
thunhap1 = thunhap / 12 'chia thu nhap ca nam cho 12
Select Case thunhap1
Case Is <= 0
Thue = 0
Case Is <= 5000000
Thue = Round(thunhap1 * 0.05, 0)
Case Is <= 10000000
Thue = Round(thunhap1 * 0.1, 0) - 250000
Case Is <= 18000000
Thue = Round(thunhap1 * 0.15, 0) - 750000
Case Is <= 32000000
Thue = Round(thunhap1 * 0.2, 0) - 1650000
Case Is <= 52000000
Thue = Round(thunhap1 * 0.25, 0) - 3250000
Case Is <= 80000000
Thue = Round(thunhap1 * 0.3, 0) - 5850000
Case Is > 80000000
Thue = Round(thunhap1 * 0.35, 0) - 9850000
End Select
thuepn = Thue * 12 ' tra ve so thue ca nam
End Function

Sau trong Excel dùng hàm thuepn() như sau
Đầu tiên phải vào VBA của Excel chèn lệnh tạo hàm vào một Modul (có thể tải và import Modul này tại đây)
Sau đó tính toán như sau
Ví dụ: ô L22 là ô chứa Thu nhập tính thuế cả năm
Ô j22 là ô chứa số thuế phải nộp cả cả năm
== >Để tính thuế phải nộp cả năm
Tại ô j22 nhập công thức = thuepn(L22)

Sau đó sao chép công thức này sang các ô khác
 
Lần chỉnh sửa cuối:
tính có chính xác ko vậy bạn?.....hihhii
bạn có thể thêm giảm trừ gia cảnh vào được ko
tôi muốn xem thuế của tôi cty trừ có đúng ko đó mà
 
Upvote 0
Hàm này rất chính xác, còn nếu có giảm trừ gia cảnh thì bạn phải trừ nó ra khi xác định thu nhập chịu thuế rồi mà; đây là hàm xác định thuế TNCN Theo biểu lũy tiến từng phần căn cứ tính là thu nhập chịu thuế
Thu nhập chịu thuế ở đây đã tính trừ các khoản giảm trừ trong đó có giảm trừ gia cảnh
 
Lần chỉnh sửa cuối:
Upvote 0
Chào các anh chị,
Mình cũng tham gia một cách tính thuế TNCN bằng hàm VLOOKUP tương đối.
Khi nhà nước có thay đôi về mức đóng thuế, mức giảm trừ gia cảnh...thì chỉ cần chỉnh lại các con sốtrong bảng bên trái (Cột A và cột B) thì các kết quả sẽ tự cập nhật.
Ô C2 tên chuyên môn đúng là: "Biểu thuế lũy tiến từng phần". Do minh ko phải dân kế toán nên dùng từ không đúng lắm. Hihi...
Các anh chị góp ý thêm nhé.
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
Chào các anh chị,
Mình cũng tham gia một cách tính thuế TNCN bằng hàm VLOOKUP tương đối.
Khi nhà nước có thay đôi về mức đóng thuế, mức giảm trừ gia cảnh...thì chỉ cần chỉnh lại các con số trong bảng bên trái (Cột A và cột B) thì các kết quả sẽ tự cập nhật.
Các anh chị góp ý thêm nhé.

thuế thu nhập được tính trên tổng thu nhập (trước khi trừ các khoản BHYT, BHXH ....v.v.v, phải ko bạn?)
 
Upvote 0
Cách tính thuế TNCN:
1/ Tổng thu nhập = Lương + thưởng + Phụ cập + tăng ca.
2/ Các khoản trừ = BHXH + BHTN + BHYT + phí công đoàn + mức chịu thuế (9.000.000) + giảm trừ gia cảnh (3.600.000 x số người phụ thuộc) +phụ cấp thai sản + lương hưu...
3/ Thu nhập chịu thuế = tổng thu nhập - các khoản trừ.
Từ thu nhập chịu thuế bạn tính theo công thức nhé.
 
Upvote 0
Việc tính thuế TNCN theo biểu thuế lũy tiến từng phần sẽ mất thời gian nếu như tính bằng tay, ta có thể khắc phục bằng cách lập trình đoạn mã lệnh VBA trong Excel để tính tự động
Biểu thuế lũy tiến từng phần được quy định như sau:

View attachment 120622
...

chào bạn,
nếu bạn định xây dựng hàm người dùng (hàm tự tạo) thì theo cách này có thể hàm sẽ rất gọn nhưng e là ko được hay:
1. ko phải ai cũng biết đều về VBA.
2. việc thay đổi thông số bên trong chưa được linh hoạt (cho người tạo lẫn người sử dụng)

'-----
mình gửi bạn 1 file để tham khảo về cách dùng công thức mảng:
nếu viết 1 công thức bình thường cho ô L6 thì nó sẽ như sau,
max, if.jpg

sau khi chuyển sang dùng mảng thì trở thành:
Max, If (1).jpg
Lúc này người dùng theo dõi và điều chỉnh (vùng S5:V11) các điều kiện rất linh hoạt + độ chính xác cao.

Link: https://www.mediafire.com/?p8fq4kt78idyvxf
 
Lần chỉnh sửa cuối:
Upvote 0
Code của chủ thớt dở chưa từng thấy. Chỉ cần luật thay đổi 1 chút, ví dụ 5% đổi thành 6% thì có bao nhiêu con số cần phải sửa?

Đây là bài toán thuộc loại tính phí từng phần thoe luỹ tiến. Cách giải chung là tính tất cả theo hệ số nhỏ nhất, cộng chênh lệch so với hệ số kế đó, cộng chênh lệch .... cho đến hệ số lớn nhất.

Giải pháp nói ra kỳ quặc nhưng thực sự khi áp dụng vào hàm Excel thì trông cũng không đến nổi tệ. Tôi đã từng làm một lần trên diễn đàn này rồi. Đây là thớt nói về code VBA nên tôi không lặp lại.

Code VBA:

Mã:
Function ThueTN(ByVal thuNhap As Double) As Double
[COLOR=#008000]' hàm tính thuế thu nhập theo luỹ tiến từng phần[/COLOR]
Dim mL, mT
mL = Array(0, 5000000#, 10000000#, 18000000#, 32000000#, 52000000#, 80000000#, 9 * 10 ^ 20)
mT = Array(0, 0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35)
ThueTN = 0
thuNhap = thuNhap / 12 'chia thu nhap ca nam cho 12
Dim i As Integer
For i = LBound(mT) + 1 To UBound(mT)
If thuNhap <= mL(i - 1) Then Exit For
ThueTN = ThueTN + (thuNhap - mL(i - 1)) * (mT(i) - mT(i - 1))
Next i
ThueTN = ThueTN * 12 ' tra ve so thue ca nam
End Function

Lưu ý là tôi chỉ đưa code ra để trình bày giải thuật. Dùng code này cho hàm UDF thì không hoàn toàn có hiệu băng cao. Điển hình là mỗi lần gọi hàm lại phải tính lại trị số và thông số của 2 arrays.

Nếu ở môi trường khác (không code trên VBA) thì người ta thay đổi giải thuật một chút để dễ chuẩn hoá.
Theo giải thuật này, ta tính xem con số thu nhập có bao nhiêu lọt vào khoảng chận trên và chận dưới của từng hệ số phần trăm. Và cộng lại.
Ví dụ 7.500.000 sẽ có 5.000.000 lọt vào khoảng 5% (0-5.000.000) và 2.500.000 lọt vào khoảng 10% (5.000.000-10.000.000)

Mã:
Function TimKhoang(ByVal sL As Double, ByVal cD As Double, ByVal cT As Double) As Double
[COLOR=#008000]' hàm tìm xem số lượng (sL) có bao nhiêu lọt vào khoảng giữa chận dưới (cD) và chận trên (cT)[/COLOR]
If sL < cD Then
TimKhoang = 0
ElseIf sL > cT Then
TimKhoang = cT - cD
Else
TimKhoang = sL - cD
End If
End Function


Function ThueTN1(ByVal thuNhap As Double) As Double
[COLOR=#008000]' hàm tính thuế thu nhập theo luỹ tiến từng phần[/COLOR]
thuNhap = thuNhap / 12 'chia thu nhap ca nam cho 12
ThueTN1 = TimKhoang(thuNhap, 0, 5000000#) * 0.05 _
+ TimKhoang(thuNhap, 5000000#, 10000000#) * 0.1 _
+ TimKhoang(thuNhap, 10000000#, 18000000#) * 0.15 _
+ TimKhoang(thuNhap, 18000000#, 32000000#) * 0.2 _
+ TimKhoang(thuNhap, 32000000#, 52000000#) * 0.25 _
+ TimKhoang(thuNhap, 52000000#, 80000000#) * 0.3 _
+ TimKhoang(thuNhap, 80000000#, thuNhap) * 0.35
ThueTN1 = ThueTN1 * 12 ' tra ve so thue ca nam
End Function

Lưu ý là hàm TimKhoang có thể áp dụng vào nhiều nơi khác nhau mà không cần phải chỉnh sửa hoặc chỉnh rất ít
Code này gọi hàm khá nhiều lần cho nên chỉ có hiệu quả đối với những môi trường ngôn ngữ có cách gọi hàm nhanh.

Cả hai giải thuật trên đều thuộc loại thay đổi thêm thắt thông số rất dễ và nhanh.
 
Lần chỉnh sửa cuối:
Upvote 0


. . . ta xây dựng hàm tính thuế TNCN như sau ( phối hợp hàm round để làm tròn)

Function thuepn(thunhap As Double) As Double ‘ truyen gia tri o o cu the trong Excel vao bien thunhap
thunhap1 = thunhap / 12 'chia thu nhap ca nam cho 12
Select Case thunhap1
Case Is <= 0
Thue = 0
Case Is <= 5000000
Thue = Round(thunhap1 * 0.05, 0)
Case Is <= 10000000
Thue = Round(thunhap1 * 0.1, 0) - 250000
Case Is <= 18000000
Thue = Round(thunhap1 * 0.15, 0) - 750000
Case Is <= 32000000
Thue = Round(thunhap1 * 0.2, 0) - 1650000
Case Is <= 52000000
Thue = Round(thunhap1 * 0.25, 0) - 3250000
Case Is <= 80000000
Thue = Round(thunhap1 * 0.3, 0) - 5850000
Case Is > 80000000
Thue = Round(thunhap1 * 0.35, 0) - 9850000
End Select
thuepn = Thue * 12 ' tra ve so thue ca nam
End Function
Bạn xài quá nhiều các con số '0'
Nhìn mà hoa cả mắt!
Theo mình nên xài 10^6 thay cho 1.000.000
 
Upvote 0
Bạn xài quá nhiều các con số '0'
Nhìn mà hoa cả mắt!
Theo mình nên xài 10^6 thay cho 1.000.000

Đã như vậy thì đặt constants xài cho rồi
Const NGAN As Double = 1000
Const TRIEU As Double = NGAN * NGAN

Khi ấy, 15000000 viết là 15*TRIEU thay vì 15*10^6

Thực ra, ngôn ngữ lập trình có cách viết số thực với nhiều 0's. Ví dụ 15 triệu thì viết là 15e6
VBA chấp nhận như thế. Nhưng VBE (tức là cái trình bản của VBA) nó tự động đổi thành 15000000#
 
Upvote 0
Web KT

Bài viết mới nhất

Back
Top Bottom