• DİKKAT

    DOSYA İndirmek/Yüklemek için ÜCRETLİ ALTIN ÜYELİK Gereklidir!
    Altın Üyelik Hakkında Bilgi

Banka POS oranlarının hesaplanmasını kısaltma

  • Konbuyu başlatan Konbuyu başlatan Sunix
  • Başlangıç tarihi Başlangıç tarihi
Katılım
6 Ocak 2011
Mesajlar
30
Excel Vers. ve Dili
Excel 2007
Merhabalar,

Banka POS cihazlarının farklı banka kartlarına uyguladıkları POS(Banka) oranlarını ayrı ayrı (Komisyon, Puan, Servis) olarak hesaplayan bir formül yazdım (Ek'te). Formül 2 bankanın POS cihazı için gayet sağlıklı çalışıyor (ek'te mevcut hali bulabilirsiniz)fakat üçüncü ya da dördüncü bir POS cihazı koymak istediğimde formül çok uzun olduğundan excel kabul etmiyor.

Yazmış olduğum formülü inceleyip bu formülü sağlıklı çalışır şekilde nasıl kısaltabileceğim konusunda bana fikir verirseniz memnun olurum. Ben araştırdım ve düşündüm fakat kısaltabilecek bir şey gelmedi aklıma :(.

Şimdiden yardımlarınız için teşekkür ederim.
 

Ekli dosyalar

Deneme

Yukarıda belirtmiş olduğum formülün kısaltması olarak şöyle bir başlangıç yaptım

=EĞER(EĞER(VE($A4="GB";(YADA($B4="GARANTİ BANKASI";$B4="TEB";$B4="Deniz Bank";$B4="ING Bank";$B4="Şeker Bank";$B4="Fortis Bank")));$I4*DÜŞEYARA($F4;Sayfa2!$B$73:$F$84;2;0)%;$I4*DÜŞEYARA($F4;Sayfa2!$B$70:$F$70;2;0)%);EĞER(VE($A4="FB";$B4="Finansbank");$I4*DÜŞEYARA($F4;Sayfa2!$I$73:$M$84;2;0)%;$I4*DÜŞEYARA($F4;Sayfa2!$I$70:$M$70;2;0)%))

.. ama bu formül de benim istediğimi tam olarak çıkartmıyor maalesef :(

yardımınızı bekliyorum..
 
Merhaba..

Bana tüm şartları verirseniz sizin için vba üzerinde bir fonksiyon hazırlayabilirim sanırım..
 
Şartlar

Şartlar şu şekilde olacak

Tanımlamalar,
A Kolonu = POS Cihazının hangi bankaya ait olduğunu belirtir.

B Kolonu = POS Cihazından işlem yapılan banka kartının hangi bankaya ait olduğunu belirtir.

F Kolonu = Taksit sayısını belirler. Fakat burda şöyle bir durum var. POS cihazının ait olduğu banka ile kullanılan kart aynı bankaya ya da o gruptaki bankaya ait ise taksitlendirmeye izin verilmeli. Sayfa2'de bulununan tablodaki POS cihazının ait olduğu banka'nın kendi grubundaki bankalara uygulayacağı oranlarla işlem yapılmalı. Değilse aşağıda anlatılan şekilde işlemler yapılmalı.
GB Grubu -> Garanti Bankası, TEB, Şekerbank, ING Bank, Deniz Bank
FB Grubu -> Finansbank
YKB Grubu -> YKB, Fortis Bank, Vakıf Bank, Anadolu Bank, Albaraka Türk

Koşullar,
Eğer A=GB ve B= GB grubundan herhangi bir banka ise, Sayfa2'deki Garanti Bankası taksitlendirme oranları uygulansın. Değilse Sayfa2!F69 uygulansın
Eğer A=FB ve B= Finansbank ise Sayfa2'deki Finansbank taksitlendirme oranları uygulanır. Değilse Sayfa2!M70 uygulansın.
Eğer A=YKB ve B= YKB grubundan herhangi bir banka ise, Sayfa2'deki YKB taksit oranları uygulansın. Değilse Sayfa2!T6 oranları uygulansın.

Yukarıdaki koşullar haricinde daha evvelde bahsettiğim gibi ek POS cihazı eklenebilmeli, yeni oranlar girilebilmelidir. Kodları okuduğunuzda anlamanız daha da kolaylaşacaktır.

Ayrıca her ne kadar VB işimi rahatlatacaksa da balık yemektense balık tutmayı öğrenmek isterim. :)

Şimdiden teşekkürler.
 
İşe Yarayan Formül

Aşağıdaki formül sadece GB ya da Garanti Bankası grubu için çalışıyor. Benim bunu YKB ve FB için de yapabiliyor olmam gerekiyor. Aşağıdaki mantıkla YKB ve FB için aynı formülü kullanabilirim. Şu an için tek sıkıntım bu 3 POS hesaplamasını birleştirebilmek.

=EĞER(VE($A3="GB";(YADA($B3="GARANTİ BANKASI";$B3="TEB")));$I3*DÜŞEYARA($F3;Sayfa2!B73:F84;2;0)%;$I3*DÜŞEYARA($F3;Sayfa2!$B$70:$F$70;2;0)%)

İyi çalışmalar,
 
.












Merhaba..

Öncelikle belirteyim Excel ve de formüller konusunda çok tecrübeli değilim.. ;) Çözüm direkt formül içerisinde de olabilir ama ben yine de bu yöntemin daha pratik ve hakimiyeti daha kolay olabileceğini düşünüyorum..

