• DİKKAT

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

Koşula bağlı gelişmiş filtreleme

Hocam tabloyu yükledim bir kaç önce ki yazışmada 100 ve 102 de ortak fiş 3 ve 12 nolu fişler. ilk önce 3 ve 12 nolu fişleri getiriyor. toplam 24 satır. Ama 25. satırdan itibaren ilk 24 satırı tekrar getiriyor.

Ekli video da göreceğiniz üzere buton 3 ü 5 defa tıkladım ve yine 24 satır.
Bir mükerrerlik yok.

Sizdeki mükerrer dosyayı yükler misiniz.
 

Ekli dosyalar

Sanırım sorunu buldum.

Siz soruyu ilk sorduğunuzda yukarıdaki arama bölümündeki fiş kolonunda 3 ve 12 vardı.

Şimdi ise burayı kaldırmışsınız. Sadece kodları girip bir biri ile ortak olan fiş numaralı kayıtları istiyorsunuz.

Doğru mu anlamışım.

Benim yazdığım programda Fiş arama bölmünde her hesap için numara arar.
Yani 100 ve 3
102 ve 12 gibi girmeniz gerekir.
 
Tekrar merhaba.

Sayın taneryuksell, bugün gönderdiğim belgeyi ( 17 numaralı cevap) fark etmediniz sanırım.
17 numaralı cevaba bakar mısınız?
.
 
Üstad anladım sorunu :) Dediğiniz gibi ben tam anlatamamışım. şimdi 3 ve 12 yi siz yazınca getiriyor. Burada büyük bir dosyada 100 ve 102 kodunu ilk çektiğim zaman asıl dosyalarımda 100 bin satır geliyor. bu 100 bin satırda en az 10 bin fiş numarası oluyor ve bu 10 bin fiş numarasının 500 tanesi ortak olabiliyor. Amacım bu 500 ortak fişi aynı anda getirmek. Yani ben fiş bölümünden fiş numarasını ilerleyen aşamada gerekli olursa yazacağım.
 
Üstad anladım sorunu :) Dediğiniz gibi ben tam anlatamamışım. şimdi 3 ve 12 yi siz yazınca getiriyor. Burada büyük bir dosyada 100 ve 102 kodunu ilk çektiğim zaman asıl dosyalarımda 100 bin satır geliyor. bu 100 bin satırda en az 10 bin fiş numarası oluyor ve bu 10 bin fiş numarasının 500 tanesi ortak olabiliyor. Amacım bu 500 ortak fişi aynı anda getirmek. Yani ben fiş bölümünden fiş numarasını ilerleyen aşamada gerekli olursa yazacağım.


Sayın Ömer Baran, sorunu çözmüş, mesajındaki dosyayı deneyiniz.
 
