• DİKKAT

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

Kriterlere göre başka sayfaya listeleme

Katılım
17 Nisan 2006
Mesajlar
228
Selamlar,

Herkese günaydın,

Ekteki örnek dosyadaki gibi diğer sayfalardan düşeyara fonksiyonu ile getirdiğim verileri, bir kaç kriter koyarak sorgulamalı hale getirmeyi istiyorum.

- Kişinin Firması ve işleme esas ay tablodan seçildiğinde,
- Diğer sayfadaki veriler işleme esas seçilen aya göre kriterlenip,

seçilen ayda "çalışanlar" listelenecek yani henüz işe girmemiş ve işten ayrılanlar listelenmeyecek.

Örnek dosya ektedir.

Şimdiden teşekkürler
 

Ekli dosyalar

Son düzenleme:
Merhaba,

Aşağıdaki kodu denermisiniz.

Kod:
Option Explicit
 
Sub ÖZET_RAPOR()
    Dim S1 As Worksheet, S2 As Worksheet, S3 As Worksheet
    Dim X As Long, Son_Tarih As Date, Satır As Long
    
    Application.ScreenUpdating = False
    Application.Calculation = xlCalculationManual
    
    Set S1 = Sheets("PERSONEL_DATA")
    Set S2 = Sheets("TABLO")
    Set S3 = Sheets("APHB KİŞİ SAYILARI")
    
    S2.Range("A5:I" & Rows.Count).Clear
    S2.Range("C5:C" & Rows.Count).NumberFormat = "mmmm/yyyy"
    S2.Range("H5:H" & Rows.Count).NumberFormat = "mmmm/yyyy"
    S2.Range("D5:G" & Rows.Count).NumberFormat = "#,##0.00"
    S2.Range("C5:H" & Rows.Count).HorizontalAlignment = xlCenter
    S2.Cells.VerticalAlignment = xlCenter
    
    Son_Tarih = DateSerial(Year(S2.Range("C1")), Month(S2.Range("C1")) + 1, 0)
    Satır = 5
    
    For X = 2 To S1.Cells(Rows.Count, 2).End(3).Row
        If S1.Cells(X, "H") <= Son_Tarih Then
            If S1.Cells(X, "I") >= S2.Range("C1") Or S1.Cells(X, "I") = "" Then
                If S1.Cells(X, "E") = S2.Range("F1") Then
                    S2.Cells(Satır, "A") = Satır - 4
                    S2.Cells(Satır, "B") = S1.Cells(X, "A")
                    S2.Cells(Satır, "C") = S1.Cells(X, "H")
                    S2.Cells(Satır, "E") = S1.Cells(X, "K")
                    S2.Cells(Satır, "F") = S1.Cells(X, "L")
                    S2.Cells(Satır, "G") = WorksheetFunction.VLookup(S2.Range("C1"), S3.Range("A:N"), 12, 0)
                    S2.Cells(Satır, "D").FormulaR1C1 = "=IF(ROUND((RC[3]-RC[2]),0)<=0,0,ROUND((RC[3]-RC[2]),0))"
                    S2.Cells(Satır, "H") = S2.Range("C1")
                    S2.Cells(Satır, "I").FormulaArray = "=IF(RC[-6]<=RC[-1],SatKontrol(RC[-8],RC[-7],R5C2:R14C2,RC[-6],R5C3:R14C3,RC[-5],R5C4:R14C4,RC[-4],R5C5:R14C5),""FAYDALANAMAZ"")"
                    Satır = Satır + 1
                End If
            End If
        End If
    Next
    
    If S2.Range("A5") <> "" Then
        On Error Resume Next
        With S2.Range("A4:I" & S2.Cells(Rows.Count, 1).End(3).Row)
            .Borders(xlDiagonalDown).LineStyle = xlNone
            .Borders(xlDiagonalUp).LineStyle = xlNone
            .Borders(xlEdgeLeft).LineStyle = xlContinuous
            .Borders(xlEdgeTop).LineStyle = xlContinuous
            .Borders(xlEdgeBottom).LineStyle = xlContinuous
            .Borders(xlEdgeRight).LineStyle = xlContinuous
            .Borders(xlInsideVertical).LineStyle = xlContinuous
            .Borders(xlInsideHorizontal).LineStyle = xlContinuous
        End With
        On Error GoTo 0
    End If
    
    Set S1 = Nothing
    Set S2 = Nothing
    Set S3 = Nothing
    
    Application.Calculation = xlCalculationAutomatic
    Application.ScreenUpdating = True
    
    MsgBox "İşleminiz tamamlanmıştır."
