#YOK Yazan Hücreleri Yoksayma

Katılım
20 Haziran 2006
Mesajlar
39
Arkadaşlar selam,

Ekte dosyayı gönderiyorum.Bir türlü işin içinden çıkamadım.Yapmak istediğim Sayfa 02 den Sayfa 1 e düşeyara ile aldığım verilerin Toplamını ve Ortalamasını bulmak.Ancak #YOK yazan hücreler olduğu için bunu yapamadım.

Yardımlarınızı bekliyorum

Teşekkürler
 

Ekli dosyalar

İ

İhsan Tank

Misafir
Arkadaşlar selam,

Ekte dosyayı gönderiyorum.Bir türlü işin içinden çıkamadım.Yapmak istediğim Sayfa 02 den Sayfa 1 e düşeyara ile aldığım verilerin Toplamını ve Ortalamasını bulmak.Ancak #YOK yazan hücreler olduğu için bunu yapamadım.

Yardımlarınızı bekliyorum

Teşekkürler
merhaba
Sayfa1 B1 Hücresine
Kod:
=EĞER(A1="";"";EĞER(EHATALIYSA(DÜŞEYARA(A1;Sayfa2!$A$1:$B$15;2;0));"";DÜŞEYARA(A1;Sayfa2!$A$1:$B$15;2;0)))
bu formülü yazıp aşağıya doğru çekiniz
 
Katılım
13 Mayıs 2008
Mesajlar
34
Excel Vers. ve Dili
2003 türkçe
Merhaba,

Aynı işlemi macro ile yapamaz mıyız?Yaklaşık 40 sayfam var ve 1000 lerce düşeyara formülü var bu eklentiyi eklemek baya vaktimi alır.Başka bir çözümü var mı?
 
Katılım
4 Ocak 2010
Mesajlar
2,074
Excel Vers. ve Dili
OFFICE 2007 PRO TR - Win7 X64
Altın Üyelik Bitiş Tarihi
18.06.2019
Selamun Aleyküm,

Altarnatif olarak aşagıdaki kodları ve çalışma dosyaını inceleyin,

Kod:
'kodları yazan: Yurttaş
Function DUSEYARASAYFALAR(Look_Value As Variant, Tble_Array As Range, _
                          Col_num As Integer, Optional Range_look As Boolean)
Dim wSheet As Worksheet
Dim vFound

On Error Resume Next

    For Each wSheet In ActiveWorkbook.Worksheets
    With wSheet
    Set Tble_Array = .Range(Tble_Array.Address)
            vFound = WorksheetFunction.VLookup _
            (Look_Value, Tble_Array, _
            Col_num, Range_look)
    End With
    If Not IsEmpty(vFound) Then Exit For
    Next wSheet

    Set Tble_Array = Nothing
    DUSEYARASAYFALAR = vFound

End Function
 

Ekli dosyalar

Korhan Ayhan

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

Dosyanızın küçük bir örneğini eklerseniz yardımcı olabiliriz.

Merhaba,

Aynı işlemi macro ile yapamaz mıyız?Yaklaşık 40 sayfam var ve 1000 lerce düşeyara formülü var bu eklentiyi eklemek baya vaktimi alır.Başka bir çözümü var mı?
 
Katılım
13 Mayıs 2008
Mesajlar
34
Excel Vers. ve Dili
2003 türkçe
Selamlar,

Dosyanızın küçük bir örneğini eklerseniz yardımcı olabiliriz.
Merhaba


Örnek dosya ekte.Düşey ara ile başka çalışma kitabından veri alırken eğer bulamazsa yok yazmasın 0 yazsın yada boş bıraksın ama formüllere dokunmasın.Tüm sayfalarda aynı işlemi yapması lazım.
 

Ekli dosyalar

Korhan Ayhan

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

Aşağıdaki kodu denermisiniz.

Kod:
Option Explicit
 
