DEĞER Hatası oluşturan Kirli Hücre Temizliği

ERMAN SAYINALP

Altın Üye
Katılım
11 Eylül 2008
Mesajlar
173
Excel Vers. ve Dili
Excel 2016 Türkçe
Altın Üyelik Bitiş Tarihi
08-09-2027
Merhaba,

Soru başlığı olarak yazdığım cümle, esasen sorumun da tam özetidir.

Konuya ilişkin hazırladığım ekteki Örnek Dosyada daha somut olarak izah etmeye çalıştığım sorun;
İçi boş gibi görünen hücrenin, ara çubuğu (space) ile yada başka bir sebeple bir nevi kirletilmesi neticesinde, o hücreden veri alan Formülün #DEĞER hatası vermesine yönelik olarak MAKRO talebime ilişkin değerli yardımlarınızı rica ederim.

Saygılarımla.
 

Ekli dosyalar

Katılım
24 Temmuz 2019
Mesajlar
413
Excel Vers. ve Dili
EXCEL 2010 TÜRKÇE
Altın Üyelik Bitiş Tarihi
25-12-2023
Merhaba
Kod:
=EĞERHATA(((H17+I17+J17)-K17);"")
Formülü tüm satırlaraa bu şekilde uygulayın
 

Ekli dosyalar

ERMAN SAYINALP

Altın Üye
Katılım
11 Eylül 2008
Mesajlar
173
Excel Vers. ve Dili
Excel 2016 Türkçe
Altın Üyelik Bitiş Tarihi
08-09-2027
Merhaba
Kod:
=EĞERHATA(((H17+I17+J17)-K17);"")
Formülü tüm satırlaraa bu şekilde uygulayın
Örnekte uyguladığım formül, konuyu anlatmak adına oluşturulmuş basit formüldür. Öyle ki, Formül, aynı satırda, aynı sayfada olmayıp, farklı sayfa ve hücrelerde, çok daha karmaşık oluşturulmuş, bir taraftan da veri hücrelerine başvuru halinde olabilmekte, "EĞERHATA" işlevinin de çaresiz kaldığı durumlar olmaktadır. Yani sorumun yanıtı, bahsettiğiniz kadar basit değildir.

Anlatımım meramımı izah etmeye yetmemiş olabilir, yada siz eksik anlamış olabilirsiniz.

Amaç, #DEĞER Hatasını görmezden gelmek, formül işlem sonucunda #DEĞER'i gizlemek değil,
#DEĞER Hatasını oluşturan nedeni ortadan kaldırmaktır.

Hata oluşturan hücre incelendiğinde, hücre içinin boş gibi olduğu görünmekle beraber, gerçekte hücre içinde Space (ara çubuğu) ile oluşmuş bir boşluk karakteri olduğu görülecektir. Asıl #DEĞER Hatasını oluşturan neden budur ve bunun ortadan kaldırılması için o hücrede DELETE tuşu ile silme işlemi yapılmalıdır. Bu hatanın oluştuğu çok sayıda hücrenin DELETE ile silme işlemini bir kodlama ile tek seferde yapabilmektir.

Umarım bu kez biraz daha ayrıntı verebilmişimdir.
 
Son düzenleme:
Katılım
20 Mart 2023
Mesajlar
33
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Günaydın

#Değer hatasını oluşturan bütün koşulları biliyor olursanız bunları iç içe EĞER formülleri ile yada VBA da daha hızlı sonuç alabilirsiniz.
Programdan #değer oluşturan sebebi bulup düzeltmesini istiyorsanız öncelikle sizin bunları tanımlamanız gerekiyor. Farklı bir koşul oluşursa #Değer hatasını gene alırsınız.



Örnekte uyguladığım formül, konuyu anlatmak adına oluşturulmuş basit formüldür. Öyle ki, Formül, aynı satırda, aynı sayfada olmayıp, farklı sayfa ve hücrelerde, çok daha karmaşık oluşturulmuş, bir taraftan da veri hücrelerine başvuru halinde olabilmekte, "EĞERHATA" işlevinin de çaresiz kaldığı durumlar olmaktadır. Yani sorumun yanıtı, bahsettiğiniz kadar basit değildir.

Anlatımım meramımı izah etmeye yetmemiş olabilir, yada siz eksik anlamış olabilirsiniz.

Amaç, #DEĞER Hatasını görmezden gelmek, formül işlem sonucunda #DEĞER'i gizlemek değil,
#DEĞER Hatasını oluşturan nedeni ortadan kaldırmaktır.

Hata oluşturan hücre incelendiğinde, hücre içinin boş gibi olduğu görünmekle beraber, gerçekte hücre içinde Space (ara çubuğu) ile oluşmuş bir boşluk karakteri olduğu görülecektir. Asıl #DEĞER Hatasını oluşturan neden budur ve bunun ortadan kaldırılması için o hücrede DELETE tuşu ile silme işlemi yapılmalıdır. Bu hatanın oluştuğu çok sayıda hücrenin DELETE ile silme işlemini bir kodlama ile tek seferde yapabilmektir.

Umarım bu kez biraz daha ayrıntı verebilmişimdir.
 

ERMAN SAYINALP

Altın Üye
Katılım
11 Eylül 2008
Mesajlar
173
Excel Vers. ve Dili
Excel 2016 Türkçe
Altın Üyelik Bitiş Tarihi
08-09-2027
Günaydın

