Gelir vergisi oranını(0,15-0,20-0,27-0,35) şeklinde yazdırma

Katılım
7 Şubat 2008
Mesajlar
206
Excel Vers. ve Dili
izin programı
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
 

Ekli dosyalar

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
43,498
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Selamlar,

Aşağıdaki kodu dosyanıza ekleyip denermisiniz.

Kod:
Function GVO(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
    GVO = 0.15
'************* II. DILIM ***************
ElseIf Kumulatif_Toplam > UST_I And Kumulatif_Toplam <= UST_II Then
    GVO = 0.2
'************* III. DILIM ***************
ElseIf Kumulatif_Toplam > UST_II And Kumulatif_Toplam <= UST_III Then
    GVO = 0.27
'************* IV. DILIM ****************
ElseIf Kumulatif_Toplam > UST_III Then
    GVO = 0.35
End If
End Function
 
Katılım
7 Şubat 2008
Mesajlar
206
Excel Vers. ve Dili
izin programı
kodu denedim olmadı.hata verdi. vusial basic bilgim zayıf. siz gönderdiğim belgede uygulayıp eklermisiniz.birde eski kod aynen kalacak yeni kod ona ek olacak. denediğimde iki kod çakışıyor heralde.
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
43,498
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Selamlar,

Fonksiyonun birisinin adı GV birisinin adı GVO çakışması mümkün değil.

=GVO(Kriter1;Kriter2) şeklinde kullanmalısınız.
 
Katılım
7 Şubat 2008
Mesajlar
206
Excel Vers. ve Dili
izin programı
tamam iki kriter deneyince oldu.ben tek kiriter üzerinden yapıyordum.
 
Katılım
25 Aralık 2007
Mesajlar
99
Excel Vers. ve Dili
excel 2003
merhaba

Gelir vergisini hesaplamak için makroya gerek duymadan kolayca her pcde kullanabileceğiniz bir formül vermek isterim önce.

=EĞER(VE(AB2<43000;AB2+AH2>43000);(43000-AB2)*27/100+(AB2+AH2-43000)*35/100;EĞER(VE(AB2<19000;AB2+AH2>19000);(19000-AB2)*20/100+(AB2+AH2-19000)*27/100;EĞER(VE(AB2<7500;AB2+AH2>7500);(7500-AB2)*15/100+(AB2+AH2-7500)*20/100;EĞER(AB2=>43000;AH2*35/100;EĞER(VE(AB2=>19000;AB2+AH2<43000);AH2*27/100;EĞER(VE(AB2=>7500;AB2+AH2<19000);AH2*20/100;EĞER(VE(AB2+AH2<7500;AB2<7500);AH2*15/100)))))))

Bu örnekte AB2 hücresinde kümülatif, AH2 hücresinde ise gelir vergisi matrahı bulunmaktadır. Rakamları güncellersek formül işinize yarar.

Veya VB'de de şöyle yapabiliriz.

Function GVergisi(kumulatif, gvmat)

yenikum = kumulatif + gvmat
If (kumulatif <= 43000) Then
If (yenikum > 43000) Then
vergi = Round(((43000 - kumulatif) * 27 / 100) + ((yenikum - 43000) * 35 / 100), 2)
End If
End If
If (kumulatif <= 19000) Then
If (yenikum > 19000) Then
vergi = Round(((19000 - kumulatif) * 20 / 100) + ((yenikum - 19000) * 27 / 100), 2)
End If
End If

If (kumulatif <= 7500) Then
If (yenikum > 7500) Then
vergi = Round(((7500 - kumulatif) * 15 / 100) + ((yenikum - 7500) * 20 / 100), 2)
End If
End If

If (kumulatif > 43000) Then
vergi = Round(gvmat * 35 / 100, 2)
End If

If (kumulatif > 19000) Then
If (yenikum <= 43000) Then
vergi = Round(gvmat * 27 / 100, 2)
End If
End If

If (kumulatif > 7500) Then
If (yenikum <= 19000) Then
vergi = Round(gvmat * 20 / 100, 2)
End If
End If

If (kumulatif < 7500) Then
If (yenikum <= 7500) Then
vergi = Round(gvmat * 15 / 100, 2)
End If
End If

GVergisi = vergi

End Function

=GVergisi(Kümülatif olan hücreyi seçin ; vergi matrahına esas olan hücreyi seçin)
Yani örneğin sizin kümülatif A4 Hücresinde ve gelir vergisi matrahı A6 hücresindeyse yapmanız gereken şey sadece..
=GVergisi(A4;A6)

Burada amacımız vergi oranlarını yazdırmak sanırım. Ama bu iş biraz zor. Şöyleki vergi dilimi kıst olduğu zaman hangi dilimden alacak önce onu belirleyelim. Yani bir kısmı %20 bir kısmı %27 ise hangisini yazdıracağız?
Ama istersen şöylede yapabiliriz.

Hücreye şöyle yazmasını ister misiniz?


Örneğin vergi kısta girmişse;
850 TL %20 den
680 TL %27 den vergi kesilmiştir.
 
Katılım
7 Şubat 2008
Mesajlar
206
Excel Vers. ve Dili
izin programı
ben Korhan Ayhan beyin(2 mesajda) vermiş olduğu kodla sorunumu çözdüm.
 
Üst