Sub YOK_HATASI_OLAN_FORMÜLLERİ_DÜZENLE()
    Dim SAYFA As Worksheet, HÜCRE As Range
    Dim ESKİ_FORMÜL As String, YENİ_FORMÜL As String
 
    With Application
        .Calculation = xlCalculationManual
        .EnableEvents = False
        .ScreenUpdating = False
    End With
 
    For Each SAYFA In ThisWorkbook.Worksheets
        On Error Resume Next
        For Each HÜCRE In SAYFA.[COLOR=red]Cells[/COLOR].SpecialCells(xlCellTypeFormulas, 23)
            If HÜCRE.Text = "#YOK" Then
                ESKİ_FORMÜL = HÜCRE.FormulaLocal
                YENİ_FORMÜL = "=EĞER(EHATALIYSA(" & Replace(ESKİ_FORMÜL, "=", "") & ");0;" & Replace(ESKİ_FORMÜL, "=", "") & ")"
                HÜCRE.FormulaLocal = YENİ_FORMÜL
                [COLOR=red]Application.Calculate[/COLOR]
            End If
        Next
        On Error GoTo 0
    Next
 
    With Application
        .Calculation = xlCalculationAutomatic
        .EnableEvents = True
        .ScreenUpdating = True
    End With
 
    MsgBox "İşleminiz tamamlanmıştır."
End Sub
 
Katılım
13 Mayıs 2008
Mesajlar
34
Excel Vers. ve Dili
2003 türkçe
Selamlar,

Aşağıdaki kodu denermisiniz.

Kod:
Option Explicit
 
Sub YOK_HATASI_OLAN_FORMÜLLERİ_DÜZENLE()
    Dim SAYFA As Worksheet, HÜCRE As Range
    Dim ESKİ_FORMÜL As String, YENİ_FORMÜL As String
 
    With Application
        .Calculation = xlCalculationManual
        .EnableEvents = False
        .ScreenUpdating = False
    End With
 
    For Each SAYFA In ThisWorkbook.Worksheets
        On Error Resume Next
        For Each HÜCRE In SAYFA.Columns(2).SpecialCells(xlCellTypeFormulas, 23)
            If HÜCRE.Text = "#YOK" Then
                ESKİ_FORMÜL = HÜCRE.FormulaLocal
                YENİ_FORMÜL = "=EĞER(EHATALIYSA(" & Replace(ESKİ_FORMÜL, "=", "") & ");0;" & Replace(ESKİ_FORMÜL, "=", "") & ")"
                HÜCRE.FormulaLocal = YENİ_FORMÜL
            End If
        Next
        On Error GoTo 0
    Next
 
    With Application
        .Calculation = xlCalculationAutomatic
        .EnableEvents = True
        .ScreenUpdating = True
    End With
 
    MsgBox "İşleminiz tamamlanmıştır."
End Sub
Merhaba

Kodu denedim oluyor fakat bir sürü veri bulma sihirbazı açılıyor yanında.Aslında bundaki amacım işlem yapmak.Sayısal veriler yer alırken araya yk girince toplama yapmıyor.Eki incelerseniz sevinirim.Buna uygun formül işimi görür sanırım.
 

Ekli dosyalar

Korhan Ayhan

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

Ben örnek dosyanız üzerinde önerdiğim kodu denedim ve olumlu sonuç aldım. Sadece kodun daha sağlıklı çalışması için iki ekleme yaptım. Bunlarıda üstteki mesajımdaki kodda kırmızı renkle belirttim.

Bu tarz tablolar oluştururken hata durumlarınıda gözönünde bulundurmalısınız. Daha sonra yapacağınız işlemlerde problemler yaşamamak için buna dikkat etmelisiniz.

Alternatif olarak formülle çözüm için aşağıdaki formülleri deneyiniz.

B9 hücresine aşağıdaki formülü uygulayın. Daha sonra yan hücrelere sürükleyin.

Kod:
=ETOPLA(B3:B8;"<>#YOK";B3:B8)

H3 hücresine aşağıdaki DİZİ formülü uygulayın.

Kod:
=TOPLA(EĞER((MOD(SÜTUN(B3:G3);2)=0)*ESAYIYSA(B3:G3);B3:G3))
I3 hücresine aşağıdaki DİZİ formülü uygulayın.

Kod:
=TOPLA(EĞER((MOD(SÜTUN(B3:G3);2)=1)*ESAYIYSA(B3:G3);B3:G3))
Daha sonra bu iki hücreyi alt hücrelere kopyalayın.

Dizi formüller nasıl çalışır;
Formülü hücreye yazın. Cursor hücre içinde aktif iken CTRL+SHIFT+ENTER tuşlarına birlikte basarak hücreyi terk edin. Bu şekilde formülün başına "{" sembolü, sonuna da "}" sembolü eklenecektir. Aksi halde formül doğru sonuç üretmez. Bu sembolleri kendiniz klavyeden yazarsanızda formül doğru sonuç üretmeyecektir. Mutlaka CTRL+SHIFT+ENTER tuşlarını kullanmanız gerekiyor.
 
Üst