Hàm tính thuế TNCN

  • Thread starter ForestC
  • Ngày gửi
F

ForestC

Guest
11/1/05
377
1
0
44
E'rywhere
Code VBA tính thuế TNCN trên Excel không phải là của OverAC đâu mà là của một member EFC khác, anh Dat_Vuong. Đây là một bài báo đã được anh Dat_vuong gửi đăng trên báo PC World vào cuối tháng 1 năm ngoái.

Tính thuế thu nhập bằng Excel

Cuối năm là thời điểm cần quyết toán thuế thu nhập cá nhân. Đây là vấn đề không "nhẹ nhàng" chút nào, nhất là khi qui mô công ty của bạn không nhỏ. Tuy nhiên bạn đừng lo, bạn có thể lập trình "bắt" Excel xử lý giúp "gánh nặng" này.

Công việc chuẩn bị

- PC cài HĐH Windows 2000 hoặc XP, Microsoft Excel XP hoặc 2003

- Phụ lục số 1 và số 2, kèm theo Thông tư số 81/2004/ TT-BTC ngày 13/8/2004 của Bộ Tài chính.

- Lên kế hoạch tạo các hàm sau:

PITLC: Hàm tính thuế thu nhập cá nhân dành cho công dân Việt Nam và các cá nhân khác định cư tại Việt Nam.

PITFR: Hàm tính thuế thu nhập cá nhân người nước ngoài cư trú tại Việt Nam và công dân Việt Nam lao động, công tác ở nước ngoài.

NET2GROSSLC: Hàm qui đổi thu nhập sau thuế (net) sang thu nhập trước thuế (gross) dành cho công dân Việt Nam và các cá nhân khác định cư tại Việt Nam.

NET2GROSSFR: Hàm qui đổi thu nhập sau thuế (net) sang thu nhập trước thuế (gross) dành cho người nước ngoài cư trú tại Việt Nam và công dân Việt Nam lao động, công tác ở nước ngoài.

Lưu ý: Tên hàm có thể thay đổi cho phù hợp với yêu cầu của bạn.

TẠO HÀM

1. Mở bảng tính (workbook) mới

2. Nhấn tổ hợp phím Alt+F11 để khởi động Microsoft Visual Basic

3. Nhấn vào bảng tính của bạn tại cửa sổ VBA project. Ví dụ: VBA project (book1)

4. Chọn Insert.Module

5. Nhấn đúp vào module mới tạo ra và nhập vào các đoạn mã sau.

Function pitlc(gross_local)

'Personal Income Tax for Local Vietnamese Citizen

If (gross_local > 0) And (gross_local <= 5000000) Then

pitlc = 0

ElseIf (gross_local > 5000000) And (gross_local <= 15000000) Then

pitlc = (gross_local - 5000000) * 0.1

ElseIf (gross_local > 15000000) And (gross_local <= 25000000) Then

pitlc = 1000000 + ((gross_local - 15000000) * 0.2)

ElseIf (gross_local > 25000000) And (gross_local <= 40000000) Then

pitlc = 3000000 + ((gross_local - 25000000) * 0.3)

ElseIf (gross_local > 40000000) Then

pitlc = 7500000 + ((gross_local - 40000000) * 0.4)

End If

End Function

Function pitfr(gross_foreign)

'Personal Income Tax for Resident Foreigner in Vietnamese

If (gross_foreign > 0) And (gross_foreign <= 8000000) Then

pitfr = 0

ElseIf (gross_foreign > 8000000) And (gross_foreign <= 20000000) Then

pitfr = (gross_foreign - 8000000) * 0.1

ElseIf (gross_foreign > 20000000) And (gross_foreign <= 50000000) Then

pitfr = 1200000 + ((gross_foreign - 20000000) * 0.2)

ElseIf (gross_foreign > 50000000) And (gross_foreign <= 80000000) Then

pitfr = 7200000 + ((gross_foreign - 50000000) * 0.3)

ElseIf (gross_foreign > 80000000) Then

pitfr = 16200000 + ((gross_foreign - 80000000) * 0.4)

End If

End Function

Function net2grosslc(net_local)

'Local Net Salary to be gross-up to Gross Salary

If (net_local > 0) And (net_local <= 5000000) Then

net2grosslc = net_local

ElseIf (net_local > 5000000) And (net_local <= 14000000) Then

net2grosslc = Round((net_local - 500000) / 0.9, 0)

ElseIf (net_local > 14000000) And (net_local <= 22000000) Then

net2grosslc = Round((net_local - 2000000) / 0.8, 0)

ElseIf (net_local > 22000000) And (net_local <= 32500000) Then

net2grosslc = Round((net_local - 4500000) / 0.7, 0)

ElseIf (net_local > 32500000) Then

net2grosslc = Round((net_local - 8500000) / 0.6, 0)

End If

End Function

Function net2grossfr(net_foreign)

'Foreigner Net Salary to be gross-up to Gross Salary

If (net_foreign > 0) And (net_foreign <= 8000000) Then

net2grossfr = net_foreign

ElseIf (net_foreign > 8000000) And (net_foreign <= 18800000) Then

net2grossfr = Round((net_foreign - 800000) / 0.9, 0)

ElseIf (net_foreign > 18800000) And (net_foreign <= 42800000) Then

net2grossfr = Round((net_foreign - 2800000) / 0.8, 0)

ElseIf (net_foreign > 42800000) And (net_foreign <= 63800000) Then

net2grossfr = Round((net_foreign - 7800000) / 0.7, 0)

ElseIf (net_foreign > 63800000) Then

net2grossfr = Round((net_foreign - 15800000) / 0.6, 0)

End If

End Function

TẠO ADD-IN

Ở các bước trên bạn đã tạo được các hàm dùng để tính thuế thu nhập. Tuy nhiên các hàm này chỉ sử dụng cho chính bảng tính có gắn hàm đã tạo mà thôi. Để tất cả các bảng tính đều có thể sử dụng hàm đã tạo ở trên hoặc bạn muốn gửi những hàm này cho bạn bè thì bạn cần phải tạo add-in. Cách tạo add-in như sau:

1. Nhấn chuột phải vào Module đã tạo ở trên

2. Điền thông số trong tab General

a. Project Name: Điền tên hàm (ví dụ: PIT)

b. Project Description: Điền vào mô tả của dự án (ví dụ: PIT formular)

3. Trong tab Protection, nhấn vào Lock project for viewing sau đó điền mật khẩu và xác nhận mật khẩu nếu bạn không muốn người khác xem và chỉnh sửa đoạn mã của mình.

4. Đóng cửa sổ VBA

5. Vào File_Save As, nhấn vào khung Save as type và chọn Microsoft Office Excel Add-in (*.xla)

6. Đặt tên file và chọn đường dẫn để lưu file (ví dụ: c:\PITformular .xla)

7. Hoàn tất

Muốn gắn add-in vào bất cứ máy nào có Excel bạn chỉ việc vào Tools ->Add-Ins sau đó nhấn Browse... và tìm đến nơi chứa file .xla nêu trên rồi OK.ÿ

Dat_Vuong
dat_vuong1967@yahoo.co.uk
Shimizu Corporation
 
Sửa lần cuối bởi điều hành viên:
Khóa học Quản trị dòng tiền
HongViet

HongViet

Cao cấp
10/11/05
286
10
18
Đà nẵng
~ góp í muộn màng!

Để dễ bảo trì &sữa đổi nên khai báo các hằng ứng với các mức chịu thuế;
Khi luật thuế thu nhập đổi ta chỉ đổi các giá trị của hằng là được, OK?!
:dzo:
 

Xem nhiều

Webketoan Zalo OA