• DİKKAT

    DOSYA İndirmek/Yüklemek için ÜCRETLİ ALTIN ÜYELİK Gereklidir!
    Altın Üyelik Hakkında Bilgi

#YOK Yazan Hücreleri Yoksayma

  • Konbuyu başlatan Konbuyu başlatan sinim
  • Başlangıç tarihi Başlangıç tarihi
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

  • XXX.xls
    XXX.xls
    15 KB · Görüntüleme: 33
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
 
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ı?
 
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

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ı?
 
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

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

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.
 
Geri
Üst