• DİKKAT

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

Gelişmiş Filtrelemede Özel Kriterler Belirleme Sorunum

Katılım
12 Eylül 2017
Mesajlar
7
Excel Vers. ve Dili
2007 türkçe
Merhaba;
Excelde yeni sayılabilecek biri olarak çok mu zor bir şey yapmaya çalışıyorum bilemedim ve sonunda sizlere danışmak istedim.
Yapmaya çalıştığım şey 2 farklı sütun içerisindeki işime yarayan verileri çekmek (özel filtre uygulamak).

A SÜTUNU
CH0748/S70 1.5M TS
BK0548+15CW 1.5M 05T SRA
CH3545 1.0M 20A MB
CH1545 2.0M 14A
DR-CH15 2.0M TS

B SÜTUNU
32
40
50
24
60

Biraz karmaşık ama koşullarım şu şekilde:
1- A sütunundaki hücrelerin soldan 3. ve 4. karakterleri 05,10,15,20,25,30 ya da 35 şeklinde olmak zorunda.(sadece soldan 3. ve 4. karakterler beni ilgilendirmekte. sonraki kısımlarda 10, 15 gibi sayılar görsem de bunu almamalıyım)
2- İlk koşul sağlandıktan sonra A sütunu için 2. koşulum 1.5M ya da 2.0M ifadelerinden birini içeriyor olması.
Sanırım birinci ve ikinci koşul arasında 've'; her koşulun ise kendi arasında 'ya da' şeklinde bağlantısı var diyebilirim. Daha da açıklayıcı olması adına yukarıya bakarsak, kabul edilen hücrelerim A2 ve A4 şeklinde olmaktadır.
3- B sütunundaki koşulum ise değerin 20, 40 ya da 60 olması. A ile B sütunu arasında da 've' koşulu bulunmaktadır.
Tüm koşulları bir arada aldığımızda ise çekilmesi gereken satır sadece A2 olacaktır.
Bu şekilde anlatırken gözümde büyüdü resmen; oysa ki başlarken kolayca yaparım gibi gelmişti:) Yardımcı olabilecek biri varsa çok sevinirim. İlginize şimdiden teşekkürler.
 
Merhaba,
Öncelikle Sitemize hoşgeldiniz.
Anlatmak için hayli çabalamışsınız. Fakat örnek dosya ile açıklayıcı bilgi olmayınca sürekli tereddüt kalıyor. Örnek bir dosyada hazırlayarak dosya.tc yükleme sitesine yükledikten sonra link verirseniz yardım için daha doğru ve hızlı sonuç alabilirsiniz.
 
Çok teşekkürler, hoşbuldum. Açıkçası daha net nasıl anlatabilirim bilmiyorum ama yüklediğim orijinal dosya üzerinden açıklamaya çalışayım bu sefer de.
Yapmak istediğim şey bu ürün listesi üzerinde kendi özel filtremi oluşturmak. Bunun için de kriterlerim şu şekilde:
1- C sütununda (Material Description) bulunan hücrelerdeki 3 ve 4. karakterlerin 05,10,15,20,25,30 ya da 35 şeklinde olması. Başka bir deyişle soldan itibaren 3. ve 4. karakterleri yukarıda listelediğim sayılardan farklı olan bütün ürünler elenecek. (bu verilen sayıların sadece 3 ve 4. karakterlerde bulunması beni ilgilendiriyor.)
2- C sütununda birinci koşul sağlandıktan sonra bakmam gereken şey, hücre içerisinde "1.5M" ya da "2.0M" ifadelerinden birinin bulunup bulunmadığı. Bu ifadelerden birine sahip olmayan ürünler de elenecek.
C sütunu için gerekli koşullarım bunlar. bu iki şartı birlikte sağlayan ürünler benim için geçerli ürünler.
3- Son koşulum ise D sütunu (Width) için. Burada da benim için geçerli olan ürünler genişliği 20, 40 veya 60 olan ürünler.
Üçüncü koşulu yazdım diyebilirim fakat özellikle 1. ve 2. koşul hakkında hiçbir fikrim yok maalesef. PARÇAAL gibi formüller denedim fakat bir türlü filtrelemenin çalışmasını sağlayamadım. Çalışma dosyam linktedir: http://s8.dosya.tc/server5/xdd4i6/calisma.xlsx.html
İlginiz için tekrar teşekkürler.
 
