Chú ý: Các thành viên học lớp "Lập trình VBA trong Excel" có thể trao đổi bài ở đây

Liên hệ QC
Mình đã làm ví dụ này ("Hơi nâng cao chút" - có ít kiến thức chưa học), nếu ai muốn tham khảo thêm hãy xem nhé!
(Buổi tối rảnh nên làm cho vui thôi. Hi..........!)

PHP:
Option Explicit
Sub TinhTong()
Dim Ham
Dim rngVung As Range
Dim eRw As Long
Const a = "Cong"
eRw = [I65500].End(xlUp).Row
Set rngVung = Range([I5], Cells(eRw, "I"))
Set Ham = Application.WorksheetFunction
If Ham.Sum(rngVung) = 2 * Cells(eRw, "I") Then
MsgBox "Da cong roi!"
Else
Cells(eRw + 1, "I").Value = Ham.Sum(rngVung)
Cells(eRw + 1, "I").NumberFormat = "_(* #,##0_);_(* (#,##0);"""""
Cells(eRw + 1, "I").Font.Bold = True
Cells(eRw + 1, "I").Offset(, -4).Value = a
Cells(eRw + 1, "I").Offset(, -4).Font.Bold = True
End If
End Sub
Có file đính kèm.


Sub bạn tạo ra cũng khá sáng tạo, tôi chưa nói là đúng hay sai, tuy nhiên nhìn vào code tôi có vài điểm cần nói:

1) Nếu Conts a = "Cong" chỉ dùng 1 lần duy nhất, thì không cần thiết phải dùng hằng số làm gì

2) Nếu vùng nào, lệnh nào lặp đi lặp lại liên tục, bạn chuyển sang With ... End With cho gọn gàng và sáng câu lệnh.

Mạn phép điều chỉnh lại Code của bạn chút xíu đây:

PHP:
Option Explicit
Sub TinhTong()
 Dim Ham
 Dim rngVung As Range
 Dim eRw As Long
 eRw = [I65500].End(xlUp).Row
 Set rngVung = Range([I5], Cells(eRw, "I"))
 Set Ham = Application.WorksheetFunction
 If Ham.Sum(rngVung) = 2 * Cells(eRw, "I") Then
   MsgBox "Da cong roi!"
 Else
   With Cells(eRw + 1, "I")
    .Value = Ham.Sum(rngVung)
    .NumberFormat = "_(* #,##0_);_(* (#,##0);"""""
    .Font.Bold = True
    .Offset(, -4).Value = "Cong"
    .Offset(, -4).Font.Bold = True
   End With
 End If
End Sub
 
PHP:
   Cells(eRw + 1, "I").Value = Ham.Sum(rngVung)
   Cells(eRw + 1, "I").NumberFormat = "_(* #,##0_);_(* (#,##0);"""""
   Cells(eRw + 1, "I").Font.Bold = True
   Cells(eRw + 1, "I").Offset(, -4).Value = a
   Cells(eRw + 1, "I").Offset(, -4).Font.Bold = True
Đoạn này của Bạn có thể thay bằng
Mã:
With Cells(eRw + 1, "I")
   .Value = Ham.Sum(rngVung)
   .NumberFormat = "_(* #,##0_);_(* (#,##0);"""""
   .Font.Bold = True
   .Offset(, -4).Value = a
   .Offset(, -4).Font.Bold = True
End With
 
Sub bạn tạo ra cũng khá sáng tạo, tôi chưa nói là đúng hay sai, tuy nhiên nhìn vào code tôi có vài điểm cần nói:

1) Nếu Conts a = "Cong" chỉ dùng 1 lần duy nhất, thì không cần thiết phải dùng hằng số làm gì

2) Nếu vùng nào, lệnh nào lặp đi lặp lại liên tục, bạn chuyển sang With ... End With cho gọn gàng và sáng câu lệnh.

Mạn phép điều chỉnh lại Code của bạn chút xíu đây:

