Vergi iadesi formül tablosu

Katılım
11 Mayıs 2005
Mesajlar
36
Merhaba Vergi iadesinde doldurulan meblağların ilk 3300 YTL sinin %8i ikinci 3300 kısmının %6 sını kalan kısmının ise % 4 ünü ayrı ayrı hangi formülü kullanarak hesaplayabilirim. İncelediğim vergi aidesi programlarında hepsi 3000 ytl üzerinden yapılmış ve sayfaların hepsi korumalı.. Biliyorsunuz ki bu sene vergi dilim çalışanlar için 3300 üzerinden yapılmaya başlandı.. Bu formülle ilgili yardımcı olurmusunuz.
 
Katılım
11 Mayıs 2005
Mesajlar
36
Uzman arkadaşlar!! yok mu şu formülü bana söyleyecek bir arkadaş.. İf veya sumprodoct ile denedim bir türlü olmuyor excel in ingilizce olmasıda çabası..!! :kafa: :kafa:
 
Katılım
16 Aralık 2005
Mesajlar
130
Function OGI2005(Matrah As Currency) As Currency
biriktir = Switch(Matrah >= 0 And Matrah <= 3300, 0.08 * Matrah, _
Matrah >= 3300.1 And Matrah <= 6600, 0.06 * (Matrah - 3300) + 264, _
Matrah >= 6600.1, 0.04 * (Matrah - 6600) + 462)
OGI2005 = Round(biriktir, 2)
End Function
 
Katılım
16 Aralık 2005
Mesajlar
130
Rica ederim. Vermiş olduğunuz linklerdeki çözümlerde oldukça güzeldi. Switch işlevi ve kullanımına örnek olması amacıyla bunu gönderdim.
 
Katılım
7 Temmuz 2004
Mesajlar
330
Excel Vers. ve Dili
Office 2013 Türkçe
Merhaba,

A1 hücresine fiş tutarını yazıp, istediğiniz bir hücreye aşağıdaki formülü kopyalayıp yapıştırın.

=EÐER(A1<=3300;A1*8%;EÐER(VE(A1>3300;A1<=6600);3300*8%+(A1-3300)*6%;EÐER(A1>6600;3300*8%+3300*6%+(A1-6600)*4%)))

İyi çalışmalar.
 
Katılım
11 Mayıs 2005
Mesajlar
36
sn. osman telci tşk. ederim Ancak Ben ayrı ayrı demiştim. Tek hücrede toplamı istemiyorum.. Yani Toplam 15000 YTL lik fiş topladıysam bunun 3300 lük kısmının %8 ini bir hücrede ikinci 3300-6600 lık kısmının % 6 sını başka bir hücrede en son kalan kısmının da % 4 ünü başka bir hücrede görmek istiyorum.. Yani ayrı ayrı hücrelerde nasıl yapabilirim
 

Ali

Uzman
Katılım
21 Temmuz 2005
Mesajlar
7,895
Excel Vers. ve Dili
İş:Excel 2016-Türkçe
EÐER yerine IF
VE yerine AND kullanarak deneyin
 
Katılım
7 Temmuz 2004
Mesajlar
330
Excel Vers. ve Dili
Office 2013 Türkçe
Merhaba,

EÐER = IF
VE = AND

=IF(A1<=3300;A1*8%;IF(AND(A1>3300;A1<=6600);3300*8%+(A1-3300)*6%;IF(A1>6600;3300*8%+3300*6%+(A1-6600)*4%)))

İyi çalışmalar.
 
Katılım
11 Mayıs 2005
Mesajlar
36
Ok formülün çalışyor ancak toplamı tek hücrede yazıyor.. Benim istediğim bu değil.. Ben hepsini ayrı ayrı hücrelerde istiyorum.. Ã?rnğ. 12000 ytl lik fiş yazdı isem bunun 3300*%8 lik kısmını b1 hücresinde;6600 lük kısmını B2 hücresinde kalan kısmını ise B3 hücresinde olması için nasıl uygulamalıyım
 
Katılım
11 Mayıs 2005
Mesajlar
36
=IF(A1<=3300;A1*8%;IF(AND(A1>3300;A1<=6600);3300*8%))

sadece bu şekilde yaptığımda false yazıyor
 

xternet

Altın Üye
Katılım
12 Kasım 2004
Mesajlar
455
Excel Vers. ve Dili
2010 Tr
Altın Üyelik Bitiş Tarihi
12-10-2028
3300 lük dilimin yazılacağı hücreye
=IF(A1<=3300;A1*0,08;IF(A1>3300;3300*0,08;""))

6600 lük dilimin yazılacağı hücreye
=IF(AND(A1>3300;A1<=6600);(A1-3300)*0,06;IF(A1>6600;3300*0,06;""))

6600 den büyük dilimin yazılacağı hücreye
=IF(A1>6600;(A1-6600)*0,04;"")

