http://www.excelturk.com forum sayfasında gördüğüm bir çalışmayı sizlerle paylaşmak istiyorum. Çok güzel bir çalışma olduğunu düşündüğüm için forum sayfamızdaki üyelerinde yararlanması için buraya ekledim.
Gerçektende Excel ihtiyaç duyacağınız bir çok işlemi gerçekleştirmenize imkan veren bir çok yerleşik fonksiyona sahiptir. Mesela hazırladığınız bir Ücret tablosunda Gelir Vergisini çok rahatlıkla
= YUVARLA(Vergi Matrahının olduğu Hücre Adresi X Vergi Oranı) Formülü ile hesaplatabilirsiniz.
Ancak bundan daha güzel bir çözüm bulmak daha da güzel olmazmı. Mesela Öyle bir Fonksiyon olsaki yeni yılda bunun için hazırlanmış bir excel sayfasına gelir vergisi tarifelerini girdiğimiz otomatik olarak toplam matrahıda kontrol ederek kesilecek gelir vergisini hesaplasa. Sesinizi duyar gibiyim. Eminim hepiniz daha iyi olur diyorsunuzdur. Birçoğunuzun başına gelmiştir belkide, yeni yılda formüllerde değişiklik yapmayı unuttuğunuz için hatalı hesaplamalara neden olduğunuz olmuştur. Şimdi sözü fazla uzatmadan kullanıcı tanımlı Fonksiyonumuzu hazırlayalım.
1. Önce boş bir Excel dosyası Açalım.
2. Dosyamızı Farklı Kaydet İle masa üztüne Gelir Vergisi.xls Olarak kaydedelim. İsterseniz siz başka bir isimde verebilirsiniz.
3. Gelir Versi.Xls dosyasında bize iki sayfalazım olacak. Sayfa1'in ismini Tarife Olarak, Sayfa2'nin isminide Hesap Olarak Değiştirelim. Sayfa İsmi Değiştirmeyi Nasıl Yapacağınızı burada anlatmaya gerek yok sanırım. Dosyamızın aşağıdaki gibi biçimlendirelim.


4. Hesap isimli sayfamızda C3 hücresine aşağıdaki formülü yazın.
- Kod: Tümünü seç
=GV(A3+B3)-GV(A3)
5. Alt+F11 Tuşuna basarak Microsoft Visual Basic Editörünü açalım.
6. İnset Menüsünden Module konutuna tıklayarak projemize bir modül ekleyelim.
7. Eklediğimiz modülü seçip buraya aşağıdaki kodu ekleyelim.
- Kod: Tümünü seç
Function GV(Matrah As Double)
If Matrah >= 0 And Matrah < Sheets("Tarife").Range("B2").Value# + 1# _
Then GV = Sheets("Tarife").Range("C2").Value# * Matrah
If Matrah > Sheets("Tarife").Range("B2").Value# And Matrah < Sheets("Tarife").Range("B3").Value# + 1# _
Then GV = Sheets("Tarife").Range("C3").Value# * (Matrah - Sheets("Tarife").Range("B2").Value#) + _
(Sheets("Tarife").Range("B2").Value# * Sheets("Tarife").Range("C2").Value#)
If Matrah > Sheets("Tarife").Range("B3").Value# And Matrah < Sheets("Tarife").Range("B4").Value# + 1# _
Then GV = Sheets("Tarife").Range("C4").Value# * (Matrah - Sheets("Tarife").Range("B3").Value#) + _
((Sheets("Tarife").Range("B2").Value# * Sheets("Tarife").Range("C2").Value#) + _
((Sheets("Tarife").Range("B3").Value# - Sheets("Tarife").Range("B2").Value#) * _
Sheets("Tarife").Range("C3").Value#))
If Matrah > Sheets("Tarife").Range("B4").Value# _
Then GV = Sheets("Tarife").Range("C5").Value# * (Matrah - Sheets("Tarife").Range("B4").Value#) + _
(((Sheets("Tarife").Range("B2").Value# * Sheets("Tarife").Range("C2").Value#) + _
((Sheets("Tarife").Range("B3").Value# - Sheets("Tarife").Range("B2").Value#) * _
Sheets("Tarife").Range("C3").Value#)) + _
((Sheets("Tarife").Range("B4").Value# - Sheets("Tarife").Range("B3").Value#) * _
Sheets("Tarife").Range("C4").Value#))
End Function
Hepsi bu kadar. Şimdi excel sayfasına dönerek Hesap isimli sayfada Toplam matrahı ve Aylık Matrahı girerek Gelir Vergisinin doğru bir şekilde hesaplandığını görelim. Gerçektende Kullanıcı tanımlı bu fonksiyonu çalıştığınız excel sayfasına ekleyerek (Mesela Bir Maaş Bordrosu çalışmanıza) hatasız Gelir Vergisi hesaplatması yaptırabilirsiniz. İsteyenler dosyayı aşağıdan indirebilirler.
[link]http://excelturk.com/kullanici-tanimli-fonksiyonlar-hazirlamak-t197.html[/link] linkinden
Gelir Vergisi.xls dosyasını indirebilirsiniz.