End Sub
 
Teşekkür ederim. Seyahatteyim ilk fırsatta deneyeceğim
Bu işlemi comboboxlar ile seçim yaparak listwiev yada listbox ile yapmak mümkün mü acaba fikir ve farklı bakış acısı olsun diye soruyorum

iPhone ile gönderildi.
 
Sn. Korhan Ayhan,
Emekleriniz için teşekkürler,
Ekte kod uygulanmış dosyayı gönderdim.
Ancak, Nisan ayı ve İZMİR değerli hücreler seçilip kod çalıştırıldığında nisan ayında sadece işten ayrılmış kişilere ait bilgi gelmekte.
Halbuki bizdeki sorguda kriter
Sorgu ayı > İşe giriş ayı -------> Listeleme eşit ve küçük ise -------> listele
Sorgu ayı < İşten çıkış ayı ----> Listeleme eşit ve büyük ise -------> listele
şeklinde olmalı. Sorgu ayından önce işten çıkanlar ile sorgu ayından sonra girenler listelenmeyecek. Sorgu ayında girenler, çıkanlar, mevcut çalışanlar, listelenecek. Emekleriniz ve yardımlarınız için tekrar teşekkür ederim. Cevabınızı bekliyor olacağım.
Saygılarımla,
 
Son düzenleme:
Merhaba,

Nisan ve İZMİR kriterlerini içeren tüm kayıtları TABLO sayfasına listelemek istiyorsunuz. Doğrumu anlamışım.

Yani örnek dosyanıza göre 8 kayıt listelenecek.
 
Sn. Ayhan,
4 Nolu mesajda verdiğim örneğe bakarsanız, zaten tamamı İzmir ve Nisan ayı kriterleri seçildiğinde toplam 16 kayıt listelenecek. Bu kriterlere göre gelen 16 kaydın, hepsinin çıkış tarihleri Nisan ve sonrasına ait. Şayet herhangi birinin çıkış tarihi Nisan öncesine ( Mart,Şubat) olsaydı kayıt sayısı 15 olacaktı. 2 tane olsaydı 14 tane olacaktı.......
 
Merhaba,

PERSONEL_DATA isimli sayfanızda "H" sütununu 01-04-2011 ve 30-04-2011 tarih aralığına göre süzüyorum. "E" sütununuda "İZMİR" olarak süzüyorum.

8 kayıt listeleniyor. Yanlış yaptığım bölüm neresi?
 
Merhaba,

PERSONEL_DATA isimli sayfanızda "H" sütununu 01-04-2011 ve 30-04-2011 tarih aralığına göre süzüyorum. "E" sütununuda "İZMİR" olarak süzüyorum.

8 kayıt listeleniyor. Yanlış yaptığım bölüm neresi?

Sizin yaptığınız süzmeye göre çıkan sonuç doğru. Ancak kriter sorgu ayı ve önceki ayları kapsıyor.

Şöyle örneklemek gerekirse birisi size nisan ayı itibariyle işyerinde fiili çalışanlar kimler diye soracak olsa verilecek cevap:

Nisan ayı ve önceki aylarda işe girenler olacaktır. Şayet işe giriş tarihi nisan ve öncesi olsa bile eğer kişi nisan ayından önce (mart,şubat,ocak....) işten çıkışı var ise bunlar nisan ayında fiili olarak çalışmadığı için listeye dahil olmaz. Sorgu ayında işten çıkış tarihi var ise listelenir.
#4 nolu mesajda da belirttiğim gibi
"Sorgu ayında girenler, çıkanlar, mevcut çalışanlar, listelenecek"
Filitreleme ekran görüntüsü ektedir.
Teşekkürler
 

Ekli dosyalar

  • scr_cptr.jpg
    scr_cptr.jpg
    98.5 KB · Görüntüleme: 34
Son düzenleme:
Merhaba,

#2 nolu mesajımdaki kodu güncelledim. İncelermisiniz.
 
Merhaba,

Kodun hızlı çalışması için #2 nolu mesajımdaki koda küçük bir ekleme daha yaptım. Son halini kullanınız.
 
Merhaba,

Kodun hızlı çalışması için #2 nolu mesajımdaki koda küçük bir ekleme daha yaptım. Son halini kullanınız.

Şubat 2011 ayı seçildiğinde ( Hiç kayıt olmayan ay )
S2.Range("A4:I" & S2.Cells(Rows.Count, 1).End(3).Row).Borders.LineStyle = 1
bu satırda hata veriyor