Ömer hocam özür dilerim 17 nolu cevabı kaçırmışım. Evet istediğim budur. Ama keşke ortak fişlere ulaşmadan önce ki süzmeleri de yapabilseydim. Yani B1 ve B2 de yazdığım zaman ham hali gelseydi. yada aynı zamanda diğer alanlarda da *içeren* şeklinde doldurup süzme yapabilsem ve ortak fiş numarasıda son hali olsaydı. Aslında asıl istediğim ilk önce gelişmiş bir filtreleme sonrasında ortak fiş no süzme. Çok yordum sizi.. :(
 
Sayın asri de ben de, soruyu geç anladık sanırım.
Belirttiğiniz İÇERİR işlemiyle ilgili örnek veri hazırlar mısınız?
Tüm sütunlar için kriter yazın (kimisinde 1, kimisinde 2 kriter olsun) ve olması gereken nihai sonuç satırlarını önceki cevabınızdaki gibi renklendirin ve açıklama yazın.

Bu haliyle yeni bir belge ekleyin isterseniz.
Fırsat bulursam bakarım.
.
 
Merhaba Ömer ve Asri Hocam,
Kardeşimize başka sorusunda yardımcı olmaya çalışmıştım, bu konuyu anlamakta bende güçlük çekmiştim.Telefonla konuşunca biraz daha anlaşılır oldu. Bir şeyler yapmaya çalıştım.Bir noktada tıkandım.
Tıkandığım noktada Ömer beyin kodu olayı sonuçlandırdı.
Ek dosyanın olduğu konusunda Taner beyle mutabık kaldık.
Selametle
 

Ekli dosyalar

Son düzenleme:
Sayın Asri ve Sayın Ömer Beyler;
Emek ve gayretleriniz için Tşk ederim. Ömerbeyin 17 nolu mesajda aktarmış olduğu makroya ayrıca bir gelişmiş filtre ekleyerek sorunu çözdük. Sevgi ve saygıyla kalın..
 
Ömer Hocam, Dün ortak fiş tablosu ile 17 nolu mesajda yüklediğiniz tabloyu Kemal beyin de yardımıyla güncelledik 28 nolu mesajda da kemal Hocam yükledi bunu ancak 400-500 bin li satırlarda maalesef çalışmadı. ilk gelişmiş filtrelemeyi kullanınca süzüp getiriyor ama ortak fişleri çekmeye çalışınca kilitleniyor. Sadece sizin 17 nolu mesajdaki ni denedim o da yüksek satırlarda yanıt vermiyor. Doğru çalışıyor ama zannedersem kasıyor.
 
Ömer Hocam, Dün ortak fiş tablosu ile 17 nolu mesajda yüklediğiniz tabloyu Kemal beyin de yardımıyla güncelledik 28 nolu mesajda da kemal Hocam yükledi bunu ancak 400-500 bin li satırlarda maalesef çalışmadı. ilk gelişmiş filtrelemeyi kullanınca süzüp getiriyor ama ortak fişleri çekmeye çalışınca kilitleniyor. Sadece sizin 17 nolu mesajdaki ni denedim o da yüksek satırlarda yanıt vermiyor. Doğru çalışıyor ama zannedersem kasıyor.
Tekrar merhaba.

Önceki kod'un özellikle çok fazla satır içeren MUAVİN dosyasında yavaş çalışması normal,
çünkü kod MUAVİN sayfasında birkaç sütuna formül uyguluyor idi.

17 numaralı cevabımın ekindeki belgeyi yeniledim.
Eklediğim yeni belgedeki çözümü de bir dener misiniz?


Yeni belgedeki kod'un sorunsuz ve hızlı çalışması lazım.
Ayrıca yeni belgede 2 değil daha fazla kriter ANA HESAP KODU da kullanmanız mümkün.
.
 
Ömer hocam merhaba,
Sn.taner beyden orjinal muavin bilgilerini aldım.
sabahtan beri çalışıyorum.
388000 satırlık veride kod kasıyor ve verileri getirmiyor.
şimdi 2 kademede yapmayı düşünüyorum.
ilk önce gelişmiş filtre ile bir başka sayfaya verileri süzmeyi ondan sonra o sayfadan kodu çalıştırmayı deneyeceğim.
teşekkürler
 
İşlem adımları aşağıdaki gibi.
1) ARAMA sayfasındaki ANA HESAP KODlarına göre sırayla,
-- MUAVİN sayfası süzülüp, FİŞ numaraları AA sütunundan itibaren sağa doğru sütunlara yapıştırılıyor,
-- yinelenenler kaldırılıyor.
2) AA'dan itibarenki sütunların tümünde var mı diye FİŞ noları kontrol ediliyor,
-- tümünde varsa MUAVİN sayfası bu veriye göre FİLTRElenip ARAMA sayfasına da yazılıyor.
3) AA'dan itibarenki sütunlar temizlenip, ARAMA sayfasında biçimlendirme yapılıyor.
4) ARAMA sayfasında sadece 1 adet DİZİ FORMÜLÜ çalıştırılıyor (ADET için)
5) İşlemin tamamlandığı bildiriliyor.

Sonuç olarak yavaş çalışmaya neden olacak bir durum göremiyorum.

17 numaralı cevaptaki belgeyi;
-- birkaç kontrol ilavesi yapıp,
-- mevcut bir hatayı düzeltip,
-- dizi formülünü de yok ederek,
TEKRAR YENİLEDİM.

17 numaralı cevap ekini tekrar indiriniz.
.
 
Merhaba Ömer Hocam,
Sabahtan beri taner beyden aldığım dosyada çalışıyordum.O dosyada muavın sahfasında A1 hücresinde sadece "KOD" yazılı olmasından dolayı kod çalışmıyormuş.
Siteden indirdiğim dosyaya verileri aldım.
5 6 dk. veriler geldi.
Kodunuzdan önce gelişmiş filtre uygulanmış farklı kod lu dosyayı uyguladım 1,5 dk. da verileri getirdi.Sn Taner beyle de görüştüm.
Selametle
Taner bey merhaba,
17 nolu mesajdaki dosyayı tekrar indirin.
DETAYMUAVIN adlı yeni bir sayfa açın.
Aşağıdaki kodu butona kopyalayıp yapıştırın.
Kod:
Sheets("DETAYMUAVIN").Select
Call FILTRE
Sheets("ARAMA").Select
Set m = Sheets("DETAYMUAVIN"): Set a = Sheets("ARAMA"): Set wf = Application.WorksheetFunction
mson = m.Cells(Rows.Count, 1).End(3).Row
brn = WorksheetFunction.Match(a.[B1], a.Range("B2:B" & Rows.Count), 0) - 1
If a.Cells(Rows.Count, 2).End(3).Row > brn + 2 Then
    a.[F1] = "": a.Range("B" & brn + 3 & ":I" & Rows.Count).Clear
End If
Application.ScreenUpdating = False: Application.Calculation = xlCalculationManual
If wf.CountIf(a.Range("B2:B" & brn), "<>") < 2 Then Exit Sub
sut = 26: m.Activate
For sat = 2 To brn
    If a.Cells(sat, 2) <> "" Then
    adet = adet + 1
        m.Range("A1:H" & mson).AutoFilter Field:=1, Criteria1:="" & a.Cells(sat, 2) & ""
        sut = sut + 1
        m.Range("E2:E" & mson).SpecialCells(xlCellTypeVisible).Copy m.Cells(2, sut)
        m.Range("A1:H" & mson).AutoFilter Field:=1
        m.Range(Cells(1, sut), Cells(mson, sut)).RemoveDuplicates Columns:=1, Header:=xlNo
    End If
