Geçersiz Ad Hatası

denese

Altın Üye
Katılım
17 Mart 2011
Mesajlar
437
Excel Vers. ve Dili
Office 2019
Altın Üyelik Bitiş Tarihi
02-03-2026
Merhaba,

Kullanıcı tanımlı fonksiyonların yer aldığı ekteki excel dosyasını her açtığımda "I3 : I14" aralığındaki formüller "Geçersiz Ad Hatası" veriyor. "I3" hücresindeyken formülü yeniden hesaplattığımda sorun çözülüyor. Aynı şekilde tüm "I" sütunu için bunu uygulamak durumunda kalıyorum. Bu neden kaynaklanıyor ve sorunu nasıl giderebilirim. Yardımcı olabilir misiniz.
 

Ekli dosyalar

Muzaffer Ali

Destek Ekibi
Destek Ekibi
Katılım
5 Haziran 2006
Mesajlar
6,165
Excel Vers. ve Dili
2019 Türkçe
Merhaba

Sorun döngüsel başvurudan kaynaklanıyor.

B3 te =I3*14/100 formülü var
I3 te de =A3+B3+C3+G3+H3 formülü var.

B3, I3'ün sonucuna göre değer üretmesi gerekiyor.
Aynı zamanda I3 te B3 ün sonucuna göre değer üretmesi gerekiyor.

Yani her iki hücredeki formül diğerinin sonucuna bağlı.

Formülleri yeniden gözden geçirip döngüsel başvuruları düzeltirseniz sorun düzelir
 

denese

Altın Üye
Katılım
17 Mart 2011
Mesajlar
437
Excel Vers. ve Dili
Office 2019
Altın Üyelik Bitiş Tarihi
02-03-2026
Merhaba,

Netten Brüte hesaplama yaparken döngüsel başvuruya ihtiyaç duyuluyor. Yinelenen değerler aktif. Döngüsel başvuru oluşan diğer çalışmalarımda böyle bir hata almıyorum. Burada KTF mi bu duruma neden oluyor anlamadım.
 

Muzaffer Ali

Destek Ekibi
Destek Ekibi
Katılım
5 Haziran 2006
Mesajlar
6,165
Excel Vers. ve Dili
2019 Türkçe
KTF ile alakası yok. Döngüsel formülleri düzelttikten sonra bir deneme yapın sorun düzelecektir.
 

Haluk

Özel Üye
Katılım
7 Temmuz 2004
Mesajlar
12,406
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Altın Üyelik Bitiş Tarihi
Mantık olarak, formüllerin döngüsel başvuru olacak şekilde yazılmaması lazım ....

Peki.... siz bu işi elle hesap makinesi kullanarak yapsanız, yapabilirmisiniz? Aynı nedenle, yine yapamazsınız....

.
 

denese

Altın Üye
Katılım
17 Mart 2011
Mesajlar
437
Excel Vers. ve Dili
Office 2019
Altın Üyelik Bitiş Tarihi
02-03-2026
Doğru söylüyorsunuz.. Ancak anlayamadığım konu şu; döngüsel formüllerin olduğu başka dosyada bu hatayı almıyorum. Ekteki dosyayı inceleyebilir misiniz. Aynı döngüsel formül burada da var fakat dosya hata vermiyor.
 

Ekli dosyalar

Merhum İdris SERDAR

Moderatör
Yönetici
Katılım
21 Ekim 2005
Mesajlar
17,094
Excel Vers. ve Dili
Excel, 365 - İngilizce
.

Brütten nete veya özellikle netten brüte ücret hesaplamalarında genelde döngüsel başvuru kullanılmaktadır.

Buradaki problem, GV KTF'den kaynaklı. Bunları tetikleyen bir şey olmalı.

Bu nedenle aşağıdaki kodu bir modüleye koyun ve I sütunundaki alanı seçerek çalıştırın.

Kod:
Sub F2_enter()
    Selection.Value = Selection.FormulaR1C1
End Sub
.
 

Haluk

Özel Üye
Katılım
7 Temmuz 2004
Mesajlar
12,406
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Altın Üyelik Bitiş Tarihi
İkinci dosyada ben döngüsel başvuru göremedim.... hangi hücreler arasında?

.
 

Muzaffer Ali

Destek Ekibi
Destek Ekibi
Katılım
5 Haziran 2006
Mesajlar
6,165
Excel Vers. ve Dili
2019 Türkçe
Hata vermemesi daha kötü ya.
Hiçbir sorun yokmuş gibi çalışıyorsunuz.

Hata vermeyen dosyadaki hesaplamaları kendiniz manuel yaparak sağlamasını yapın..
Sonuçların yanlış dönmesi çok olası bir durum.
 

Merhum İdris SERDAR

