Formül bazı hücrelerde çalışmıyor.

Katılım
31 Ocak 2019
Mesajlar
83
Excel Vers. ve Dili
2016 Excel. English.
Arkadaşlar kullandığım bir fonksiyon var. Makro ile kodlandı bu fonksiyon. Bugüne kadar sorunsuz kullanıyordum. Ancak bu fonksiyon aynı çalışma sayfasında bazı hücrelerde sorunsuz olarak çalışmasına rağmen bazı hücrelerde hatalı sonuç veriyor. Bütün hücrelerin formatı "General" biçiminde. Yani orda da bir sıkıntı yok. Hücre formatları aynı olmasına rağmen bu fonksiyonun bazı hücrelerde çalışıp bazı hücrelerde yanlış sonuç verme nedenini çözemedim. Söz konusu fonksiyon için kullanılan kod herhangi bir spesifik hücre için kodlanmış değil. Bütün çalışma kitabında geçerli. Yardımcı olabilirseniz sevinirim. Sorun ne olabilir?
Kod:
Function FreezeAfter(expression As String, deadline As Date) As Variant
    Application.Volatile
    Dim myText As String
    Dim myVal As Variant
    If Now > deadline Then
        myText = Application.Caller.Text
        If IsNumeric(myText) Then
            myVal = Val(myText)
        Else
            myVal = myText
        End If
    Else
        myVal = Application.Evaluate(expression)
    End If
    FreezeAfter = myVal
End Function
 
Katılım
31 Ocak 2019
Mesajlar
83
Excel Vers. ve Dili
2016 Excel. English.
Sorunu daha somutlaştıracak olursak. FreezeAfter fonksiyonu için "Q1" Hücresine "=FreezeAfter(N2;R31)" şeklinde formülü yazıyorum. Bu fonksiyon R31 hücresindeki zaman koşulu sağlandığında "N2" Hücresindeki o anki değeri "Q1"hücresine yazıyor.(N2 hücresi harici bir kaynaktan belirli aralıklarla yinelenen data sağlıyor). N2 hücresinde o anki değer "2" olmasına rağmen "Q1" hücresine "0" olarak yazıyor. Aynı formülü "Q1" hücresine değil de "T32" hücresine yazdığımda bu kez "N2" hücresindeki o anki değeri doğru olarak yani "2" şeklinde yazıyor. Başta da söylediğim gibi aynı formül başka hücrelerde doğru değeri yazdırmasına rağmen başka hücrelerde yanlış değeri hücreye yazdırıyor. Diğer hücrelerde hatalı sonuç yazdırmasının nedeni ne olabilir? Neler yapabilirim bunun için? Üç gündür çözemedim.
 
Son düzenleme:

Ömer BARAN

Uzman
Katılım
8 Mart 2011
Mesajlar
13,002
Excel Vers. ve Dili
Office 2013 ( 32 bit ) TÜRKÇE
Altın Üyelik Bitiş Tarihi
(18.03.2020) - Uzman olduğu için tarih geçersiz oldu.
Merhaba.
Öncelikle FORMÜLLER mnüsündeki Hesaplama Yönteminin Otomatik olduğunu kontrol ediniz.

Verdiğiniz Kullanıcı Tanımlı Fonksiyonu Modul'e eklediğim belge ekte.
Ekteki belgede bir sorun göremiyorum. Belgeye, fareyle BURAYA tıklayarak da erişebilirsiniz.

İsterseniz cevabımın altındaki İMZA bölümünü okuyarak bir örnek belge ekleyin, çözüm için sorunlu belgenin bir kopyasını eklemelisiniz.
.
 

Ekli dosyalar

Katılım
31 Ocak 2019
Mesajlar
83
Excel Vers. ve Dili
2016 Excel. English.
Merhaba.
Öncelikle FORMÜLLER mnüsündeki Hesaplama Yönteminin Otomatik olduğunu kontrol ediniz.

Verdiğiniz Kullanıcı Tanımlı Fonksiyonu Modul'e eklediğim belge ekte.
Ekteki belgede bir sorun göremiyorum. Belgeye, fareyle BURAYA tıklayarak da erişebilirsiniz.

İsterseniz cevabımın altındaki İMZA bölümünü okuyarak bir örnek belge ekleyin, çözüm için sorunlu belgenin bir kopyasını eklemelisiniz.
.
Ömer Bey Merhabalar. İlginiz için çok teşekkürler. Çalışma sayfam "Otamatik" olarka ayarlı. O konuda bir sıkıntı yok. Size gönderdiğim ekteki excel çalışma sayfasında "Q1" hücresinde yazan formül ile "T31" hücresinde yazan formül aynı. Belgeyi ilk açtığınızda her iki hücrede de "N2" hücresindeki değeri görebiliyor olabilirsiniz. Ancak "Q1" hücresinde iken Enter yaptığınızda hücre değerinin "0" olduğunu göreceksiniz. Aynı şeyi "T31" hücresinde yaptığınızda sonucun değişmediğini yine "N2" hücredeki değeri gösterdiğini göreceksiniz. Problem de bu zaten. Formülün yer aldığı her iki hücrede aynı hücre formatındalar. Ve aynı formül olmasına rağmen birinde "Q1" hücresine Enter yapıldığında "0" gösteriyor diğerinde yani "T31" hücresine ENTER yapıldığında olması gerektiği gibi "N2" hücresini gösteriyor. Tabi "N2" hücresi normalde harici kaynaktan data sağlıyor ve veri saate bir güncelleniyor ancak şu anda aynı data sağlayıcı sizde olmadığından durumu basitlerştirmek için N2 hücresine sabit bir değer verdim. Ancak sorun yine aynı. Belge örneğine burdan erişebilirsiniz. https://www.dosyaupload.com/r3tR. Saygılarımla
 

