Koşullu Süz

Katılım
19 Ağustos 2005
Mesajlar
201
Excel Vers. ve Dili
Excel 2003 Tr
Elimde daha önceden ustalarımın yardımı ile yapmış olduğum bir çalışma var

http://www.excel.web.tr/showthread.php?t=40070&highlight=ko%FEullu+s%FCz

Burda yapılan işlem isme göre sorgu yaptırıyor.

Bu işlem dışında birde dolu hücrelerin süzme işlemini yapılması lazım forumda örnek aradım bulamadım. Yukarıdaki linkte hocalarımla hazırladığımız kodları uyarlamaya çalıştım beceremedim. Ben Bu işi öğrenemedimmi ne :(

Kısacası istenilen şey tarih aralığı işaretlendikten sonra E3:H65500 aralığında sadece dolu hücreler (Hücrelerden sadece bir tanesi bile dolu olsa gözükecek) kalacak şekilde süz işlemi yapılması

Not tek hücrede yapıyorum ama 4 ayrı hücreyi aynı anda denediğimde E hücresinde, F veya .... hücresinde bir boşluk oldumu o satır otomatikman süzden nasibini alıyor. E ile H arasında tek bir hücrenin dolu olması görünmesi açısından yeterli
 

Orion1

Uzman
Uzman
Katılım
1 Mart 2005
Mesajlar
22,254
Excel Vers. ve Dili
Win7 Home Basic TR 64 Bit

Ofis-2010-TR 32 Bit
Ekli dosyayı inceleyiniz.:cool:
Textbox'a yazılan kodları iptal ettim.
Kod:
Private Sub CommandButton1_Click()
Dim sat, i As Long, k As Byte, adrs As String
ListBox1.RowSource = ""
For i = 3 To Cells(65536, "D").End(xlUp).Row
    adrs = Range(Cells(i, "E"), Cells(i, "H")).Address
    If WorksheetFunction.CountA(Range(adrs)) > 0 Then
        If CLng(CDate(Cells(i, "D").Value)) >= CLng(CDate(Calendar1.Value)) _
        And CLng(CDate(Cells(i, "D").Value)) <= CLng(CDate(Calendar2.Value)) Then
            ListBox1.AddItem
            For k = 0 To 7
                ListBox1.Column(k, sat) = Cells(i, k + 1).Value
            Next k
            sat = sat + 1
        End If
    End If
Next i
TextBox1.Value = ListBox1.ListCount - 1
End Sub
Kod:
Private Sub UserForm_Initialize()
Sheets("Denetlemeler").Select
ListBox1.ColumnCount = 8
ListBox1.RowSource = "A3:H" & Cells(65536, "D").End(xlUp).Row
End Sub
 
Katılım
19 Ağustos 2005
Mesajlar
201
Excel Vers. ve Dili
Excel 2003 Tr
Say&#305;n Orion2 Hocam Sa&#287;ol

M&#252;mk&#252;nse Kodlar&#305;n a&#231;&#305;klamalar&#305;na yer verebilirmisiniz. Kodlar&#305; inceledi&#287;imde bir &#231;o&#287;unu anl&#305;yorum. &#304;stedi&#287;im de&#287;i&#351;iklikleri yapabiliyorum ama kar&#351;&#305;lar&#305;nda a&#231;&#305;klama olsa daha kolay i&#351;lem yapar&#305;z.

Birde son olarak benim &#231;al&#305;&#351;mamda A2 ile AH aras&#305; veri dolu, tarih I2 s&#252;tunundan ba&#351;l&#305;yor ve s&#252;z i&#351;lemi L, M, N ve O (L2:O65500) h&#252;creleri aras&#305;nda yap&#305;lacak ve a&#351;a&#287;&#305;daki kodlarda yer de&#287;i&#351;ikli&#287;i yapt&#305;&#287;&#305;mda hata ile kar&#351;&#305;la&#351;&#305;yorum. Sizin &#246;rne&#287;iniz ise sorunsuz &#231;al&#305;&#351;&#305;yor
Kod:
Private Sub CommandButton1_Click()
Dim sat, i As Long, k As Byte, adrs As String
ListBox1.RowSource = ""
For i = 3 To Cells(65536, "D").End(xlUp).Row
    adrs = Range(Cells(i, "E"), Cells(i, "H")).Address
    If WorksheetFunction.CountA(Range(adrs)) > 0 Then
        If CLng(CDate(Cells(i, "D").Value)) >= CLng(CDate(Calendar1.Value)) _
        And CLng(CDate(Cells(i, "D").Value)) <= CLng(CDate(Calendar2.Value)) Then
            ListBox1.AddItem
            For k = 0 To 7
                ListBox1.Column(k, sat) = Cells(i, k + 1).Value
            Next k
            sat = sat + 1
        End If
    End If
Next i
TextBox1.Value = ListBox1.ListCount - 1
End Sub
Kod:
Private Sub TextBox1_Change()
Exit Sub
Dim sh As Worksheet
Dim bul As Range, rg As Range
Dim y As Integer, satir As Integer, x As Integer
Dim i As Integer, j As Integer
Dim arrSatir()
Dim arrveri()
Dim adres As String
If Trim(TextBox1) = Empty Then: ListBox1.Clear: TextBox2 = Empty: Exit Sub
Set sh = Sheets("Denetlemeler")
Set rg = sh.Range("E3:H65500")
 Selection.AutoFilter
[A2] = Calendar1
 Sheets("Denetlemeler").Range("a3").AutoFilter Field:=4, Criteria1:=">=" & CDbl(Calendar1), Operator:=xlAnd _
        , Criteria2:="<=" & CDbl(Calendar2)
[D2] = Calendar2
 Sheets("Denetlemeler").Range("a3").AutoFilter Field:=4, Criteria1:=">=" & CDbl(Calendar1), Operator:=xlAnd _
        , Criteria2:="<=" & CDbl(Calendar2)
Set sh = Nothing
End Sub
ListBox i&#231;erisinde g&#246;r&#252;nt&#252;leme
Kod:
Private Sub UserForm_Initialize()
Sheets("Denetlemeler").Select
ListBox1.ColumnCount = 8
ListBox1.RowSource = "A3:H" & Cells(65536, "D").End(xlUp).Row
End Sub
 

Orion1

Uzman
Uzman
Katılım
1 Mart 2005
Mesajlar
22,254
Excel Vers. ve Dili
Win7 Home Basic TR 64 Bit

Ofis-2010-TR 32 Bit
Aşağıdaki kodları deneyiniz.:cool:
Kod:
Private Sub CommandButton1_Click()
Dim sat, i As Long, k As Byte, adrs As String
ListBox1.RowSource = ""
For i = 2 To Cells(65536, "I").End(xlUp).Row
    adrs = Range(Cells(i, "L"), Cells(i, "O")).Address
    If WorksheetFunction.CountA(Range(adrs)) > 0 Then
        If CLng(CDate(Cells(i, "I").Value)) >= CLng(CDate(Calendar1.Value)) _
        And CLng(CDate(Cells(i, "I").Value)) <= CLng(CDate(Calendar2.Value)) Then
            ListBox1.AddItem
            For k = 0 To 7
                ListBox1.Column(k, sat) = Cells(i, k + 9).Value
            Next k
            sat = sat + 1
        End If
    End If
Next i
TextBox1.Value = ListBox1.ListCount - 1
End Sub
 
Katılım
19 Ağustos 2005
Mesajlar
201
Excel Vers. ve Dili
Excel 2003 Tr
Hocam o sorunu hallettim
ancak TextBox Change ve Userform İnitializede sorun oluşuyor. aşağıdaki gibi değiştirdim ama bu sefer ListBox da tarih başa geliyor yani I dan P hücre bilgisine kadar dahası yok. Süz işlemi bitince A2 den AH ye kadar olanları alması lazım
son olarakta UserForm açıldığında TextBox içeriği dolmasa sadece süz işlemine tıkladığımızda dolsa çünkü şu an yaklaşık 2500 satır dolu ve her gün yaklaşık 200 satır ilave oluyor yani bilgiler çoğaldıkça ListBox içerisindeki bilgi ilk açılışta süreyi uzatmazmı

Kod:
Private Sub TextBox1_Change()
Private Sub TextBox1_Change()
Dim sh As Worksheet
Dim bul As Range, rg As Range
Dim y As Integer, satir As Integer, x As Integer
Dim i As Integer, j As Integer
Dim arrSatir()
Dim arrveri()
Dim adres As String
If Trim(TextBox1) = Empty Then: ListBox1.Clear: TextBox2 = Empty: Exit Sub
Set sh = Sheets("Denetlemeler")
Set rg = sh.Range("L2:O65500")
 Selection.AutoFilter
[A2] = Calendar1
 Sheets("Denetlemeler").Range("a2").AutoFilter Field:=9, Criteria1:=">=" & CDbl(Calendar1), Operator:=xlAnd _
        , Criteria2:="<=" & CDbl(Calendar2)
[D2] = Calendar2
 Sheets("Denetlemeler").Range("a2").AutoFilter Field:=9, Criteria1:=">=" & CDbl(Calendar1), Operator:=xlAnd _
        , Criteria2:="<=" & CDbl(Calendar2)
Set sh = Nothing
End Sub

Kod:
Private Sub UserForm_Initialize()
Sheets("Denetlemeler").Select
ListBox1.ColumnCount = 33
ListBox1.RowSource = "A2:AH" & Cells(65536, "I").End(xlUp).Row
End Sub
 

Orion1

Uzman
Uzman
Katılım
1 Mart 2005
Mesajlar
22,254
Excel Vers. ve Dili
Win7 Home Basic TR 64 Bit

Ofis-2010-TR 32 Bit
Userform'un initialize olayında listbox'ın RowSource metodu ile veriler alınmakta.
Bu metodla bu miktardaki verileri almak hiç zaman almaz.Döngüye girip additem yöntemi ile verileri almak zaman alır.Süz butonunun istediğiniz gibi diğer verileride almasını istiyorsanız,Küçük bir örnek dosya yollayınız.:cool:
 
Katılım
19 Ağustos 2005
Mesajlar
201
Excel Vers. ve Dili
Excel 2003 Tr
Hocam baz&#305; b&#246;l&#252;mleri silmek zorunda kald&#305;m kusura bakmay&#305;n &#246;zel bilgiler i&#231;eriyordu sayfada &#351;ifre sorarsa &#351;ifre 543216
 
Son düzenleme:

Orion1

Uzman
Uzman
Katılım
1 Mart 2005
Mesajlar
22,254
Excel Vers. ve Dili
Win7 Home Basic TR 64 Bit

Ofis-2010-TR 32 Bit
Dağa önce E:H aralığındaki hücrelerin dolu olup olmadığı sorgulanıyordu.Şimdi hangi sütun aralığı sorgulanıcak?
 

Orion1

Uzman
Uzman
Katılım
1 Mart 2005
Mesajlar
22,254
Excel Vers. ve Dili
Win7 Home Basic TR 64 Bit

Ofis-2010-TR 32 Bit
L:Z arlığının dolu olup olmadığını sorgulayarak işlem yapıyor.
Ekli dosyayı inceleyiniz.:cool:
Kod:
Private Sub CommandButton1_Click()
Dim i As Long, k As Byte, adrs As String, a As Long
ListBox1.RowSource = ""
If ActiveSheet.FilterMode Then ActiveSheet.ShowAllData
ReDim myarr(1 To 34, 1 To 1)
For i = 2 To Cells(65536, "I").End(xlUp).Row
    adrs = Range(Cells(i, "L"), Cells(i, "Z")).Address
    If WorksheetFunction.CountA(Range(adrs)) > 0 Then
        If CLng(CDate(Cells(i, "I").Value)) >= CLng(CDate(Calendar1.Value)) _
        And CLng(CDate(Cells(i, "I").Value)) <= CLng(CDate(Calendar2.Value)) Then
            a = a + 1
            ReDim Preserve myarr(1 To 34, 1 To a)
            For k = 1 To 34
                myarr(k, a) = Cells(i, k).Value
            Next k
        End If
    End If
Next i
ListBox1.Column = myarr
Erase myarr
Label5.Caption = ListBox1.ListCount - 1
End Sub
 
Katılım
19 Ağustos 2005
Mesajlar
201
Excel Vers. ve Dili
Excel 2003 Tr
Hocam ellerine sa&#287;l&#305;k &#351;imdi tamam geri kalan d&#252;zenlemeleri ben yapar&#305;m. Allah raz&#305; olsun.

bir sorun vard&#305; gece olmas&#305; sebebiyle g&#246;z&#252;nden ka&#231;m&#305;&#351; olabilir.
Toplam say&#305;y&#305; g&#246;stermek i&#231;in Label eklemi&#351;sin
Label5.Caption = ListBox1.ListCount - 1 (-1 oldu&#287;unda eksik &#231;&#305;kt&#305;&#287;&#305; i&#231;in -1 i sildim)

ayr&#305;ca
TextBox1 = ListBox1.ListCount - 1 eklenmemi&#351;ti onu ekledim bundada -1 oldu&#287;u i&#231;in bir eksik &#231;&#305;k&#305;yordu onuda d&#252;zelttim. Tekrar te&#351;ekk&#252;rler


Not: TextBox1 i&#231;eri&#287;ini yukar&#305;daki gibi d&#252;zenleyince otomatik say&#305;land&#305;rman&#305;n ba&#351;lad&#305;&#287;&#305; A2 h&#252;cre de&#287;eri bozuldu&#287;u i&#231;in iptal ettim. Say&#305; g&#246;r&#252;nt&#252;s&#252;n&#252; Label i&#231;erisinde almak daha mant&#305;kl&#305;
 
Son düzenleme:
Katılım
19 Ağustos 2005
Mesajlar
201
Excel Vers. ve Dili
Excel 2003 Tr
Label5.Caption = ListBox1.ListCount - 1 i&#231;erisine s&#252;z sonucu kalanlar&#305;n say&#305;s&#305; g&#246;z&#252;k&#252;yor

bir ba&#351;ka Label eklesek
Label6=S&#252;z sonucu L s&#252;tununda kalan say&#305;lar&#305;n toplam&#305;n&#305;,
Label7=S&#252;z sonucu M s&#252;tununda kalan say&#305;lar&#305;n toplam&#305;n&#305; .........
Label20=S&#252;z sonucu Z s&#252;tununda kalan say&#305;lar&#305;n toplam&#305;n&#305; g&#246;sterse m&#252;mk&#252;nm&#252; acaba
 

Orion1

Uzman
Uzman
Katılım
1 Mart 2005
Mesajlar
22,254
Excel Vers. ve Dili
Win7 Home Basic TR 64 Bit

Ofis-2010-TR 32 Bit
Ekli doyayaı inceleyiniz.:cool:
Kod:
Private Sub CommandButton1_Click()
Dim i As Long, k As Byte, adrs As String, a As Long
Dim L_sut, M_sut, Z_sut As Double
ListBox1.RowSource = ""
If ActiveSheet.FilterMode Then ActiveSheet.ShowAllData
ReDim myarr(1 To 34, 1 To 1)
For i = 2 To Cells(65536, "I").End(xlUp).Row
    adrs = Range(Cells(i, "L"), Cells(i, "Z")).Address
    If WorksheetFunction.CountA(Range(adrs)) > 0 Then
        If CLng(CDate(Cells(i, "I").Value)) >= CLng(CDate(Calendar1.Value)) _
        And CLng(CDate(Cells(i, "I").Value)) <= CLng(CDate(Calendar2.Value)) Then
            a = a + 1
            ReDim Preserve myarr(1 To 34, 1 To a)
            For k = 1 To 34
                If k = 9 Then
                    myarr(k, a) = Format(Cells(i, k).Value, "dd.mm.yyyy")
                    Else
                    myarr(k, a) = Cells(i, k).Value
                End If
            Next k
            L_sut = L_sut + Cells(i, "L").Value
            M_sut = M_sut + Cells(i, "M").Value
            Z_sut = Z_sut + Cells(i, "Z").Value
        End If
    End If
Next i
ListBox1.Column = myarr
Erase myarr
Label5.Caption = ListBox1.ListCount
Label7.Caption = L_sut
Label9.Caption = M_sut
Label11.Caption = Z_sut
End Sub
Kod:
Private Sub UserForm_Initialize()
Sheets("Denetlemeler").Select
ListBox1.ColumnCount = 34
ListBox1.RowSource = "A2:AH" & Cells(65536, "I").End(xlUp).Row
Label5.Caption = ListBox1.ListCount
Label7.Caption = WorksheetFunction.Sum(Range("L2:L" & Cells(65536, "I").End(xlUp).Row))
Label9.Caption = WorksheetFunction.Sum(Range("M2:M" & Cells(65536, "I").End(xlUp).Row))
Label11.Caption = WorksheetFunction.Sum(Range("Z2:Z" & Cells(65536, "I").End(xlUp).Row))
End Sub
 
Katılım
19 Ağustos 2005
Mesajlar
201
Excel Vers. ve Dili
Excel 2003 Tr
Hocam sağol tekrar Allah razı olsun irdeledikçe yeni yeni şeyler öğreniyorum

ekli dosyama gönderdiğiniz kodu daha eklemedim ama ekleyeceğim. (İnternetimde sıkıntı var kesilip duruyor)

Bu arada bir sorunum daha var

ekli dosyada MemurBulForm diye bir sorgu var bu sorgulamada isim için harflere bastıkça ilgili aralıkta sorgulama yapıyor ve bu işlem çok uzun sürüyor. bir buton ekliyerek ismi yazdıktan (örneğin hücrede Ahmet VELİOĞLU yazdığını varsayarak Ahmet diye kısa veya Ahmet VELİOĞLU diye uzun yazıp yani her iki alternatiftede yazabiliriz sonra arama yaptırsak (bu arada sorgudan sonra ListBox içerisinde hücre sıralaması değişiyor sondaki bir kaç hücre 2., 3., 4., ve 5. sıraya geliyor. bu değişiklik kalmalı). İsim ile ilgili bir süz bulamazsa aradığınız isim yok diye uyarsa

son olarakta sorgu yaptıktan sonra A2 hücresi ile D2 hücresi bilgi kaybına uğruyor ne yaptıysam çözemedim

Sayfa şifreleri 543216
 

Orion1

Uzman
Uzman
Katılım
1 Mart 2005
Mesajlar
22,254
Excel Vers. ve Dili
Win7 Home Basic TR 64 Bit

Ofis-2010-TR 32 Bit
Hocam sağol tekrar Allah razı olsun irdeledikçe yeni yeni şeyler öğreniyorum

ekli dosyama gönderdiğiniz kodu daha eklemedim ama ekleyeceğim. (İnternetimde sıkıntı var kesilip duruyor)

Bu arada bir sorunum daha var

son olarakta sorgu yaptıktan sonra A2 hücresi ile D2 hücresi bilgi kaybına uğruyor ne yaptıysam çözemedim

Sayfa şifreleri 543216
Bununla ilgili sorun çözüldü.:cool:
Ekli dosyayı inceleyiniz.:cool:
 
Katılım
19 Ağustos 2005
Mesajlar
201
Excel Vers. ve Dili
Excel 2003 Tr
Sayın Orion Hocam Hızır gibisiniz Allah Razı olsun.

Bu arada gönderdiğiniz kodlar gerçekten çok hızlı eski kodlarımı tümüyle sizin kodlar ile değiştirdim.

Birtek bu son süzmeye karışmadım.

Bu arada hocam harf girdikçe döngü başlıyacağına biz sadece ismi yazsak sonra buton vasıtası ile aratsak malum her girilen harfte süz baştan tekrarlama yapıyor ve yavaş makinalarda uzun zaman bekletiyor
ve
son olarakta aradığımız isim yoksa bir uyarı verse aradığınız kriterde isim yok diye
 

Orion1

Uzman
Uzman
Katılım
1 Mart 2005
Mesajlar
22,254
Excel Vers. ve Dili
Win7 Home Basic TR 64 Bit

Ofis-2010-TR 32 Bit
Sayın Orion Hocam Hızır gibisiniz Allah Razı olsun.

Bu arada gönderdiğiniz kodlar gerçekten çok hızlı eski kodlarımı tümüyle sizin kodlar ile değiştirdim.

Birtek bu son süzmeye karışmadım.

Bu arada hocam harf girdikçe döngü başlıyacağına biz sadece ismi yazsak sonra buton vasıtası ile aratsak malum her girilen harfte süz baştan tekrarlama yapıyor ve yavaş makinalarda uzun zaman bekletiyor
ve
son olarakta aradığımız isim yoksa bir uyarı verse aradığınız kriterde isim yok diye
Memur bu formunda BUL-Süz butonuna basınız.:cool:
Ekli dosyayı inceleyiniz.:cool:
 
Katılım
19 Ağustos 2005
Mesajlar
201
Excel Vers. ve Dili
Excel 2003 Tr
Hocam sistem tam istedi&#287;im gibi ancak arama kriteri Set rg = sh.Range("AA1:AH65500") aras&#305;nda g&#246;z&#252;kmesine ra&#287;men ne listedeki isimleri nede yeni yazd&#305;&#287;&#305;m isimleri bulam&#305;yor. Yap&#305;lan aramalar&#305;n hepsine "" bulunamad&#305; diyor
 
Son düzenleme:
Katılım
19 Ağustos 2005
Mesajlar
201
Excel Vers. ve Dili
Excel 2003 Tr
Hocam çok çok özür diliyorum hata benden kaynaklanıyormuş :D kodlarda sorun yok (Dün yağmurda kaldım bu gün çok kötü hastayım ve kendimi veremiyorum)

Bir saattir tarih aralığını işaretlemeden süz yaptırıyorum :D jeton sonradan düştü
 

Orion1

Uzman
Uzman
Katılım
1 Mart 2005
Mesajlar
22,254
Excel Vers. ve Dili
Win7 Home Basic TR 64 Bit

Ofis-2010-TR 32 Bit
Hocam çok çok özür diliyorum hata benden kaynaklanıyormuş :D kodlarda sorun yok (Dün yağmurda kaldım bu gün çok kötü hastayım ve kendimi veremiyorum)

Bir saattir tarih aralığını işaretlemeden süz yaptırıyorum :D jeton sonradan düştü
Geçmiş olsun.
Ben sizin kodlarınızı dfeğiştirmedim.
Sadece mesaj ilave ettim ve 2nci satır sorgulamasını ilave ettim.
Ve A1 ile D1 hücrelerinde boşluk oluşuyordu onu hallettim.
Şimdi listbox'ta listeleme yapıyormu?
Ben listeleyemedimde.
 
Katılım
19 Ağustos 2005
Mesajlar
201
Excel Vers. ve Dili
Excel 2003 Tr
Sa&#287;olun Hocam
Dedi&#287;im gibi hata benden kaynaklan&#305;yormu&#351; tarih aral&#305;&#287;&#305;n&#305; girmedi&#287;im i&#231;in.
Listelemede sorun yok her&#351;ey m&#252;kemmel elleriniz ve akl&#305;n&#305;z dert g&#246;rmesin m&#252;kemmel oldu &#351;imdi i&#351;lemler daha seri bir &#351;ekilde halloluyor. Ben bir sorun g&#246;remedim tekrar Te&#351;ekk&#252;rler.
 
Üst