Alt+F11 tuşlarına basarak VBA editörüne geçiniz ve İnsert menüsünden Modüle seçiniz.. Açılan sayfaya alttaki fonksiyonu yerleştiriniz..:

Kod:
Function PosHesapla(AKolonu As String, BKolonu As String, _
                Tutar As Double, TaksitSayisi As Integer)
'GB Grubu
If AKolonu = "GB" And BKolonu = "Garanti Bankası" _
   Or BKolonu = "TEB" Or BKolonu = "Şekerbank" _
   Or BKolonu = "ING Bank" Or BKolonu = "Deniz Bank" Then
    trz = Application.VLookup(TaksitSayisi, Worksheets("Sayfa2").Range("B73:F84"), 2, 0)
ElseIf AKolonu = "GB" Then

    trz = Worksheets("Sayfa2").Range("F69") * _
          Application.VLookup(1, Worksheets("Sayfa2").Range("B70:F70"), 2, 0)
    'FB Grubu
ElseIf AKolonu = "FB" And BKolonu = "Finansbank" Then
    trz = Application.VLookup(TaksitSayisi, Worksheets("sayfa2").Range("I73:M84"), 2, 0)
ElseIf AKolonu = "FB" Then
    trz = Worksheets("sayfa2").Range("M70") * _
          Application.VLookup(1, Worksheets("Sayfa2").Range("I70:M70"), 2, 0)

    'YKB Grubu
ElseIf AKolonu = "YKB" And BKolonu = "YKB" _
       Or BKolonu = "Fortis Bank" Or BKolonu = "Vakıf Bank" _
       Or BKolonu = "Anadolu Bank" Or BKolonu = "Albaraka Türk" Then
    trz = Application.VLookup(TaksitSayisi, Worksheets("Sayfa2").Range("P9:T20"), 2, 0)
ElseIf AKolonu = "YKB" Then

    trz = Worksheets("Sayfa2").Range("T6") * _
          Application.VLookup(1, Worksheets("Sayfa2").Range("P6:T6"), 2, 0)
End If

PosHesapla = trz
End Function

İlgili hücrede bu şekilde kullanabilirsiniz..:

Kod:
=PosHesapla(A2;B2;I2;F2)

Alta sürükleyerek diğer satırlar içinde çoğaltabilirsiniz..

Fonksiyonun temelinde IF THEN ELSE karar yapısını kullandım. Şartlara göre başvurulacak hücreleri kendi mantığıma göre belirledim, bu konuda hata yapmış olabilirim siz gerekirse düzenlersiniz..

Yeni bir POS ilave etmek istediğinizde End If üstünden devam edebilirsiniz..:

Kod:
ElseIf AKolonu = "HSBC" And BKolonu = "HSBC" Then
    trz = Application.VLookup(TaksitSayisi, Worksheets("sayfa2").Range("I73:M84"), 2, 0)
ElseIf AKolonu = "FB" Then
    trz = Worksheets("sayfa2").Range("M70") * _
          Application.VLookup(1, Worksheets("Sayfa2").Range("I70:M70"), 2, 0)
End If 'Bu satırın üstüne yazılacak..
 
