AŞAĞIDAKİ KOD GELİR VERGİSİNİ HESAPLAMAKTA.
SORU:ben bu koda ek olarak hücrelere otamatik olarak GELİR VERGİSİ ORANINI (0,15-0,20-0,27-0,35) Şeklinde bulunan sayıya uygun olarak yazdırmak istiyorum.anlaşılır bilgi için belgem ektedir
ÖRNEK: =GVO(Q14) =0,27 =GVO(Q15) =0,20
Function GV(Kumulatif_Toplam As Double, Aylik_Ucret As Double) As Double
Dim Fark As Double
Const UST_I As Long = 8700
Const UST_II As Long = 22000
Const UST_III As Long = 50000
'************* I. DILIM ****************
If Kumulatif_Toplam <= UST_I Then
GV = RoundA(Aylik_Ucret * 0.15, 2)
'************* II. DILIM ***************
ElseIf Kumulatif_Toplam > UST_I And Kumulatif_Toplam <= UST_II Then
Fark = Kumulatif_Toplam - UST_I
If Fark < Aylik_Ucret Then
GV = (Aylik_Ucret - Fark) * 0.15
GV = RoundA(GV + Fark * 0.2, 2)
Else
GV = RoundA(Aylik_Ucret * 0.2, 2)
End If
'************* III. DILIM ***************
ElseIf Kumulatif_Toplam > UST_II And Kumulatif_Toplam <= UST_III Then
Fark = Kumulatif_Toplam - UST_II
If Fark < Aylik_Ucret Then
GV = (Aylik_Ucret - Fark) * 0.2
GV = RoundA(GV + Fark * 0.27, 2)
Else
GV = RoundA(Aylik_Ucret * 0.27)
End If
'************* IV. DILIM ****************
ElseIf Kumulatif_Toplam > UST_III Then
Fark = Kumulatif_Toplam - UST_III
If Fark < Aylik_Ucret Then
GV = (Aylik_Ucret - Fark) * 0.27
GV = RoundA(GV + Fark * 0.35, 2)
Else
GV = RoundA(Aylik_Ucret * 0.35, 2)
End If
End If
End Function
Private Function RoundA(Sayi, Optional Basamak As Long)
Kat& = 10 ^ Abs(Basamak)
If Basamak >= 0 Then RoundA = CDbl(FormatNumber(Left(Sayi, 30), Basamak))
If Basamak < 0 Then RoundA = CDbl(RoundA(FormatNumber(Left(Sayi, 30) / Kat), 0) * Kat)
End Function
SORU:ben bu koda ek olarak hücrelere otamatik olarak GELİR VERGİSİ ORANINI (0,15-0,20-0,27-0,35) Şeklinde bulunan sayıya uygun olarak yazdırmak istiyorum.anlaşılır bilgi için belgem ektedir
ÖRNEK: =GVO(Q14) =0,27 =GVO(Q15) =0,20
Function GV(Kumulatif_Toplam As Double, Aylik_Ucret As Double) As Double
Dim Fark As Double
Const UST_I As Long = 8700
Const UST_II As Long = 22000
Const UST_III As Long = 50000
'************* I. DILIM ****************
If Kumulatif_Toplam <= UST_I Then
GV = RoundA(Aylik_Ucret * 0.15, 2)
'************* II. DILIM ***************
ElseIf Kumulatif_Toplam > UST_I And Kumulatif_Toplam <= UST_II Then
Fark = Kumulatif_Toplam - UST_I
If Fark < Aylik_Ucret Then
GV = (Aylik_Ucret - Fark) * 0.15
GV = RoundA(GV + Fark * 0.2, 2)
Else
GV = RoundA(Aylik_Ucret * 0.2, 2)
End If
'************* III. DILIM ***************
ElseIf Kumulatif_Toplam > UST_II And Kumulatif_Toplam <= UST_III Then
Fark = Kumulatif_Toplam - UST_II
If Fark < Aylik_Ucret Then
GV = (Aylik_Ucret - Fark) * 0.2
GV = RoundA(GV + Fark * 0.27, 2)
Else
GV = RoundA(Aylik_Ucret * 0.27)
End If
'************* IV. DILIM ****************
ElseIf Kumulatif_Toplam > UST_III Then
Fark = Kumulatif_Toplam - UST_III
If Fark < Aylik_Ucret Then
GV = (Aylik_Ucret - Fark) * 0.27
GV = RoundA(GV + Fark * 0.35, 2)
Else
GV = RoundA(Aylik_Ucret * 0.35, 2)
End If
End If
End Function
Private Function RoundA(Sayi, Optional Basamak As Long)
Kat& = 10 ^ Abs(Basamak)
If Basamak >= 0 Then RoundA = CDbl(FormatNumber(Left(Sayi, 30), Basamak))
If Basamak < 0 Then RoundA = CDbl(RoundA(FormatNumber(Left(Sayi, 30) / Kat), 0) * Kat)
End Function
Ekli dosyalar
-
23.9 KB Görüntüleme: 63