Ben türkçe kullandığım için formülü denemedim. Umarım çalışıyordur.
 
Katılım
7 Kasım 2005
Mesajlar
192
Excel Vers. ve Dili
excel2003
Function iade(Fis As Double)
If Fis <= 3300# Then iade = 0.08 * Fis: Exit Function
If Fis > 3300# And Fis <= 6600 Then iade = 264 + (0.06 * (Fis - 3300)): Exit Function
If Fis > 6600# Then iade = 462 + (0.04 * (Fis - 6600)): Exit Function
hesapla:
If Fis <= sontutar Then
iade = ilkoran * ((sontutar - Fis)) + ikincioran * (((Fis) - sontutar))
Else
iade = ikincioran * Fis
End If
End Function
Ben Yukardaki kodlarla yapıyorum
 
Katılım
7 Kasım 2005
Mesajlar
192
Excel Vers. ve Dili
excel2003
Sayın Osmantelci sizin kodlarda matrahı istiyor,fiş miktarı farklı olursa sonuç doğru çıkmayabilir sanıyorum.
 
Katılım
16 Aralık 2005
Mesajlar
130
otufan03' Alıntı:
Sayın Osmantelci sizin kodlarda matrahı istiyor,fiş miktarı farklı olursa sonuç doğru çıkmayabilir sanıyorum.
Sonucun doğru çıkmaması için bir sebep yok. Sizin belirtmiş olduğunuz işlem vergi iade tablosu ile ilgili Kişinin yıllık vergi matrahı ile topladığı fiş miktarı bu tabloda karşılaştırılır. Vergi İadesi ile ilgili bu fonksiyonun sizin belirttiğiniz işlemle hiç bir ilgisi yok. Kişinin Yıllık Vergi Matrahından fazla topladığı fişlerin hesaplama konusu yapılmayacağını onun Vergi İade Tablosunu hesaplayan kişinin bilmesi gerekir. Fonksiyonlar bu v.b. tablolara bağlı kalmaksızın yazılır. Þimdi Vergi İade Tablosunun olması gereken şekli ve fonksiyonumuzun bu tablodaki yeri şöyledir.

Kod:
B3-ADI SOYADI: ADEM GÃ?VEÇ	
C3-2005 YILI GELİR VERGİSİ MATRAHI: 5.610,00
D3-HARCAMALAR TUTARI                    : 5.700,00
E3-İÞLEME TABİ MATRAH                    : 5.610,00

İşleme tabi matrah için: =EÐER(D3<=C3;D3;C3)
İADE TUTARI               : =OGI2005(E3)
 
Katılım
16 Aralık 2005
Mesajlar
130
otufan03' Alıntı:
Function iade(Fis As Double)
If Fis <= 3300# Then iade = 0.08 * Fis: Exit Function
If Fis > 3300# And Fis <= 6600 Then iade = 264 + (0.06 * (Fis - 3300)): Exit Function
If Fis > 6600# Then iade = 462 + (0.04 * (Fis - 6600)): Exit Function
hesapla:
If Fis <= sontutar Then
iade = ilkoran * ((sontutar - Fis)) + ikincioran * (((Fis) - sontutar))
Else
iade = ikincioran * Fis
End If
End Function
Ben Yukardaki kodlarla yapıyorum
Fonksiyonunuzdaki : Exit Function ları silin
hesapla: satırı dahil olmak üzere aşağı doğru tüm satırları silin (End Function hariç), kullandığınız değişken fonksiyonun parametrelerinden değil. Gerçi fazla mal göz çıkarmaz sadece satır kalabalığı olmuş o kadar.

Sizin yazdığınız foknsiyonda ise fiş miktarı soruluyor adam 10 trilyonluk fiş topladı ise nolacak

Yıllık Vergi Matrahı: 5.610,00 YTL
Topladığı Fiş Miktarı : 7.000,00
=iade(7.000) = 478,00 YTL
Halbuki : 5.610,00 için 402,60 YTL çıkmalı idi

Yapmış olduğunuz faydalı eleştiriye göre sizinde Fonksiyonununuz şu şekilde olmalı idi:

Function OGI2005(Matrah As Double, ToplananFis As Double) As Double
Dim Tutar As Double
If Matrah < ToplananFis Then Tutar = Matrah Else: Tutar = ToplananFis
If Tutar <= 3300# Then OGI2005 = 0.08 * Tutar
If Tutar > 3300# And Tutar <= 6600 Then OGI2005 = 264 + (0.06 * (Tutar - 3300))
If Tutar > 6600# Then OGI2005 = 462 + (0.04 * (Tutar - 6600))
End Function

Not: Sanırım Yaptığınız fonksiyon yanlış sonuç veriyor demek yerine şunuda eklmeniz daha faydalı olur deseydiniz benim için bunu yapmak hiçde zor değildi. Buyrun Matrah ve Fiş miktarınıda kontrol eden Functionunuzu
 
Üst