Ömer BARAN

Uzman
Katılım
8 Mart 2011
Mesajlar
13,002
Excel Vers. ve Dili
Office 2013 ( 32 bit ) TÜRKÇE
Altın Üyelik Bitiş Tarihi
(18.03.2020) - Uzman olduğu için tarih geçersiz oldu.
İlk fark ettiğim husus Q25 ve aşağısı ile R25 ve aşağısındaki formüllerde DÖNGÜSEL BAŞVURU HATASInın olduğu.
Hücrelerdeki formüller kendisine atıf yapıyor durumda, Örneğin Q25 hücresindeki formül =EĞER(Q25=1,0119;..... şeklinde.

Tabi bu durum bazen özellikle seçilebiliyor ve
Excel Seçenekleri >> Formüller bölümündeki Yinelemeli Hesaplamayı Etkinleştir kutucuğu işaretli duruma getirildiğinde sorun kalmıyor.
.
 
Katılım
31 Ocak 2019
Mesajlar
83
Excel Vers. ve Dili
2016 Excel. English.
İlk fark ettiğim husus Q25 ve aşağısı ile R25 ve aşağısındaki formüllerde DÖNGÜSEL BAŞVURU HATASInın olduğu.
Hücrelerdeki formüller kendisine atıf yapıyor durumda, Örneğin Q25 hücresindeki formül =EĞER(Q25=1,0119;..... şeklinde.

Tabi bu durum bazen özellikle seçilebiliyor ve
Excel Seçenekleri >> Formüller bölümündeki Yinelemeli Hesaplamayı Etkinleştir kutucuğu işaretli duruma getirildiğinde sorun kalmıyor.
.
Ömer Bey Merhaba, evet zaten çalıştığım dosya "Yinelemeli Hesaplamayı Etkinleştir" aktif halde. O konuda sorun yok. Sorun yukarıda da anlattığım gibi "Q1" hücresine yazdığım fonksiyon ile "T31" hücresine yazdığım fonksiyon aynı olmasına rağmen ve aynı referans hücrelere başvurmalarına rağmen "Q31" hücresinde ENTER yaptığınızda sonucu "0" , T31 hücresinde formülü ENTER yaptığınızda sonucu "2" gösteriyor. T31 hücresi doğru sonucu veriyor ama "Q31" hücresinde ENTER yaptığınızda yanlış sonucu veriyor. Sorun bu. Size gönderdiğim belgede "Q31" ve "T31" hücrelerine bakıldığında ve her ikisi üzerinde tekrar ENTER yapıldığında ve karşılaştırıldığında hatanın ne olduğu görülecektir. Saygılarımla...
 

Ömer BARAN

Uzman
Katılım
8 Mart 2011
Mesajlar
13,002
Excel Vers. ve Dili
Office 2013 ( 32 bit ) TÜRKÇE
Altın Üyelik Bitiş Tarihi
(18.03.2020) - Uzman olduğu için tarih geçersiz oldu.
Yinelemeli hesaplamayı etkinleştirerek T25 hücresine =FreezeAfter($N$2;$R25) şeklinde formül yazıp aşağı doğru liste boyunca kopyaladım,
Q1, H1, I14 gibi farklı sütun/satırlardaki hücrelere de =FreezeAfter($N$2;$R$31) formülünü uyguladım.

Ardından da N2 hücresindeki GÜNCEL SAYIyı elle değiştirdim.

SONUÇ: tüm formül hücrelerindeki değer aynı ve güncellendi. Ben hala bir sorun göremiyorum.
 
Katılım
31 Ocak 2019
Mesajlar
83
Excel Vers. ve Dili
2016 Excel. English.
Yinelemeli hesaplamayı etkinleştirerek T25 hücresine =FreezeAfter($N$2;$R25) şeklinde formül yazıp aşağı doğru liste boyunca kopyaladım,
Q1, H1, I14 gibi farklı sütun/satırlardaki hücrelere de =FreezeAfter($N$2;$R$31) formülünü uyguladım.

Ardından da N2 hücresindeki GÜNCEL SAYIyı elle değiştirdim.

SONUÇ: tüm formül hücrelerindeki değer aynı ve güncellendi. Ben hala bir sorun göremiyorum.
Ömer Bey, size gönderdiğim aynı dosya üzerinde ben de aynı fonksiyonu giriyorum. Q1 hücresine =FreezeAfter(N2;R31) formülü yazıyorum. Ve N2 hücresinde "2" olmasına rağmen sonuç "0" olarak gösteriyor. İlginçtir aynı fonksiyonu "T31" hücresine ya da 31.satırdan aşağıdaki her hücrede bende de normal sonucu veriyor. Ancak bu formülü =FreezeAfter(N2;R31) "A2:T30" aralığındaki hangi hücreye yazsam yine sonucu yanlış olarak "0" gösteriyor. Çalışma sayfam "Otomatik Hesaplama" olarak aktif. Ayrıca "Yinelemeli Hesaplama"da Etkin. Anlamıyorum. Sanki diğer hücreler bozulmuş zarar görmüş. FreezeAfter makrosunu tekrar silip yükledim kaydettim ama nafile. Ne denediysem olmuyor.
 
Üst