Moderatör
Yönetici
Katılım
21 Ekim 2005
Mesajlar
17,094
Excel Vers. ve Dili
Excel, 365 - İngilizce
.

Eklenen ikinci dosyada döngüsel başvurudan kaçınmak için yardımcı sütunlar kullanılmış ve bu sütunlar gizlenmiş.

Bu nedenle arkadaşın sorunu KTF'nin tetiklenmesi.

.
 

denese

Altın Üye
Katılım
17 Mart 2011
Mesajlar
437
Excel Vers. ve Dili
Office 2019
Altın Üyelik Bitiş Tarihi
02-03-2026
Hata vermemesi daha kötü ya.
Hiçbir sorun yokmuş gibi çalışıyorsunuz.

Hata vermeyen dosyadaki hesaplamaları kendiniz manuel yaparak sağlamasını yapın..
Sonuçların yanlış dönmesi çok olası bir durum.
Sayın İdris Serdar' ın dediği gibi, bu hesaplamada döngüsel başvuru gerekli.
 

Haluk

Özel Üye
Katılım
7 Temmuz 2004
Mesajlar
12,406
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Altın Üyelik Bitiş Tarihi
O zaman, Excel icat edilmeden önce netten brüte maaş hesaplanamıyordu .... gibi bir şey çıkıyor ortaya .... :)

.
 

denese

Altın Üye
Katılım
17 Mart 2011
Mesajlar
437
Excel Vers. ve Dili
Office 2019
Altın Üyelik Bitiş Tarihi
02-03-2026

denese

Altın Üye
Katılım
17 Mart 2011
Mesajlar
437
Excel Vers. ve Dili
Office 2019
Altın Üyelik Bitiş Tarihi
02-03-2026
Ekteki bordro hesaplama dosyasında aynı şekilde KFT' ler kullanılmış. Burada ilave olarak "Brüt" fonksiyonu var ve dosya hata vermiyor. Bu fonksiyon ekteki "örnek" dosyasına uyarlanabilir mi, sorun bu şekilde çözülür mü?
 

Ekli dosyalar

denese

Altın Üye
Katılım
17 Mart 2011
Mesajlar
437
Excel Vers. ve Dili
Office 2019
Altın Üyelik Bitiş Tarihi
02-03-2026
Merhaba,

Metin Bey' in güncellediği KTF ile sorunu çözdüm. Kendisine ilgisinden dolayı teşekkür ediyorum.

Kod:
Function Brut(Net As Double, KGVM As Double, SGKMatrah As Double)
Dim Hesapla1 As Double
Dim Hesapla2 As Double

Hesapla1 = Net * 2
    For i = 1 To 100
        Hesapla2 = NetBul(Hesapla1, KGVM, SGKMatrah)
        If Hesapla2 = Net Then
            Brut = Hesapla1
            Else
            Hesapla1 = Hesapla1 - (Hesapla2 - Net)
        End If
    Next i
Brut = Hesapla1
End Function

Function NetBul(Brut As Double, KMatrah As Double, SGKMatrah As Double) As Double
    SGKPrimi = SGKM(SGKMatrah, Brut) * 15 / 100
    DamgaVergisi = DV(Brut)
    GelirVergisi = GV(KMatrah, Brut - SGKPrimi)
    NetBul = Brut - (SGKPrimi + DamgaVergisi + GelirVergisi)
End Function