Next
m.Range("A1:H" & mson).AutoFilter Field:=1
sonsut = m.Cells(2, Columns.Count).End(1).Column
For sut1 = 27 To sonsut
    For sat1 = 2 To m.Cells(Rows.Count, sut1).End(3).Row
        If wf.CountIf(m.Range(m.Cells(2, 27), m.Cells(mson, sonsut)), m.Cells(sat1, sut1)) = adet And _
            wf.CountIf(m.Range(m.Cells(1, sonsut + 1), m.Cells(Rows.Count, sonsut + 1)), m.Cells(sat1, sut1)) = 0 Then
            say = say + 1
            m.Range("A1:H" & mson).AutoFilter Field:=5, Criteria1:=m.Cells(sat1, sut1)
            m.Range("A2:H" & m.Cells(Rows.Count, 1).End(3).Row).Copy a.Cells(a.Cells(Rows.Count, 2).End(3).Row + 1, 2)
            End If
        Next
    Next
m.Range("AA:IV").ClearContents
With a.Range("B" & brn + 3 & ":I" & a.Cells(Rows.Count, 2).End(3).Row)
    .Interior.ColorIndex = 19: .Borders.LineStyle = xlContinuous: .Borders.Weight = xlHairline
End With
m.Range("A1:H1").AutoFilter
m.Range("AA:AZ").ClearContents
a.Activate
a.[F1] = say
10: Application.ScreenUpdating = True: Application.Calculation = xlCalculationAutomatic
MsgBox "İşlem Tamamlandı..." & vbLf & "B2:B" & brn & " alanına yazılan HESAP KODLARININ TÜMÜNÜ BİRDEN İÇEREN" _
        & vbLf & a.[F1] & "  ADET FİŞ aşağıya listelendi.", vbInformation, "..::.. ÖMER BARAN ..::.."
Bu kodu da bir modül içerisine yapıştırın.
Kod:
Sub FILTRE()
    Sheets("DETAYMUAVIN").Select
    Range("A1").Select
    Selection.CurrentRegion.Select
    Selection.Clear
    Range("A1").Select
    Sheets("MUAVİN").Columns("A:H").AdvancedFilter Action:=xlFilterCopy, _
        CriteriaRange:=Sheets("ARAMA").Range("B1:B3"), CopyToRange:=Range("A1"), _
        Unique:=False
    Sheets("ARAMA").Select
    Range("A4").Select
    ActiveWorkbook.Save
End Sub
 
Örnek belgeyi tekrar indirin isterseniz,
birkaç satırlık ilave ve değiştirilen bir If bloku var çünkü.

Belgeyi iki kez değiştirmiştim (siz bir öncekindeki kod'u vermişsiniz).

Belgeyi tekrar indirip yenisini bir kez daha denemenizi öneriyorum.
.
 
Merhaba Ömer Hocam,
Dediğiniz üzere dosyayı içerisindeki verilerlerle çalıştırdım.Yanlış sonuç getirdi.
Ben yine dün öğlen sizin yazdığınız kodu uygulama yaptım.Sonuç doğru çıktı.
Doğru çıkan kodunuzu dün yaklaşık 400.000 satırda uyguladım 1,5 dk. da doğru sonuçları getirdi.
Bununla ilgili dün gece çalışmama ait iki dosyada ektedir.
Bence 1,5 dk. bu şekildeki bir sonuç için güzel performans.
Ellerinize sağlık.
Selametle
 

Ekli dosyalar

Biraz yoğunluğum vardı. Yeterince kontrol etmemiştim.

Kriter FİŞ numaralarını hücreye yazdırdığımı düşünüyordum.
Hatayı fark ettim ama düzeltmeye zamanım olmadı.

Kod'da köklü/işlem mantığı bakımından değişiklikler yaparak 17 numaralı cevabımın ekindeki belgeyi yine yeniledim.
Süre ölçümü de ekledim. 21.07.2017 23:22.

Yeni belgeyi indirerek gerçek verilerle test edip sonucunu yazarsınız.
.
 
Ömer hocam ve Kemal Hocam;
Öncelikle göstermiş olduğunuz İlgi ve emek için çok tşk ederim. Hem Kemal beyin yüklediği hem de Ömer beyin yüklediği dosyalar işimi gördü. Belki bir noktada fazladan getirdiği satırlar var. Ama o hiç problem değil benim için onu da kısaca anlatayım. Mesela ben 100 ve 102 Kodunu yüklüyorum Burada 489 adet ortak fişi getiriyor. (400 bin satırda 2-3 dakikada çözdü) Ama ortak fişlerin içinde ki diğer kodlarıda sayfaya taşıyor. Yani 50 nolu fiş ortak ama bu 50 nolu fişte daha bir sürü kod olabiliyor bunu da getiriyor. Ama bu problem değil süzmeden bunu 2-3 saniyede ayıklayabiliyorum. Ellerinize sağlık diyorum.
 
Geri
Üst