#YOK Hatası verilenlerin toplanma problemi

Katılım
21 Mayıs 2012
Mesajlar
70
Excel Vers. ve Dili
tr
Altın Üyelik Bitiş Tarihi
13/04/2018
Merhaba Arkadaşlar.

7-8 sekmeden oluşan bir excel dosyam var. #düşeyara formülü ile veri çekiyorum. Toplama yaparken boş satırlar için #YOK Hatası alıyorum. Bu hataları verdiği için toplama yapamıyorum. Sorunu =EĞERHATA(DÜŞEYARA(C21;'1.sayfa'!$A$3:$H$256;6;YANLIŞ);"") formülüyle aştım ve boş olan yerlere #YOK hatası vermeden boş göstermesi istedim. Bu şekilde toplama işlemini çözdüm.. Fakat her bir sütunum da ayrı ayrı tablolar var. yani sayfalar arası bazı boşluklarım ve birleştirilmiş hücrelerim var. Satır sayım da baya fazla. Yani manuel olarak tek tek yapmam günlerimi hatta haftalarımı alabilir. Bu durumda sorunu düşeyara formülü uygulanan tüm satırlar için nasıl çözebilirim ?
Yardımcı olan arkadaşlara şimdiden teşekkür ediyorum.
 

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
Merhaba,

Verilerinizi yedekleyerek kodu deneyiniz.

Dosyanızdaki tüm sayfalarda A1:AZ1000 hücre aralığında çalışır.

Kendinize göre uyarlarsınız.

C++:
Option Explicit

Sub Formula_Add_Iferror_Vlookup()
    Dim Sh As Worksheet, My_Cell As Range, Formul As String, Say As Long
   
    Application.ScreenUpdating = False
    Application.Calculation = xlCalculationManual
   
    For Each Sh In ActiveWorkbook.Worksheets
        For Each My_Cell In Sh.Range("A1:AZ1000")
            If My_Cell.HasFormula Then
                If InStr(1, My_Cell.Formula, "IFERROR") = 0 Then
                    If InStr(1, My_Cell.Formula, "VLOOKUP") > 0 Then
                        Formul = "=IFERROR(" & IIf(Left(My_Cell.Formula, 1) = "=", Mid(My_Cell.Formula, 2, Len(My_Cell.Formula) - 1), My_Cell.Formula) & ",0)"
                        My_Cell.Formula = Formul
                        Formul = ""
                        Say = Say + 1
                    End If
                End If
            End If
        Next
    Next
   
    Application.Calculation = xlCalculationAutomatic
    Application.ScreenUpdating = True
   
    MsgBox "İşleminiz tamamlanmıştır." & Chr(10) & Chr(10) & _
           Say & " adet formül güncellenmiştir.", vbInformation
End Sub
 

Ali

Uzman
Katılım
21 Temmuz 2005
Mesajlar
7,897
Excel Vers. ve Dili
İş:Excel 2016-Türkçe
Aşağıdaki formülü deneyebilirsiniz. #YOK hatası olsa da aralığınızı toplar.

Kod:
=ETOPLA(A2:A100;"<>#YOK")
 
Katılım
22 Mart 2005
Mesajlar
847
Excel Vers. ve Dili
Excel-2003 TR.
Altın Üyelik Bitiş Tarihi
29-06-2023
Merhaba başka bir alternatif olarak; #YOK değerlerinin görülmemesini istiyorsanız aşağıdaki formülü kendi çalışmanıza uygulayabilirsiniz.
=EĞER(EHATALIYSA(ARA(9,999999E+307;D3:CR3));"";ARA(9,999999E+307;D3:CR3)) yazıp aşağı doğru çekiniz.
 
Katılım
21 Mayıs 2012
Mesajlar
70
Excel Vers. ve Dili
tr
Altın Üyelik Bitiş Tarihi
13/04/2018
çok teşekkür ederim.
 
Katılım
21 Mayıs 2012
Mesajlar
70
Excel Vers. ve Dili
tr
Altın Üyelik Bitiş Tarihi
13/04/2018
Merhaba,

Verilerinizi yedekleyerek kodu deneyiniz.

Dosyanızdaki tüm sayfalarda A1:AZ1000 hücre aralığında çalışır.

Kendinize göre uyarlarsınız.

C++:
Option Explicit

Sub Formula_Add_Iferror_Vlookup()
    Dim Sh As Worksheet, My_Cell As Range, Formul As String, Say As Long
  
    Application.ScreenUpdating = False
    Application.Calculation = xlCalculationManual
  
    For Each Sh In ActiveWorkbook.Worksheets
        For Each My_Cell In Sh.Range("A1:AZ1000")
            If My_Cell.HasFormula Then
                If InStr(1, My_Cell.Formula, "IFERROR") = 0 Then
                    If InStr(1, My_Cell.Formula, "VLOOKUP") > 0 Then
                        Formul = "=IFERROR(" & IIf(Left(My_Cell.Formula, 1) = "=", Mid(My_Cell.Formula, 2, Len(My_Cell.Formula) - 1), My_Cell.Formula) & ",0)"
                        My_Cell.Formula = Formul
                        Formul = ""
                        Say = Say + 1
                    End If
                End If
            End If
        Next
    Next
  
    Application.Calculation = xlCalculationAutomatic
    Application.ScreenUpdating = True
  
    MsgBox "İşleminiz tamamlanmıştır." & Chr(10) & Chr(10) & _
           Say & " adet formül güncellenmiştir.", vbInformation
End Sub
Bunu kullandım oldu. Çok teşekkür ederim.
 

Ali

Uzman
Katılım
21 Temmuz 2005
Mesajlar
7,897
Excel Vers. ve Dili
İş:Excel 2016-Türkçe
3 nolu mesaj hiçbir düzenleme yapmadan #YOK hatası veren aralığınız toplar. Sanırım denemediniz.
 
Üst