Karakter Seçimli Filtre Yapma

  • Konuyu başlatan Konuyu başlatan muhsar
  • Başlangıç tarihi Başlangıç tarihi
Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...

muhsar

Kullanıcı
Katılım
28 Tem 2022
Mesajlar
185
Excel Versiyonu
Excel 2016
Excel Sürümü
64 Bit
Excel Dili
Türkçe
Sub filtrele()

ActiveSheet.Unprotect "1"

Dim arr1, arr2, i As Integer

With Sheets("ARA")
.Range("A2:Z2").Clear
.Range("A12:Z65536").Clear

arr1 = Array("A", "B", "E", "H", "P", "Q", "O") 'O Tc icin
arr2 = Array(IIf(.Range("B4").Value = "HEPSİ", "", .Range("B4").Value), _
IIf(.Range("B8").Value = "HEPSİ", "", .Range("B8").Value), _
IIf(.Range("B7").Value = "HEPSİ", "", .Range("B7").Value), _
IIf(.Range("B6").Value = "HEPSİ", "", .Range("B6").Value), _
IIf(.Range("B5").Value = "", "", "*" & .Range("B5").Value & "*"), _
IIf(.Range("D5").Value = "", "", "*" & .Range("D5").Value & "*"), _
IIf(.Range("D4").Value = "HEPSİ", "", .Range("D4").Value)) 'Tc icin



For i = LBound(arr1) To UBound(arr1)
.Range(arr1(i) & 2).Value = arr2(i)
Next

Sheets("AKTİF_HASTA_LİSTESİ").Range("A8:Z65536").AdvancedFilter Action:= _
xlFilterCopy, CriteriaRange:=.Range("A1:Z2"), CopyToRange:=.Range("A12:Z12")
End With

Erase arr1: Erase arr2
ActiveSheet.Protect "1"


End Sub


merhaba;hocam yukarıdaki kodda bulunan
IIf(.Range("D4").Value = "HEPSİ", "", .Range("D4").Value)) 'Tc icin
satırına göre tc nin tamamını yazmayınca filtrede veri getirmiyor ,fakat isim soyisim de kaç karakter yazarsam ona göre filtre yapıyor
IIf(.Range("D5").Value = "", "", "*" & .Range("D5").Value & "*"), _
bu satırı kopyalayıp d5 leri d4 ile değiştirip kullanmak istediğimde hata verdi,neyi eksik yapıyor olabilirim
 
Çözüm
Son olarak alttaki gibi kodu yapınız gereksiz yerlerin formatıda değişmemiş olur.
Kolay gelsin.

VBA:
İndirmek için giriş yapmanız gerekmektedir.
(13 satır)
Merhaba.
Yanlış hatırlamıyorsam, daha evvel açtığınız konu için eklediğiniz belgede TC Kimlik Numarası sütununuzda veri yok idi.

Kuvvetle muhtemel, kullandığınız gerçek belgede bu sütundaki verileriniz SAYI formatında.
Bildiğim kadarıyla, SAYIlar için İÇERİR mantığıyla filtre uygulamanız mümkün görünmüyor.

Ya bu verileri METİN haline getirip kendi sütununda, ya da başka uygun bir sütunda TC Kimlik Numaralarını METİN'e dönüştürüp,
filtreyi bu METİN olan sütunda Sayın @Feyzullah Bey'in belirttiği şekilde ve D4 içeriğinin de METİN olmasını sağlayarak uygulamalısınız.
 
Alttaki gibide deneyebilirsiniz.Test edemedim.Bu kodları nerde olursa tanırım :)

VBA:
İndirmek için giriş yapmanız gerekmektedir.
(1 satır)
 
A8:Z65536

Birde önceden yazsammı yazmasammı diye karar verememiştim.Yukarıdaki Z65536 daki sayıyı son diye bir değişken ile alırsanız daha iyi olur.Gelişmiş fitrelemeye hiç güvenmiyorum hız konusunda.

Range("A8:Z" & .cells(rows.count,1).end(3).row)
Böyle yapabilirsiniz mesela tabii kodu mobilden yazdım yanlışlık olabilir.
 
Sheets("AKTİF_HASTA_LİSTESİ").Range("A8:Z65536").AdvancedFilter Action:= _
xlFilterCopy, CriteriaRange:=.Range("A1:Z2"), CopyToRange:=.Range("A12:Z12")
End With

hocam yine buraya ekleyebilirmiyiz,yeni halini;.Range("A8:Z65536") bu kısmı silip yeniyi yapıştırdığımda hata verdi çünkü
 
Bu şekilde dneyin Tc kimlik için Ömer hocamızın dediğini uygulayın yada öğleden sonran uğraşırım * yaptım olmadı cstr felan yapıp.

VBA:
İndirmek için giriş yapmanız gerekmektedir.
(32 satır)
 
teşekkür ederim,tc için yapılabilir bişeyse mutlu olurum yoksa ömer hocamın dediğini nasıl yapabilirim onu araştırmalıyım,(baştan 2-3 rakam yazıp aramak büyük kolaylık oluyor cünkü)
 
Ömer hocamızın demek istediği O sütununu metin olarak formatlayın.Ve Feyzullah hocamızın dediği olayı uygulayın yıldız biçiminde.Dizi ilede kolau yapabiliriz bugin akşama doğru bakarım.
 
teşekkür ederim,tc için yapılabilir bişeyse mutlu olurum yoksa ömer hocamın dediğini nasıl yapabilirim onu araştırmalıyım,(baştan 2-3 rakam yazıp aramak büyük kolaylık oluyor cünkü)


hocam yukarıdaki kodları uyguladığımda sadece ilk satırı getiriyor,harf hatalarını kontrol ettim ama düzelmedi,rica etsem müsait olduğunuzda bunada bakarmısınız
 
Rica ederim.Eki inceleyebilirsiniz çalışıyor içerik olarak arama.
AKTİF_HASTA_LİSTESİ sayfası Tc sütun formatına dikkat edin metin olarak yapılacak.

IIf(.Range("D4").Value = "HEPSÝ", "", .Range("D4").Value)) 'Tc icin HEPSÝ burayı sildim mantıksız olmuş.

Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic

Bunlarıda ekledim koda hız için.Calculation olanları silebilirsiniz eğer hata olursa yani formüller otomatik çalışmazsa.
Calculation resimdeki ile alakalı Manual yer el ile olanı,automatic olan yerde otomatik yeri seçer.

Unbenannt.webp


VBA:
İndirmek için giriş yapmanız gerekmektedir.
(34 satır)
 

Ekli dosyalar

hocam elinize sağlık ama ne yapsam olmadı,sizin attığınız çalışıyor benim exele kopyalayınca çalışmıyor,
Application.Calculation = xlCalculationAutomatic
Application.Calculation = xlCalculationManual

bunları silip denedim gene olmuyor,tc sütununu metin olarak sütunun tamamını biçimlendirdim, 2.sarırda *rakam* şeklinde yazdığımı görüyorum ama filtrede yok
 
Sheets("ARA").Range("D8:D" & Rows.Count).NumberFormat = "dd.mm.yyyy"
Bu koduda eklemelisini kod satırının en altına felan.Clear olduğu için tarihi sayı olarak gösteriyordu.Ordaki D yerine Ara sayfanındaki hangi sütun ise o yazılacak.
 
Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...
Benzer Konular Popüler İçerikler Daha Fazlası
Geri
Üst Alt