Function GV(KMatrah As Double, VMatrah As Double) As Double
    Dim Dilim1 As Double, Dilim2 As Double, Dilim3 As Double, Dilim4 As Double
    Dim Oran1 As Integer, Oran2 As Integer, Oran3 As Integer, Oran4 As Integer, Oran5 As Integer
    Dim GV1 As Double, GV2 As Double, GV3 As Double, GV4 As Double, GV5 As Double
    
    Dilim1 = Range("Parametre!A2").Value
    Dilim2 = Range("Parametre!A3").Value
    Dilim3 = Range("Parametre!A4").Value
    Dilim4 = Range("Parametre!A5").Value
    Dilim5 = Range("Parametre!A6").Value
    
    Oran1 = Range("Parametre!C2").Value
    Oran2 = Range("Parametre!C3").Value
    Oran3 = Range("Parametre!C4").Value
    Oran4 = Range("Parametre!C5").Value
    Oran5 = Range("Parametre!C6").Value
        
    TMatrah = KMatrah + VMatrah
        
    If KMatrah >= Dilim1 And KMatrah < Dilim2 Then
        
        If TMatrah >= Dilim1 And TMatrah < Dilim2 Then
            GV1 = VMatrah * Oran1 / 100
        Else
            GV1 = 0
        End If
        
        If TMatrah >= Dilim2 And TMatrah < Dilim3 Then
            GV2 = ((Dilim2 - KMatrah) * Oran1 / 100) + ((VMatrah - (Dilim2 - KMatrah)) * Oran2 / 100)
        Else
            GV2 = 0
        End If
        
        If TMatrah >= Dilim3 And TMatrah < Dilim4 Then
            GV3 = ((Dilim2 - KMatrah) * Oran1 / 100) + ((Dilim3 - Dilim2) * Oran2 / 100) + ((VMatrah - (Dilim3 - KMatrah)) * Oran3 / 100)
        Else
            GV3 = 0
        End If
        
        If TMatrah >= Dilim4 And TMatrah < Dilim5 Then
            GV4 = ((Dilim2 - KMatrah) * Oran1 / 100) + ((Dilim3 - Dilim2) * Oran2 / 100) + ((Dilim4 - Dilim3) * Oran3 / 100) + ((VMatrah - (Dilim4 - KMatrah)) * Oran4 / 100)
        Else
            GV4 = 0
        End If
        
        If TMatrah >= Dilim5 Then
            GV5 = ((Dilim2 - KMatrah) * Oran1 / 100) + ((Dilim3 - Dilim2) * Oran2 / 100) + ((Dilim4 - Dilim3) * Oran3 / 100) + ((Dilim5 - Dilim4) * Oran4 / 100) + ((VMatrah - (Dilim5 - KMatrah)) * Oran5 / 100)
        Else
            GV5 = 0
        End If
    GoTo son
    End If
    
    If KMatrah >= Dilim2 And KMatrah < Dilim3 Then
        GV1 = 0
        If TMatrah >= Dilim2 And TMatrah < Dilim3 Then
            GV2 = VMatrah * Oran2 / 100
        Else
            GV2 = 0
        End If
        
        If TMatrah >= Dilim3 And TMatrah < Dilim4 Then
            GV3 = ((Dilim3 - KMatrah) * Oran2 / 100) + ((VMatrah - (Dilim3 - KMatrah)) * Oran3 / 100)
        Else
            GV3 = 0
        End If
        
        If TMatrah >= Dilim4 And TMatrah < Dilim5 Then
            GV4 = ((Dilim3 - KMatrah) * Oran2 / 100) + ((Dilim4 - Dilim3) * Oran3 / 100) + ((VMatrah - (Dilim4 - KMatrah)) * Oran4 / 100)
        Else
            GV4 = 0
        End If
        
        If TMatrah >= Dilim5 Then
            GV5 = ((Dilim3 - KMatrah) * Oran2 / 100) + ((Dilim4 - Dilim3) * Oran3 / 100) + ((Dilim5 - Dilim4) * Oran4 / 100) + ((VMatrah - (Dilim5 - KMatrah)) * Oran5 / 100)
        Else
            GV5 = 0
        End If
    GoTo son
    End If
    
    If KMatrah >= Dilim3 And KMatrah < Dilim4 Then
        GV1 = 0
        GV2 = 0
        If TMatrah >= Dilim3 And TMatrah < Dilim4 Then
            GV3 = VMatrah * Oran3 / 100
        Else
            GV3 = 0
        End If
        
        If TMatrah >= Dilim4 And TMatrah < Dilim5 Then
            GV4 = ((Dilim4 - KMatrah) * Oran3 / 100) + ((VMatrah - (Dilim4 - KMatrah)) * Oran4 / 100)
        Else
            GV4 = 0
        End If
        
        If TMatrah >= Dilim5 Then
            GV5 = ((Dilim4 - KMatrah) * Oran3 / 100) + ((Dilim5 - Dilim4) * Oran4 / 100) + ((VMatrah - (Dilim5 - KMatrah)) * Oran5 / 100)
        Else
            GV5 = 0
        End If
    GoTo son
    End If
    
    If KMatrah >= Dilim4 And KMatrah < Dilim5 Then
        GV1 = 0
        GV2 = 0
        GV3 = 0
        
        If TMatrah >= Dilim4 And TMatrah < Dilim5 Then
            GV4 = VMatrah * Oran4 / 100
        Else
            GV4 = 0
        End If
        
        If TMatrah >= Dilim5 Then
            GV5 = ((Dilim5 - KMatrah) * Oran4 / 100) + ((VMatrah - (Dilim5 - KMatrah)) * Oran5 / 100)
        Else
            GV5 = 0
        End If
    GoTo son
    End If
    
    If KMatrah >= Dilim5 Then
        GV1 = 0
        GV2 = 0
        GV3 = 0
        GV4 = 0
        
        If TMatrah >= Dilim5 Then
            GV5 = VMatrah * Oran5 / 100
        Else
            GV5 = 0
        End If
    GoTo son
    End If
    
son:
    GV = GV1 + GV2 + GV3 + GV4 + GV5
End Function
Örnek dosya aşağıdaki linkte mevcut;
 
Üst