PHP:
Option Explicit
Sub TinhTong()
Dim Ham
Dim rngVung As Range
Dim eRw As Long
eRw = [I65500].End(xlUp).Row
Set rngVung = Range([I5], Cells(eRw, "I"))
Set Ham = Application.WorksheetFunction
If Ham.Sum(rngVung) = 2 * Cells(eRw, "I") Then
MsgBox "Da cong roi!"
Else
With Cells(eRw + 1, "I")
.Value = Ham.Sum(rngVung)
.NumberFormat = "_(* #,##0_);_(* (#,##0);"""""
.Font.Bold = True
.Offset(, -4).Value = "Cong"
.Offset(, -4).Font.Bold = True
End With
End If
End Sub

Cám ơn Learning_Excel nhiều! Vì mục đích của em làm như vậy để lớp em tham khảo dần dần thôi. Còn sử dụng With...End With thì em cũng biết. Nhưng tại vì lớp chưa học đến anh ah.
Một lần nữa cám ơn những góp ý của anh!
 
Bài tập1 buổi học thứ 3

Em nộp bài buổi học thứ 3
PHP:
Option Explicit
Const mil = 10 ^ 6
'Chu y: Tinh thue TNCN SAU KHI da giam tru (*)gia canh ban than va (**) nguoi phu thuoc
'(*)Gia canh ban than - 4.000.000
'(**)Giam tru nguoi phu thuoc moi nguoi 1.600.000
'Thông tư 84/2008/TT-BTC ngày 30..9.2008 
Function Tncn(sTn As Single)
    Select Case sTn
        Case Is <= 0
            Tncn = 0
        Case 0 To 5 * mil
             Tncn = sTn * 0.05
        Case 5 * mil To 10 * mil
            Tncn = 250000 + (sTn - 5 * mil) * 0.1
        Case 10 * mil To 18 * mil
            Tncn = 750000 + (sTn - 10 * mil) * 0.15
        Case 18 * mil To 32 * mil
            Tncn = 1.95 * mil + (sTn - 18 * mil) * 0.2
        Case 32 * mil To 52 * mil
            Tncn = 4.75 * mil + (sTn - 32 * mil) * 0.25
        Case 52 * mil To 80 * mil
            Tncn = 9.75 * mil + (sTn - 52 * mil) * 0.3
        Case Is > 80 * mil
            Tncn = 18.15 * mil + (sTn - 80 * mil) * 0.35
    End Select
End Function
''==============================================================
Function Mytncn(tntt)
''Tinh thue TNCN SAU KHI da giam tru (*)gia canh ban than va (**) nguoi phu thuoc
''(*)Gia canh ban than - 4.000.000
''(**)Giam tru nguoi phu thuoc moi nguoi 1.600.000
    If (tntt > 0) And (tntt <= 5 * mil) Then
        Mytncn = tntt * 0.05
        ElseIf (tntt > 5 * mil) And (tntt <= 10 * mil) Then
            Mytncn = 250000 + (tntt - 5 * mil) * 0.1
        ElseIf (tntt > 10 * mil) And (tntt <= 18 * mil) Then
            Mytncn = 750000 + (tntt - 10 * mil) * 0.15
        ElseIf (tntt > 18 * mil) And (tntt <= 32 * mil) Then
            Mytncn = 1.95 * mil + (tntt - 18 * mil) * 0.2
        ElseIf (tntt > 32 * mil) And (tntt <= 52 * mil) Then
            Mytncn = 4.75 * mil + (tntt - 32 * mil) * 0.25
        ElseIf (tntt > 52 * mil) And (tntt <= 80 * mil) Then
            Mytncn = 9.75 * mil + (tntt - 52 * mil) * 0.3
        ElseIf (tntt > 80 * mil) Then
            Mytncn = 18.15 * mil + (tntt - 80 * mil) * 0.35
    End If
End Function


Trong bài Em dùng Case để tính thuế TNCN theo quy định
E không lồng hàm Round và các phần giảm trừ trong cách tính, cho các bạn cùng lớp dễ xem.
Mong thầy giáo và các bạn cho ý kiến
 

File đính kèm

  • Buoihoc3-Bai1.rar
    47.6 KB · Đọc: 12
Lần chỉnh sửa cuối:
Bài nộp thuế TNCN

Đây là bài về thuế TNCN của em
Mong các thầy và AC nhận xét
Mã:
Option Explicit
  Const tr As Long = 10 ^ 6
  Function ThueTNCN(TN As Long, SNPhuThuoc As Integer)
  Dim TN1 As Long, a As Integer
  a = SNPhuThuoc
  TN1 = TN - 4 * tr - a * 1.6 * tr
  If TN1 > 0 Then
      If TN1 >= 0 And TN1 <= 5 * tr Then
      ThueTNCN = TN * 0.05
      ElseIf TN1 > 5 * tr And TN1 <= 10 * tr Then
      ThueTNCN = 5 * tr * 0.05 + (TN1 - 5 * tr) * 0.1
      ElseIf TN1 > 10 * tr And TN1 <= 18 * tr Then
      ThueTNCN = 5 * tr * 0.05 + 5 * tr * 0.1 + (TN1 - 10 * tr) * 0.15
      ElseIf TN1 > 18 * tr And TN1 <= 32 * tr Then
      ThueTNCN = 5 * tr * 0.05 + (10 - 5) * tr * 0.1 + (18 - 10) * tr * 0.15 + (TN1 - 18 * tr) * 0.2
      ElseIf TN1 > 32 * tr And TN1 <= 52 * tr Then
      ThueTNCN = 5 * tr * 0.05 + (10 - 5) * tr * 0.1 + (18 - 10) * tr * 0.15 + (32 - 18) * tr * 0.2 + (TN1 - 32 * tr) * 0.25
      ElseIf TN1 > 52 * tr And TN1 <= 80 * tr Then
      ThueTNCN = 5 * tr * 0.05 + (10 - 5) * tr * 0.1 + (18 - 10) * tr * 0.15 + (32 - 18) * tr * 0.2 + (52 - 32) * tr * 0.25 + (TN1 - 52 * tr) * 0.3
      Else
      ThueTNCN = 5 * tr * 0.05 + (10 - 5) * tr * 0.1 + (18 - 10) * tr * 0.15 + (32 - 18) * tr * 0.2 + (52 - 32) * tr * 0.25 + (80 - 52) * tr * 0.3 + (TN1 - 80 * tr) * 0.35
      End If
  Else
  ThueTNCN = 0
  End If
  End Function
 

File đính kèm

  • Thue TNCN.rar
    13.3 KB · Đọc: 10
Hãy lấy giấy viết ra & làm những fép cộng trừ nhân chia trước

Sau đó hẵn bắt tay vô viết hàm người dùng;

Ta quan sát bảng sau:

ThuNhap|TiLeNop|FaiNopTruocDo(Triệu)|NopTrongKhoan
<=5 Triệu|0%|0||
<=10 Triệu|5%|0.5|
<=18 Triệu|10%|0.5 + 0.8|0.5Tr +(TNh-10 Tr) * 10%
. . . .||1.3+. . .|
(Dòng thứ ba có nghĩa là Thu nhập anh/chi nào đó 12 triệu thì 5 Tr đầu thuế suất =0; 5 Tr kế tiếp thuế xuất là 5% (~ 0.5 Tr) ; Như vậy 10 Tr đầu chịu mức thuế 0.5Tr (=0 + 0.5) & 2 triệu còn lại chịu mứa thuế 10%

Ta sẽ có công thức tổng quát tính thuế như sau: TTNh = A0 + (TNh - MCH*Ts)

A0 là tổng các mức chịu thuế trước mức thué đó;
Ts - Thuế suất của mức thu nhập của người chịu thuế.
MCH - Mức chịu thuế liền kề trước đó

Chuyện này là mình viết lại của anh em trên diễn đàn mà thôi & cũng đúng trong trường hợp tính tiền điện lũy tiến.

Rất vui nếu được các bạn tham khảo
 
Lần chỉnh sửa cuối:
Đây là bài về thuế TNCN của em
Mong các thầy và AC nhận xét


Tôi thử code của bạn:
Cho thu nhập là 8 tr người phụ thuộc là 1 người
Thu nhập tính thuế là: 8tr - 4tr -1*1,6tr = 2,4tr
Thuế TNCN phải nộp là: 2,4tr * 0,05 = 120,000
Còn công thức của bạn là một số khác. Bạn xem lại nhé
Code của bạn cần sửa lại cách trình bày, đồng cấp cùng một tab và biểu thức thực hiện cho thụt vào 1 tab cho dễ nhìn.
Còn lại mọi người tiếp tục cho ý kiến.
 
To Khanh Khoan:

Hi, đừng tự ái nha, may mà mình không làm nổi thày giáo chứ không chắc bạn ăn 0 điểm số học quá. Các phép số học chắc mấy bà buôn nhẩm nhanh hơn bạn viết biểu thức vài lần. 18-10 thì viết luôn là 8 chứ ai lại viết (18-10)
 
To Khanh Khoan:

Hi, đừng tự ái nha, may mà mình không làm nổi thày giáo chứ không chắc bạn ăn 0 điểm số học quá. Các phép số học chắc mấy bà buôn nhẩm nhanh hơn bạn viết biểu thức vài lần. 18-10 thì viết luôn là 8 chứ ai lại viết (18-10)
Thuế TNCN là tính chia khoảng lỹ tiến từng phần
Bạn ý để như vậy để mọi người dễ hình dung thôi. Nhưng có điều hoi dài
Có thể làm ngắn biểu thức bằng cách đặt tên cho nó dưới dạng name duoc không ? Các bác ơi.
 
Đây làm hàm tính thuế TNCN đã trừ phần gia cảnh (chỉ bản thân: 4.000.000):
Mình đã sửa lại chút của anh vuminh1601: (Case và If)
Đây là code hàm Case:

PHP:
Option Explicit
Const Tr1 = 10 ^ 6
Public Function Tncn(ByVal dLuong As Double) As Double
'Ham tinh nay da tru phan Giam tru ban than roi (la 4 trieu)
'Ham nay chua tinh Giam tru nguoi phu thuoc va cac khoan khac
    Dim dTnhap As Double
    dTnhap = dLuong - 4 * Tr1
    Select Case dTnhap
        Case Is <= 0
            Tncn = 0
        Case 0 To 5 * Tr1
            Tncn = dTnhap * 0.05
        Case 5 * Tr1 To 10 * Tr1
            Tncn = 0.25 * Tr1 + (dTnhap - 5 * Tr1) * 0.1
        Case 10 * Tr1 To 18 * Tr1
            Tncn = 0.75 * Tr1 + (dTnhap - 10 * Tr1) * 0.15
        Case 18 * Tr1 To 32 * Tr1
            Tncn = 1.95 * Tr1 + (dTnhap - 18 * Tr1) * 0.2
        Case 32 * Tr1 To 52 * Tr1
            Tncn = 4.75 * Tr1 + (dTnhap - 32 * Tr1) * 0.25
        Case 52 * Tr1 To 80 * Tr1
            Tncn = 9.75 * Tr1 + (dTnhap - 52 * Tr1) * 0.3
        Case Is > 80 * Tr1
            Tncn = 18.15 * Tr1 + (dTnhap - 80 * Tr1) * 0.35
    End Select
End Function
Còn hàm If (xem thêm trong file đính kèm nha).
 

File đính kèm

  • TNCN1.rar
    14.9 KB · Đọc: 11
Lần chỉnh sửa cuối:
Đây làm hàm tính thuế TNCN đã trừ phần gia cảnh (chỉ bản thân: 4.000.000):
Mình đã sửa lại chút của anh vuminh1601: (Case và If)
Đây là code hàm Case:

PHP:
Option Explicit
Const Tr1 = 10 ^ 6
Public Function Tncn(ByVal dLuong As Double) As Double
'Ham tinh nay da tru phan Giam tru ban than roi (la 4 trieu)
'Ham nay chua tinh Giam tru nguoi phu thuoc va cac khoan khac
    Dim dTnhap As Double
    dTnhap = dLuong - 4 * Tr1
    Select Case dTnhap
        Case Is <= 0
            Tncn = 0
        Case 0 To 5 * Tr1
            Tncn = dTnhap * 0.05
        Case 5 * Tr1 To 10 * Tr1
            Tncn = 0.25 * Tr1 + (dTnhap - 5 * Tr1) * 0.1
        Case 10 * Tr1 To 18 * Tr1
            Tncn = 0.75 * Tr1 + (dTnhap - 10 * Tr1) * 0.15
        Case 18 * Tr1 To 32 * Tr1
            Tncn = 1.95 * Tr1 + (dTnhap - 18 * Tr1) * 0.2
        Case 32 * Tr1 To 52 * Tr1
            Tncn = 4.75 * Tr1 + (dTnhap - 32 * Tr1) * 0.25
        Case 52 * Tr1 To 80 * Tr1
            Tncn = 9.75 * Tr1 + (dTnhap - 52 * Tr1) * 0.3
        Case Is > 80 * Tr1
            Tncn = 18.15 * Tr1 + (dTnhap - 80 * Tr1) * 0.35
    End Select
End Function
Còn hàm If (xem thêm trong file đính kèm nha).

Mình chưa test nên không biết có lỗi không nhưng cũng khá khen chú em có thày lên tay nhanh thật.
Anh chỉ tam gia 1 chút, cái Const Tr1 trông nó rối quá. Sao em không làm đầu vào em chia thu nhập cho Tr1 và kết quả en nhân với Tr1. Vậy là phần thân em bỏ hết Tr1 được rồi
 
Tôi thử code của bạn:
Cho thu nhập là 8 tr người phụ thuộc là 1 người
Thu nhập tính thuế là: 8tr - 4tr -1*1,6tr = 2,4tr
Thuế TNCN phải nộp là: 2,4tr * 0,05 = 120,000
Còn công thức của bạn là một số khác. Bạn xem lại nhé
Code của bạn cần sửa lại cách trình bày, đồng cấp cùng một tab và biểu thức thực hiện cho thụt vào 1 tab cho dễ nhìn.
Còn lại mọi người tiếp tục cho ý kiến.
Em đã sửa lại code, sai lệch đó là em nhầm TN1 thành TN ở đoạn thu nhập nhỏ hơn 5 triệu sau khi giảm trừ gia cảnh. Hôm nay em vội viết xong đi học luôn nên chưa test kỹ. Giờ em gửi lại code đã test. Cám ơn các AC đã nhận xét và mong các AC đóng góp cho bài của em xem ở đâu cần sửa không.
Mã:
Option Explicit
Const tr As Long = 10 ^ 6
Function ThueTNCN(ByVal TN As Long,ByVal SNPhuThuoc As Integer)
Dim TN1 As Long, ThueTNCN1 As Long
Select Case SNPhuThuoc
Case 0
TN1 = TN
Case Is >= 1
TN1 = TN - 4 * tr - SNPhuThuoc * 1.6 * tr
End Select

    If TN1 >= 0 And TN1 <= 5 * tr Then
        ThueTNCN = TN1 * 0.05
    ElseIf TN1 > 5 * tr And TN1 <= 10 * tr Then
        ThueTNCN = 0.25 * tr + (TN1 - 5 * tr) * 0.1
    ElseIf TN1 > 10 * tr And TN1 <= 18 * tr Then
        ThueTNCN = 0.75 * tr + (TN1 - 10 * tr) * 0.15
    ElseIf TN1 > 18 * tr And TN1 <= 32 * tr Then
        ThueTNCN = 1.95 * tr + (TN1 - 18 * tr) * 0.2
    ElseIf TN1 > 32 * tr And TN1 <= 52 * tr Then
        ThueTNCN = 4.75 * tr + (TN1 - 32 * tr) * 0.25
    ElseIf TN1 > 52 * tr And TN1 <= 80 * tr Then
        ThueTNCN = 9.75 * tr + (TN1 - 52 * tr) * 0.3
    ElseIf TN1 >= 80 * tr Then
        ThueTNCN = 18.15 * tr + (TN1 - 80 * tr) * 0.35
    Else
    ThueTNCN = 0
    End If
End Function
 

File đính kèm

  • Thue TNCN-da sua.rar
    14.4 KB · Đọc: 10
Lần chỉnh sửa cuối:
Đây làm hàm tính thuế TNCN đã trừ phần gia cảnh (chỉ bản thân: 4.000.000):
Mình đã sửa lại chút của anh vuminh1601: (Case và If)
Đây là code hàm Case:

PHP:
Option Explicit
Const Tr1 = 10 ^ 6
Public Function Tncn(ByVal dLuong As Double) As Double
'Ham tinh nay da tru phan Giam tru ban than roi (la 4 trieu)
'Ham nay chua tinh Giam tru nguoi phu thuoc va cac khoan khac
    Dim dTnhap As Double
    dTnhap = dLuong - 4 * Tr1
    Select Case dTnhap
        Case Is <= 0
            Tncn = 0
        Case 0 To 5 * Tr1
            Tncn = dTnhap * 0.05
        Case 5 * Tr1 To 10 * Tr1
            Tncn = 0.25 * Tr1 + (dTnhap - 5 * Tr1) * 0.1
        Case 10 * Tr1 To 18 * Tr1
            Tncn = 0.75 * Tr1 + (dTnhap - 10 * Tr1) * 0.15
        Case 18 * Tr1 To 32 * Tr1
            Tncn = 1.95 * Tr1 + (dTnhap - 18 * Tr1) * 0.2
        Case 32 * Tr1 To 52 * Tr1
            Tncn = 4.75 * Tr1 + (dTnhap - 32 * Tr1) * 0.25
        Case 52 * Tr1 To 80 * Tr1
            Tncn = 9.75 * Tr1 + (dTnhap - 52 * Tr1) * 0.3
        Case Is > 80 * Tr1
            Tncn = 18.15 * Tr1 + (dTnhap - 80 * Tr1) * 0.35
    End Select
End Function
Còn hàm If (xem thêm trong file đính kèm nha).
Code của Ngọc Tốt lắm, tuy nhiên cần rút gọn lại ở các điều kiện Case (những dòng Mình tô chữ màu xanh) và IF như sau:
Mã:
Option Explicit
Const Tr1 = 10 ^ 6

Public Function Tncn(ByVal dLuong As Double) As Double
'Ham tinh nay da tru phan Giam tru ban than roi (la 4 trieu)
'Ham nay chua tinh Giam tru nguoi phu thuoc va cac khoan khac
    Dim dTnhap As Double
    dTnhap = dLuong - 4 * Tr1
    Select Case dTnhap
        Case Is <= 0
            Tncn = 0
        Case Is <= 5 * Tr1
            Tncn = dTnhap * 0.05
        Case Is <= 10 * Tr1
            Tncn = 0.25 * Tr1 + (dTnhap - 5 * Tr1) * 0.1
        Case 18 * Tr1
            Tncn = 0.75 * Tr1 + (dTnhap - 10 * Tr1) * 0.15
        Case Is <= 32 * Tr1
            Tncn = 1.95 * Tr1 + (dTnhap - 18 * Tr1) * 0.2
        Case Is <= 52 * Tr1
            Tncn = 4.75 * Tr1 + (dTnhap - 32 * Tr1) * 0.25
        Case Is <= 80 * Tr1
            Tncn = 9.75 * Tr1 + (dTnhap - 52 * Tr1) * 0.3
        Case Is > 80 * Tr1
            Tncn = 18.15 * Tr1 + (dTnhap - 80 * Tr1) * 0.35
    End Select
End Function
Mã:
Public Function Tncn1(ByVal dLuong As Double) As Double
'Ham tinh nay da tru phan Giam tru ban than roi (la 4 trieu)
'Ham nay chua tinh Giam tru nguoi phu thuoc va cac khoan khac
        Dim dTnhap As Double
        dTnhap = dLuong - 4 * Tr1
        If dTnhap <= 0 Then
            Tncn1 = 0
        ElseIf dTnhap <= 5 * Tr1 Then
            Tncn1 = dTnhap * 0.05
        ElseIf dTnhap <= 10 * Tr1 Then
            Tncn1 = 0.25 * Tr1 + (dTnhap - 5 * Tr1) * 0.1
        ElseIf dTnhap <= 18 * Tr1 Then
            Tncn1 = 0.75 * Tr1 + (dTnhap - 10 * Tr1) * 0.15
        ElseIf dTnhap <= 32 * Tr1 Then
            Tncn1 = 1.95 * Tr1 + (dTnhap - 18 * Tr1) * 0.2
        ElseIf dTnhap <= 52 * Tr1 Then
            Tncn1 = 4.75 * Tr1 + (dTnhap - 32 * Tr1) * 0.25
        ElseIf dTnhap <= 80 * Tr1 Then
            Tncn1 = 9.75 * Tr1 + (dTnhap - 52 * Tr1) * 0.3
        Else
            Tncn1 = 18.15 * Tr1 + (dTnhap - 80 * Tr1) * 0.35
        End If
End Function

To VuMinh: Tương tự bài của Bạn Vuminh cũng rút gọn lại các điều kiện ElseIf (Vì đã có điều kiện dòng phía trên rồi thì không cần nhập thêm khoảng điều kiện ở dòng phía dưới, Lập điều kiện giống như trong bài toán đánh giá học sinh Giỏi, Khá, Trung bình...)
 
Lần chỉnh sửa cuối:
Không biết có gì ngược với bài giảng của các thày không chứ với mình thì hàm này mình sẽ viết:

Mã:
Public Function Tncn1(ByVal dLuong As Double) As Double
    Dim dTnhap As Double
    dTnhap = dLuong / 10 ^ 6 - 4
    Select Case dTnhap
        Case Is <= 0
            Tncn1 = 0
        Case Is <= 5
            Tncn1 = dTnhap * 0.05
        Case Is <= 10
            Tncn1 = 0.1 * dTnhap - 0.25
        Case 18
            Tncn1 = 0.15 * dTnhap - 0.75
        Case Is <= 32
            Tncn1 = 0.2 * dTnhap - 1.65
        Case Is <= 52
            Tncn1 = 0.25 * dTnhap - 3.25
        Case Is <= 80
            Tncn1 = 0.3 * dTnhap - 5.85
        Case Is > 80
            Tncn1 = 0.35 * dTnhap - 18.15
    End Select
    Tncn1 = Tncn1 * 10 ^ 6
End Function
Như vậy, thoáng và gọn gàng hơn.
 
Lần chỉnh sửa cuối:
Không biết có gì ngược với bài giảng của các thày không chứ với mình thì hàm này mình sẽ viết:

Mã:
Public Function Tncn1(ByVal dLuong As Double) As Double
Dim dTnhap As Double
dTnhap = dLuong / 10 ^ 6 - 4
Select Case dTnhap
Case Is <= 0
Tncn1 = 0
Case Is <= 5
Tncn1 = dTnhap * 0.05
Case Is <= 10
Tncn1 = 0.1 * dTnhap - 0.25
Case 18
Tncn1 = 0.15 * dTnhap - 0.75
Case Is <= 32
Tncn1 = 0.2 * dTnhap - 1.65
Case Is <= 52
Tncn1 = 0.25 * dTnhap - 3.25
Case Is <= 80
Tncn1 = 0.3 * dTnhap - 5.85
Case Is > 80
Tncn1 = 0.35 * dTnhap - 18.15
End Select
Tncn1 = Tncn1 * 10 ^ 6
End Function
Như vậy, thoáng và gọn gàng hơn.

Cách này của anh gọn thật đó. Em xin sửa lại chút chỗ này cho thành số dương:

PHP:
Tncn1 = Tncn1 * 10 ^ 6
Thành:
PHP:
Tncn1 = -(Tncn1 * 10 ^ 6)
 
Cách này của anh gọn thật đó. Em xin sửa lại chút chỗ này cho thành số dương:

PHP:
Tncn1 = Tncn1 * 10 ^ 6
Thành:
PHP:
Tncn1 = -(Tncn1 * 10 ^ 6)
Sao lại có dấu - phía trước nhỉ? (Kết quả của Ngọc và anh Việt khác nhau ở thu nhập >85 triệu)
 
Em đã sửa lại code, sai lệch đó là em nhầm TN1 thành TN ở đoạn thu nhập nhỏ hơn 5 triệu sau khi giảm trừ gia cảnh. Hôm nay em vội viết xong đi học luôn nên chưa test kỹ. Giờ em gửi lại code đã test. Cám ơn các AC đã nhận xét và mong các AC đóng góp cho bài của em xem ở đâu cần sửa không.
Mã:
Tôi test bài của bạn vẫn bị sai. 
Tôi ví dụ : 
a,Thu nhập 8.000.000 có 1 phụ thuộc, thuế tính được	          = 120.000
b,Thu nhập 6.400.000 không người phụ thuộc, thuế tính được	 = 390.000 

Xét hai khoản thu nhập trên số thuế nộp bằng nhau mới đúng.
Vi 8tr – 1,6tr = 6,4 tr Tại sao số thuế phải nộp lại khác nhau?
 
Lần chỉnh sửa cuối:
Sao lại có dấu - phía trước nhỉ? (Kết quả của Ngọc và anh Việt khác nhau ở thu nhập >85 triệu)

Chết thật! Em cũng sơ xuất quá, em lại không test mức >85 triệu chứ!!? Giờ em test lại mới thấy không đúng rồi.
Bác Công phát hiện đúng rồi đó.
 
[/QUOTE]
Tôi test bài của bạn vẫn bị sai.
Tôi ví dụ :
a,Thu nhập 8.000.000 có 1 phụ thuộc, thuế tính được = 120.000
b,Thu nhập 6.400.000 không người phụ thuộc, thuế tính được = 390.000

Xét hai khoản thu nhập trên số thuế nộp bằng nhau mới đúng.
Vi 8tr – 1,6tr = 6,4 tr Tại sao số thuế phải nộp lại khác nhau?


Còn theo thự tế. Nhân tiện đây trích TT Số: 84/2008/TT-BTC ngày 30 tháng 9 năm 2008
của bộ tài chính
[/QUOTE]
Đó là anh chưa tính khoản giảm trừ cho bản thân người nộp thuế 4 triệu. Nếu không có người phụ thuộc thì không được trừ gì hết, nhưng nếu có người phụ thuộc sẽ được giảm 2 khoản:
- 4 tr cho bản thân người nộp thuế
- 1.6 tr cho mỗi người phụ thuộc
Cho nên người phải nộp không có người phụ thuộc phải nộp: 5.000.000*0.05+1.400.000*0.1=390.000
Còn người kia tính khoản giảm trừ thì thu nhập thực chịu thuế là 8.000.000-4.000.000-1*1.600.000=240.000
Do đó thực nộp chỉ là 2400000*0.05=120.000 thôi.
 
Tôi test bài của bạn vẫn bị sai.
Tôi ví dụ :
a,Thu nhập 8.000.000 có 1 phụ thuộc, thuế tính được = 120.000
b,Thu nhập 6.400.000 không người phụ thuộc, thuế tính được = 390.000

Xét hai khoản thu nhập trên số thuế nộp bằng nhau mới đúng.
Vi 8tr – 1,6tr = 6,4 tr Tại sao số thuế phải nộp lại khác nhau?
Đó là anh chưa tính khoản giảm trừ cho bản thân người nộp thuế 4 triệu. Nếu không có người phụ thuộc thì không được trừ gì hết, nhưng nếu có người phụ thuộc sẽ được giảm 2 khoản:
- 4 tr cho bản thân người nộp thuế
- 1.6 tr cho mỗi người phụ thuộc
Cho nên người phải nộp không có người phụ thuộc phải nộp: 5.000.000*0.05+1.400.000*0.1=390.000
Còn người kia tính khoản giảm trừ thì thu nhập thực tính thuế là 8.000.000-4.000.000-1*1.600.000=2.400.000
Do đó thực nộp chỉ là 2.400.000*0.05=120.000 thôi.
Bài trên em viết nhầm, anh nào là mod xóa hộ nhé, em không biết tự xóa bài của mình thế nào.
 
Lần chỉnh sửa cuối:
Web KT
Back
Top Bottom