Yazmış olduğunuz formülü inceledim. İşe yarayacakmış gibi gözüküyor. Ama VBA'i çalıştırmakta güçlük çekiyorum. Hiç hakim olmadığım bir program ama biliyorum ki bir çalıştırsam bu sefer excel formülü yerine hep VBA yazmaya çalışıcam :).

Bunu nasıl çalıştıracağım konusunda bilgi verir misiniz? ya da msn'de kısaca anlatabilir misiniz?

november1@hotmail.com

Teşekkürler :)
 
Tamam çalıştırmayı başardım. Bir kaç test yapayım. Gerekli düzeltmeleri de yapabilirim herhalde.

Yardımlarınız için çok teşekkürler. Bir sıkıntı olursa mutlaka size sizi rahatsız ederim :) ..

Tekrar teşekkürler
 
.



Bu modülü nasıl kaydedip her açışımda çalıştırabilirim acaba?
 
Sayın Taruz;

İyi pazarlar ve dinlenceler. Katkınız için teşekkürler.

Sevgi ve saygılar.




Sayın Sunix;

Size de, iyi pazarlar. Bankaların POS uygulaması ilgimi çekti. Sayın Taruz'un kodlarını kullandığınız bir kaç veri girilmiş dosyayı ekleyebilir misiniz?

Teşekkürler.
 
.



Bu modülü nasıl kaydedip her açışımda çalıştırabilirim acaba?


Merhaba..

Modulü dosyamıza uyguladıktan sonra dosyanızı farklı kaydet seçeneğinden makro içerebilen dosya tür yani xlsm uzantılı olarak kaydederseniz istediğiniz olacaktır..
 
.


Dosyayı ilk iletimde bulabilirsiniz. VBA kodlarıyla kaydedip çalıştırmayı henüz başaramadığım için burdan gönderemiyorum. İlk iletimdeki dosyayı alıp Sayın Taruz'un kodlarını yerleştirdikten sonra çalışıyor. Yine de yapamazsanız size gönderebilirim tabii ki ..

İyi çalışmalar,
 
Merhaba..

Modulü dosyamıza uyguladıktan sonra dosyanızı farklı kaydet seçeneğinden makro içerebilen dosya tür yani xlsm uzantılı olarak kaydederseniz istediğiniz olacaktır..

Formülde GB hesaplamasında F69 hücresini kullanarak hesaplaması yazılıyken 1.25 alması gereken rakamı 1.5625 alıyor. Bunu nasıl düzeltebilirim?
 
Formülde GB hesaplamasında F69 hücresini kullanarak hesaplaması yazılıyken 1.25 alması gereken rakamı 1.5625 alıyor. Bunu nasıl düzeltebilirim?

Dosyanın ilk halinde bulunan fonksiyonda bir çarpım işlemi vardı, ona göre uyarlamıştım.. Bu işlem yoksa ilgili kısmı bu şekilde değiştiriniz..:

Kod:
   ' trz = Worksheets("Sayfa2").Range("F69") * _
          Application.VLookup(1, Worksheets("Sayfa2").Range("B70:F70"), 2, 0)
'Üsteki kısmı bununla değiştiriniz..:
    trz = Worksheets("Sayfa2").Range("F69")
 
Dosyanın ilk halinde bulunan fonksiyonda bir çarpım işlemi vardı, ona göre uyarlamıştım.. Bu işlem yoksa ilgili kısmı bu şekilde değiştiriniz..:

Yazmış olduğunuz kodlar zaten (maalesef) hesaplama yapmıyor. Sadece VLookup'tan bilgi çekiyor. :(
 
Başta da belirttiğim gibi ben temel şartları oluşturdum, işleme siz hakimsiniz.. Bir önceki mesajımdaki gibi düzenleme yaparsanız veri gelir.. Bu veri iel vba içerisinde işlem yaptırabilirsiniz..
 
.


Tamam.. Teşekkürler. Ben gerekli değişikleri yaptım. Tutar kısmını sizin formülünüzden sildim. Excelde bulunan o kolonu da parantezin dışına alıp % ile çarpınca istediğim sonucu bulabiliyorum. Çok teşekkürler.

Ben bu ek modül dosyasını hep excel dosyasının bulunduğu dizinde çalıştırmak zorundamıyım? Gömemiyor muyum?

Teşekkürler.
 
Dosyanın son biçimini yollayabilir misiniz?
 
Geri
Üst