#Değer hatasını oluşturan bütün koşulları biliyor olursanız bunları iç içe EĞER formülleri ile yada VBA da daha hızlı sonuç alabilirsiniz.
Programdan #değer oluşturan sebebi bulup düzeltmesini istiyorsanız öncelikle sizin bunları tanımlamanız gerekiyor. Farklı bir koşul oluşursa #Değer hatasını gene alırsınız.
Bu forum mecralarında kanaat belirtmek yerine çözüme yönelik yardımlarınız olursa daha makbule geçer. Tedavi için teşhis etmek, teşhis için ise tahlil etmek gerekir. Sorumun yanıtı, verdiğiniz yanıt değildir.
 

Necdet

Moderatör
Yönetici
Katılım
4 Haziran 2005
Mesajlar
15,372
Excel Vers. ve Dili
Ofis 365 Türkçe
Merhaba,
Bu forumda herkes karşılık beklemeden yardımcı olmaya çalışıyor.
Bazen önerilen çözümler size uygun gelmeyebilir, normaldir, yanlış anlama olmuştur vs vs vs

Aşağıdaki kodları deneyin derim, umarım işinize yarar. Kodların çalışacağı alanı seçtikten sonra makroyu çalıştırınız.

Kod:
Public Sub Temizle()

Dim rng As Range

Application.ScreenUpdating = False

For Each rng In Selection
    If rng.HasFormula = False Then rng = Application.WorksheetFunction.Trim(rng)
Next rng

Application.ScreenUpdating = True

End Sub
 

ERMAN SAYINALP

Altın Üye
Katılım
11 Eylül 2008
Mesajlar
173
Excel Vers. ve Dili
Excel 2016 Türkçe
Altın Üyelik Bitiş Tarihi
08-09-2027
Merhaba,
Bu forumda herkes karşılık beklemeden yardımcı olmaya çalışıyor.
Bazen önerilen çözümler size uygun gelmeyebilir, normaldir, yanlış anlama olmuştur vs vs vs

Aşağıdaki kodları deneyin derim, umarım işinize yarar. Kodların çalışacağı alanı seçtikten sonra makroyu çalıştırınız.

Kod:
Public Sub Temizle()

Dim rng As Range

Application.ScreenUpdating = False

For Each rng In Selection
    If rng.HasFormula = False Then rng = Application.WorksheetFunction.Trim(rng)
Next rng

Application.ScreenUpdating = True

End Sub
Teşekkür ederim, lakin sanırım işe yaramadı. ("Public Sub" ile ilk kez karşılaştım, özel bir durumu var mıdır ?)
Bir başka yerden aldığım yardımda;

Sub TrimCells()
Dim rng As Range
Dim cell As Range

Set rng = Range("H17:L21")

For Each cell In rng
If Trim(cell.Value) = "" Then
cell.Value = Trim(cell.Value
End If
Next cell
End Sub

kodlaması verilmiş, çalışıyor. Ancak, tarama ve temizleme alanı büyüdüğünde gecikmeli çalışıyor. Bunun üzerinden bir revizyon yapılabilir mi ?
 

Necdet

Moderatör
Yönetici
Katılım
4 Haziran 2005
Mesajlar
15,372
Excel Vers. ve Dili
Ofis 365 Türkçe
Merhaba,

Sizin kodlarınızda çalışacak alanı makro içinde belirtiyorsunuz Set rng = range("H17:L21") olarak
ayrıca formül olup olmadığını da kontrol etmiyor.

benim kodlarımda ise aynı işi yapıyor ancak kodların çalışacağı alanı siz belirliyorsunuz, önce seçmekle.

Public ilk değer olduğu için silmedim.
İNCELEYİNİZ
 
Son düzenleme:

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,246
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Deneyiniz.

C++:
Option Explicit

Sub Remove_Space()
    Dim WS As Worksheet
    
    Application.ScreenUpdating = False
    Application.Calculation = xlCalculationManual
    
    For Each WS In ThisWorkbook.Worksheets
        WS.Cells.Replace " ", "", xlWhole
    Next
    
    Application.Calculation = xlCalculationAutomatic
    Application.ScreenUpdating = True
    
    MsgBox "İşleminiz tamamlanmıştır."
End Sub
 

ERMAN SAYINALP

Altın Üye
Katılım
11 Eylül 2008
Mesajlar
173
Excel Vers. ve Dili
Excel 2016 Türkçe
Altın Üyelik Bitiş Tarihi
08-09-2027
Deneyiniz.

C++:
Option Explicit

Sub Remove_Space()
    Dim WS As Worksheet
    
    Application.ScreenUpdating = False
    Application.Calculation = xlCalculationManual
    
    For Each WS İn ThisWorkbook.Worksheets
        WS.Cells.Replace " ", "", xlWhole
    Next
    
    Application.Calculation = xlCalculationAutomatic
    Application.ScreenUpdating = True
    
    MsgBox "İşleminiz tamamlanmıştır."
End Sub
Korhan bey,

Müteşekkirim, elinize sağlık, zahmet verdim....

( For Each WS İn ThisWorkbook.Worksheets ) in olarak düzelttim...
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,246
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Telefondan cevaplamıştım. Bu sebeple bahsettiğiniz küçük detay gözümden kaçmış. Mesajımı tekrar düzenledim.

Güle güle kullanınız..
 
Üst