Yanlışlıkla seçilebilir diye belirttim.
Kod uygulandığında SatKontrol ile bir çakışma meydana geliyor. Acaba nedendir ?
 
Son düzenleme:
Merhaba,

Dosyanızda bende hata veren bir referans var. Bunu kaldırıp kodları çalıştırınca bir sorun oluşmuyor. Sadece kenarlık çizgisi çizen kodda hata veriyor. Hata verdiğinde "DEBUG" yapın. Kod penceresi açılacaktır. Sarı renkli satırdaki = 1 değerini = 0 olarak düzeltin ve F5 tuşuna basıp makroyu tamamlayın. Daha sonra aynı değeri tekrar 1 yaparak kodu tekrar deneyin.

Eğer yine aynı yerde hata verirse başka bir çözüm ararız.
 
Merhaba,

Dosyanızda bende hata veren bir referans var. Bunu kaldırıp kodları çalıştırınca bir sorun oluşmuyor. Sadece kenarlık çizgisi çizen kodda hata veriyor. Hata verdiğinde "DEBUG" yapın. Kod penceresi açılacaktır. Sarı renkli satırdaki = 1 değerini = 0 olarak düzeltin ve F5 tuşuna basıp makroyu tamamlayın. Daha sonra aynı değeri tekrar 1 yaparak kodu tekrar deneyin.

Eğer yine aynı yerde hata verirse başka bir çözüm ararız.

Sanırım devam ediyor #11 nolu mesajdaki dosyaya bakabilirseniz daha rahat anlaşılacak.
İşlem olmayan ayların listelenmesini engellemelek gerekecek sanırım
Teşekkürler
 
Merhaba,

Dosyanızda kullandığınız bir eklenti var. Fakat bu eklenti eklediğiniz dosyada yüklü değil. Bu sebeple dosyanız açılırken sürekli uyarı veriyor.

Dosyanızı makroları etkinleştirmeden açın.
Kod penceresini açın.
TOOLS-REFERENCES menüsünden başında "MISSING" yazan eklentiyi pasif yapın.

Daha sonra önerdiğim kodu #12 nolu mesajımdaki gibi uygulayarak çalıştırın.
 
Merhaba,

Dosyanızda kullandığınız bir eklenti var. Fakat bu eklenti eklediğiniz dosyada yüklü değil. Bu sebeple dosyanız açılırken sürekli uyarı veriyor.

Dosyanızı makroları etkinleştirmeden açın.
Kod penceresini açın.
TOOLS-REFERENCES menüsünden başında "MISSING" yazan eklentiyi pasif yapın.

Daha sonra önerdiğim kodu #12 nolu mesajımdaki gibi uygulayarak çalıştırın.

Evet dediğiniz gibi yaptım aynen oldu. Yanlız işlem olmayan aylar için hatayı vermeye devam ediyor
Dosyanızda bende hata veren bir referans var. Bunu kaldırıp kodları çalıştırınca bir sorun oluşmuyor. Sadece kenarlık çizgisi çizen kodda hata veriyor. Hata verdiğinde "DEBUG" yapın. Kod penceresi açılacaktır. Sarı renkli satırdaki = 1 değerini = 0 olarak düzeltin ve F5 tuşuna basıp makroyu tamamlayın. Daha sonra aynı değeri tekrar 1 yaparak kodu tekrar deneyin..
Böyle yaptım olmadı dosyayı düzenleyip #1 nolu mesajda güncelledim. Diğer tüm dosyaları kaldırdım

Giriş tarihi olmayan ayın seçilmesindeki verdiği hatayı düzeltirsek sanırım bitecek :)
 
Merhaba,

#2 nolu mesajımdaki kodu güncelledim. Denermisiniz.
 
Bu seferde mevcut ayları seçince hata verdi :(
.Borders(xlEdgeTop).LineStyle = xlContinuous
Satır bu
 
Merhaba,

Bir kaç kez önerdiğim kodu denedim hata vermedi. Uygulamalı dosyayı denermisiniz.
 

Ekli dosyalar

Sizin uygulamalı dosyanızda doğru hata vermiyor. Ancak Nisan ayı seçilince sadece 5 kayıt geliyor. Mayısta da 2 kayıt. Sebebini anlayamadım ?

İlk mesajdaki dosyamın kodlarını sildim, sizin 2. mesajda verdiğiniz kodu uyguladım. #17 nolu mesajdaki gibi aynen
 
Geri
Üst