Tekrar Merhaba,
Dosyayı yüklemişsiniz, ama anlatıma rağmen şunlar anlaşılamıyor:
C sütununda 3. ve 4. karakterleri sayı olanları diyelim bulduk. C sütununda 3. ve 4. karakterleri sayı olmayanları ne yapacağız? veri mi silinecek, satır mı silinecek?
Diğer soru:
3. ve 4.karakterleri sayı olanların içinden de içinde "1.5M" ya da "2.0M" ifadelerinden birinin bulunup bulunmadığı. Bu ifadelerden birine sahip olmayan ürünler de elenecek." diyorsunuz. bu ne anlama geliyor. satır mı siliniyor, pas mı geçiyoruz. hücreyi mi boşaltıyoruz? Nasıl eliyoruz?
Diğer soru: Koşullara uyanları bulduk. Peki ne yapıyoruz? Nereye yapıştırıyoruz?
C sütununa mı? Evet ise nasıl bir formatta? yoksa başka bir sütuna mı?
D sütununu ne yapıyoruz?
Keşke ürünlerin (makro ile düzeltilmiş halinin senaryosunu da 2. sayfada örnek olarak gösterseydiniz.
 
Sanırım ben anlatamadım kusura bakmayın. Yapmak istediğim şey, bu koşullara göre listeme filtre uygulamak sadece. Veri ya da satır silme vs yok. Başka bir bölüme yapıştırma falan da yok. Amacım filtreyi uygula dediğimde, yukarıdaki koşullara uymayan ürünlerin bana görünmemesi. Basit bir örnek vermek gerekirse;
6. satıra bakıyorum. C sütununda (C6 hücresi) 3 ve 4. karakterler 20, yani 1. koşulumu sağlıyor. Devam ediyorum 1.5M ya da 2.0M ifadesi yok. Dolayısıyla bu ürün benim işime yaramıyor. Satırı silmek istemiyorum, sadece filtre ile görünmemesini sağlayıp çalışırken daha rahat etmek istiyorum.
Aynı şekilde 53. satıra bakarsak; C53 hücresi için 3 ve 4. karakterlerin değeri 20. Bu 1. koşuluma uyuyor. Devam ediyorum. 1.5M ifadesi de içeriyor. 2. koşulum da sağlandı. Son olarak D53 hücresine bakıp değerinin 60 olduğunu görüyorum. 3 koşulumu da sağladığından bu ürün benim için geçerli.
Özetle yapmak istediğim, filtreleme yaptığımda 53. ve onun gibi bütün koşullarımı sağlayan satırların kalıp, 6. satır gibi koşullardan herhangi birini sağlamayan satırların bana gösterilmemesi. Bunun için formül yazmak istiyorum. Açıkçası mümkün müdür değil midir de pek bilmiyorum. Başlangıç seviyesindeyim diyebilirim.
 
3. koşulu linkteki örneğin 2. sayfasındaki şekilde yazdım. Sırala ve filtre uygula - Gelişmiş sekmesine girip ölçüt aralığını j3-j4 olarak seçtim. J4 hücresine yazdığım formül =YADA(D6=20;D6=40;D6=60) şeklinde. Uygula dediğimde genişliği 20, 40 veya 60 olan ürünleri gösterip diğerlerini gizleyebiliyorum.
1. ve 2. koşul için nasıl bir formül yazabileceğime dair ise neredeyse hiçbir fikrim yok. Bu konuda yardımınıza ihtiyacım var. Tekrar belirteyim, amacım 3. koşulu da sağlayabilecek formülü yazıp, filtrele dediğimde ihtiyacım olan ürünlerin karşıma çıkıp diğerlerinin gizlenmesi. Teşekkürler.
http://s8.dosya.tc/server5/kar41h/calisma.xlsx.html
 
Dosyanızın 5. satırdan itibaren Filtrelemesini sağlayınız. C sütununda Filtreleme seçeneklerinden "Metin Filtreleri" ne tıklayın açılan alt seçeneklerden "içerir" seçeneğine tıklayın, belirttiğiniz kıstasları yazınız. Örn: "M "(yanında boşluk var).
D sütununda aynı şekilde "Sayı Filtreleri" ne tıklayın, açılan alt seçeneklerden "arasında" seçeneği ile görünmesini istediğiniz alt ve üst sınırları belirleyiniz.
 
Hocam bahsettiğiniz kısımdan 2 tane koşul girebiliyorum anladığım kadarıyla. Benim yapmam gereken ise tam olarak şu.
C sütunu için "soldan itibaren 3 ve 4. karakterlerin "05" ya da "10" ya da "15" ya da "20" ya da "25" ya da "30" ya da "35" şeklinde olması VE hücrenin herhangi bir kısmında "1.5M" ya da "2.0M" ifadesinin geçiyor olması."
Bu koşulları metin filtresiyle sağlayabilmem mümkün değil diye düşünüyorum. Gelişmiş filtre ile boş bir hücreye formül yazıp, o hücreyi ölçüt aralığı olarak belirleyip uygulamam gerekmez mi? Eğer öyle ise yazmam gereken formül ne şekilde olmalıdır, sizlere danışmak istedim.
 
Sözünü ettiğiniz şekilde 3 kıstaslı filtrelemeyi aşağıdaki kod ile deneyiniz.
Çalışma kitabınızın sonuna bir sayfa ilave edecek ve istediğiniz kıstaslara sahip verileri oraya taşıyacaktır. Denedikten sonra bir sorun varsa paylaşınız.
Kod:
Sub filtreleme()
Dim a As Object, c As Object, d As Object
Dim sh As Worksheet, ss As Long, dizi, v1 As Object, v2 As Object, v3 As Object

ReDim dizi(1 To 7, 1 To 1)
Set a = CreateObject("VBScript.RegExp")
Set c = CreateObject("VBScript.RegExp")
Set d = CreateObject("VBScript.RegExp")
a.Global = True
a.Pattern = "^[A-Z]{2}\d{2}"
c.Global = True
c.Pattern = "\d\.\dM"
d.Global = True
d.Pattern = "^\d{2}"
n = 0
Set sh = Sayfa1
ss = sh.Range("C" & Rows.Count).End(3).Row
For i = 6 To ss
    Set v1 = a.Execute(sh.Range("A" & i))
    Set v2 = c.Execute(sh.Range("C" & i))
    Set v3 = d.Execute(sh.Range("D" & i))
    If v1.Count > 0 And v2.Count > 0 And v3.Count > 0 Then
        n = n + 1
        ReDim Preserve dizi(1 To 7, 1 To n)
        For m = 1 To 7
            dizi(m, n) = sh.Cells(n + 5, m)
        Next m
    End If
Next i

Set yeni = ThisWorkbook.Sheets.Add(after:=Sheets(Sheets.Count))

ActiveSheet.Range("A" & 6).Resize(n, 7).Value = Application.Transpose(dizi)
ActiveSheet.Columns("A:H").AutoFit
MsgBox "Filtreleme işlemi tamam.", vbInformation, "antonio"
End Sub
Örnek dosyanız ektedir.
 

Ekli dosyalar

Son düzenleme:
Denedim, listenin aynısını yeni sayfaya attı hocam. Ben mi bişey kaçırdım anlayamadım kusura bakmayın.
 
Merhaba.

Sorunu çözmüşseniz alternatif olsun.

Çözüm önerim ekteki belgeye uygulandı.
Belgede açıkalama da yazdım.

Deneyip, sonuçlarını konu sayfasında paylaşırsınız.
.
 

Ekli dosyalar

Denedim, listenin aynısını yeni sayfaya attı hocam. Ben mi bişey kaçırdım anlayamadım kusura bakmayın.
C ve D sütunlarında olmasını istediğiniz tüm kıstaslar gönderdiğiniz örnek dosyada zaten mevcut. Mevcut verileri kıstaslarınıza uymayacak şekilde değiştirdikten sonra kodları çalıştırırmalısınız. Belirtilen kıstaslara uymadığı halde yeni sayfa içinde yer alan veriler hakkında geri bildirimde bulunursanız hatayı düzeltmeye çalışacağım.
 
Hocam çok teşekkür ederim, elinize sağlık ikinizin de. Açıkçası makrodan hiç anlamıyorum. Birkaç formül ile koşulları sağlayabileceğimi düşünmüştüm, beceremedim:) Tekrar tekrar teşekkürler.
 
Tekrar merhaba.

Benim eklediğim belgede kod zaten H sütununa formül uygulayarak işlem yapıyor.
Koddaki FormulaArray satırının hemen altındaki,
....Value=.Value şeklindeki satırın sol başına TEK TIRNAK ekleyin ki formüller formül olarak kalsın.

Bu formüle bakarsanız, 3 değerin toplamı şeklinde.

Formülü, + işaretlerinin olduğu kısımlardan parçalar halinde aynı satırda yanyana hücrelere uygularsanız (dizi formülü olduğunu unutmadan),
herbir formül parçası koşul alanlarından birine ait kontrol yapıyor.

Bunların toplamı 3 olduğunda koşulların tümü gerçekleşiyor demektir.
.
 
Geri
Üst