Listeleme hk.

nongeyikm

Altın Üye
Katılım
7 Kasım 2005
Mesajlar
479
Excel Vers. ve Dili
Office 365 TR-64
Altın Üyelik Bitiş Tarihi
15-04-2025
Sn. Üstadlarım.

Benim için çok acil ve mühim olan ekte verdiğim puantaj çalışmasında, D sütunundaki sicillerden herhangi birinin L3 hücresinde belirttiğim puantaj bilgisini, O2:O5 de belirttiğim gibi listelemek istiyorum. Bu listeleme aynı dosya içinde farklı bir sayfada da olabilir. Sayfam toplamda yaklaşık 30.000 satırlık veri içeriyor. 13. satırdaki tarih bilgilerini dikkate almayınız. 10. satırdaki verilerden yola çıkılarak B sütunundaki yıl bilgisi ile eşleştirilerek ayın kaçıncı ve hangi günü olduğu tespit edilebilir düşüncesindeyim. Ah bir de anlatmaya çalıştığım gibi de bir yapabilsem :)

Hepinize saygılar sunarım.
 

Ekli dosyalar

turist

Destek Ekibi
Destek Ekibi
Katılım
18 Kasım 2009
Mesajlar
5,102
Excel Vers. ve Dili
2013 64Bit
English
Dosyanız eklidir. "Listele" butonuna basarak sonuçları inceleyiniz.
İyi çalışmalar.
 

Ekli dosyalar

nongeyikm

Altın Üye
Katılım
7 Kasım 2005
Mesajlar
479
Excel Vers. ve Dili
Office 365 TR-64
Altın Üyelik Bitiş Tarihi
15-04-2025
Sn. Turist,

İlginiz için çok teşekkür ederim. İlk mesajımda detaylı açıklama yapmadığım için özür dilerim.

Yaptığınız listeleme sadece bir ay için doğru lakin diğer aylardaki verileri nasıl listeleyeceğiz. Dosyamda 10 yıla ait aylar halinde veriler mevcut ve sadece bir kısmını örnek dosyaya koydum.

İşleminizde 13. satırdan faydalanarak listeleme yaptınız. Diğer aylarda ise 13. satırdaki tarihlerden faydalanamayız.

Yapılabileceğini düşündüğüm yöntemler;
1- B sütunundaki "ay ve yıl" ile 13. satırın sadece ayın gününü alıp birleştirerek gün/ay/yıl'ı belirlemek,
2- B sütunundaki tarihlerin ay/yıl verisi ile 10. satırdaki verileri gün olarak alıp birleştirerek gün/ay/yıl elde etmek

Bu listeleme çok uzun olabileceği için "listele" sayfasında yapabilir miyiz?

Konunun aciliyeti bakımından ilgilerinizi rica ederim.

Saygılarımla,
 

Ekli dosyalar

Son düzenleme:

nongeyikm

Altın Üye
Katılım
7 Kasım 2005
Mesajlar
479
Excel Vers. ve Dili
Office 365 TR-64
Altın Üyelik Bitiş Tarihi
15-04-2025
Sn. Destek ekibi arkadaşlar,

Konu ile ilgili zamanınız varsa ayırabilirmisiniz? En azından mümkün olup olmayacağı konusunda fikrinizi beyan edebilirmisiniz?

Kolay gelsin,
 

turist

Destek Ekibi
Destek Ekibi
Katılım
18 Kasım 2009
Mesajlar
5,102
Excel Vers. ve Dili
2013 64Bit
English
Konu üzerinde bilgim çerçevesinde çözüm bulmaya çalışıyorum.
Diğer değerli üyelerimizin de çözüm önerileri olacaktır.
 

Ömer BARAN

Uzman
Katılım
8 Mart 2011
Mesajlar
13,002
Excel Vers. ve Dili
Office 2013 ( 32 bit ) TÜRKÇE
Altın Üyelik Bitiş Tarihi
(18.03.2020) - Uzman olduğu için tarih geçersiz oldu.
Merhaba.

Belgenizin ham halinin çok fazla veri içermeyen bir parçasını tekrar paylaşır mısınız?
Ham veri alanında herhangi bir işlem yapmadan, olması gereken sonuçları, olması gereken konumlarına yazarak örneklendiriniz.
 

turist

Destek Ekibi
Destek Ekibi
Katılım
18 Kasım 2009
Mesajlar
5,102
Excel Vers. ve Dili
2013 64Bit
English
Sayın nongeyikm,
Dosyanızdaki çalışmayı bir noktaya kadar getirdim.
Ancak, sonucu henüz bulamadım.Konusunda Uzman değerli üyelerimizin değerli katkılaryla çözüme ulaştırılacağı kanaatindeyim.

Dosyadaki çalışmaya ait Notlar:
"tarih" makrosu: Her ay için oluşturulan tablonun ilgili tarihini ve sayfada kaçıncı satırda olduğunu bulur.
"bul" makrosu: "tarih" makrosu ile bulunan referanslara göre sayfada arama yapar ve tabloya yazar.Bu işlemlerdeki "döngü: For next" konusunda hatalı sonuçlar aldım ve ilerleyemedim.Döngü sıralamasında veya mantığında hata yapmış olabilirim.

Tabii ki; bu çözüm şeklinden başka birçok yöntem de istenen sonucu sağlayacaktır.

Size, bu aşamada yardımcı olamadığım için affınızı rica ederim.Lütfen hakkınızı helal ediniz.

İyi çalışmalar dilerim.
 

Ekli dosyalar

nongeyikm

Altın Üye
Katılım
7 Kasım 2005
Mesajlar
479
Excel Vers. ve Dili
Office 365 TR-64
Altın Üyelik Bitiş Tarihi
15-04-2025
Sn Ömer Baran Bey,

Öncelikle hayırlı sabahlar. Geçmişte birçok kez sizin yardımlarınızla gereksiz iş yükünden kurtuldum. Söylediğiniz şekilde elde etmek istediğim verileri sayfaya girdim. Şimdiden çok çok teşekkürler. İnşallah olabilirliği vardır.

Sn. Turist benim için zaman ayırdığınız için sizlere de çok teşekkür ederim.

Saygılarımla,
 

Ekli dosyalar

turist

Destek Ekibi
Destek Ekibi
Katılım
18 Kasım 2009
Mesajlar
5,102
Excel Vers. ve Dili
2013 64Bit
English
Rica ederim, sanırım bu dosyayı incelemeye devam edeceğim.(Gözden kaçırdığım bir şey var, bulmaya gayret ediyorum)
 

nongeyikm

Altın Üye
Katılım
7 Kasım 2005
Mesajlar
479
Excel Vers. ve Dili
Office 365 TR-64
Altın Üyelik Bitiş Tarihi
15-04-2025
Merhaba Ziynettin Bey,

Beyninize sağlık. Allah razı olsun.

Sadece Bir yerdeki hatayı çözemedim. "Üİ" leri listelemeye kalktığımda, Ağustos 2013 ayındaki "Üİ" lerde hata alıyorum. Hata bende mi çözemedim. Bu hali bile muhteşem fakat merakım ve de tüm istediğim veriyi doğru olarak listeleyebilmek anlamında zamanınız varsa bakabilirmisiniz.

Saygılarımla,
 

Ekli dosyalar

Ziynettin

Destek Ekibi
Destek Ekibi
Katılım
18 Nisan 2008
Mesajlar
1,104
Excel Vers. ve Dili
office2010
Verilerinizi tablo biçimine alınması için B sütunu önemli, aynı yapıda olması gerekir. Örnek B132 hücresi boş olamalı.

ya da

Aşağıdaki kodu kullanabilirsiniz.

Kod:
Private Sub CommandButton1_Click()
Dim a(), b(), dic1 As Object, dic2 As Object
Dim s1 As Worksheet, s2 As Worksheet
a = Range("D15:D" & Cells(Rows.Count, 4).End(3).Row)

Set s1 = Sheets("puantajlar")
Set s2 = Sheets("Listele")
Set dic1 = CreateObject("scripting.dictionary")
Set dic2 = CreateObject("scripting.dictionary")
a = s1.Range("B15:D" & s1.Cells(Rows.Count, 4).End(3).Row)

    ReDim b(1 To UBound(a), 1 To 2)
        For i = 1 To UBound(a)
            If a(i, 1) <> "" And a(i, 3) <> "sicil" Then
                If Not dic1.exists(a(i, 1)) Then
                    dic1(a(i, 1)) = dic1.Count + 1
                    say = dic1.Count
                    b(say, 1) = i + 12
                End If
                sat = dic1(a(i, 1))
                b(sat, 2) = i + 14
            End If
        Next i

    sicil_no = s2.[C1]
    sicil_veri = s2.[C2]
    s2.Range("F3:F" & Rows.Count).ClearContents
        For i = 1 To say
            sat_1 = Val(b(i, 1))
            sat_2 = Val(b(i, 2))
            tbl = s1.Range("D" & sat_1 & ":BV" & sat_2)
            For x = 3 To UBound(tbl)
                For j = 10 To UBound(tbl, 2)
                    If sicil_no = CStr(tbl(x, 1)) Then
                        If tbl(x, j) = sicil_veri Then
                            krt = tbl(1, j)
                            If Not dic2.exists(krt) Then
                                dic2(krt) = dic2.Count + 1
                                s = dic2.Count
                                s2.Cells(s + 2, 6) = krt
                            End If
                        End If
                    End If
                Next j
            Next x
        Next i
MsgBox "İşlem tamam.", vbInformation
End Sub
 

nongeyikm

Altın Üye
Katılım
7 Kasım 2005
Mesajlar
479
Excel Vers. ve Dili
Office 365 TR-64
Altın Üyelik Bitiş Tarihi
15-04-2025
Sn. Ziynettin Bey,

O küçük ayrıntıyı kaçırmışım Özür dilerim. Hata yapma riskime karşı ikinci makronuzu uyguladım. İnanın bana keyiften yüzümden tebessüm eksik olmuyor. Ben kurgusunu dahi yapamazken siz makrosunu yapmışsınız. Tek kelime ile muhteşemsiniz.

Dosyaya son bir eklenti daha yaptım. Bunu da yapabilirmiyiz. Bu konuda sizden son ricam bu.

Allah razı olsun.
 

Ekli dosyalar

nongeyikm

Altın Üye
Katılım
7 Kasım 2005
Mesajlar
479
Excel Vers. ve Dili
Office 365 TR-64
Altın Üyelik Bitiş Tarihi
15-04-2025
Ziynettin Bey merhaba,

13 nolu mesajdaki ricam ile ilgilenebilirmisiniz veya diğer üstadların zamanı var ise bakabilirler mi?
 

nongeyikm

Altın Üye
Katılım
7 Kasım 2005
Mesajlar
479
Excel Vers. ve Dili
Office 365 TR-64
Altın Üyelik Bitiş Tarihi
15-04-2025
Hayırlı sabahlar,

Konu ile ilgilenebilecek biri var mı acaba ?

Kolay gelsin,
 

Ziynettin

Destek Ekibi
Destek Ekibi
Katılım
18 Nisan 2008
Mesajlar
1,104
Excel Vers. ve Dili
office2010
Kod tamamen varsayım. "Yİ" kriteri ayın 1. de başlamış, 3 ile 10 arasında başlamış olsa haftalar nasıl olacak.

Kod:
Sub deneme()
Sheets("Listele").Select
a = Range("F3:F" & Cells(Rows.Count, "F").Row).Value
hft = DatePart("w", a(1, 1))
s = 2
    For i = 1 To UBound(a)
        If a(i, 1) <> "" Then
            If DatePart("w", a(i, 1)) = hft Then
                s = s + 1
                Cells(s, "I") = a(i, 1)
            End If
            If Cells(s, "I") < DateAdd("d", 6, Cells(s, "I")) Then
                Cells(s, "J") = a(i, 1)
            End If
            If Cells(s, "I") = Cells(s, "J") Then
                Cells(s, "K") = 1
            Else
                Cells(s, "K") = Cells(s, "J") - Cells(s, "I")
            End If
        End If
    Next i
End Sub
 

nongeyikm

Altın Üye
Katılım
7 Kasım 2005
Mesajlar
479
Excel Vers. ve Dili
Office 365 TR-64
Altın Üyelik Bitiş Tarihi
15-04-2025
3 ü pazara geldiği için toplam gün hesabında bir etkisi yok. Pazar gününden itibaren yıllık izin başlatılamaz. Çalışma günlerinde başlatılabilir. Zaten benim puantajımda pazar günlerinde "Yİ" yok. Toplam gün sayma işlemi sadece "Yİ" olan günleri sayarak elde ediliyor.


03.08.2014 04.08.2014 05.08.2014 06.08.2014 07.08.2014 08.08.2014 09.08.2014 10.08.2014 11.08.2014

03.08.2014 - 11.08.2014 7 gün

Saygılar,
 

nongeyikm

Altın Üye
Katılım
7 Kasım 2005
Mesajlar
479
Excel Vers. ve Dili
Office 365 TR-64
Altın Üyelik Bitiş Tarihi
15-04-2025
Hatta izin serilerindeki İzin bitiş tarihi serinin son tarihinden 1 gün sonra (yani işbaşı yapacağı gün) olsa çok daha iyi olur.
 

Ziynettin

Destek Ekibi
Destek Ekibi
Katılım
18 Nisan 2008
Mesajlar
1,104
Excel Vers. ve Dili
office2010
Umarım ki bu şekilde olur.

PHP:
Sub kod_1()
a = Range("F3:F" & Cells(Rows.Count, "F").End(3).Row).Value
On Error Resume Next

    trh_1 = a(1, 1)
    trh_2 = a(UBound(a), 1)
    son = trh_2 - trh_1
    ReDim b(1 To son + 1, 1 To 1)
        For i = 1 To son + 1
            trh_3 = DateAdd("d", i - 1, a(1, 1))
            If trh_3 Mod 7 <> 1 Then
                say = say + 1
                For j = 1 To UBound(a)
                    If trh_3 = a(j, 1) Then
                        b(say, 1) = trh_3
                    End If
                Next j
            End If
            
        Next i

    n = 1
    Set d = CreateObject("scripting.dictionary")
    ReDim c(1 To say, 1 To 2)
        For i = 1 To say
            If b(i, 1) <> "" Then
                c(i, 1) = n
            Else
                n = n + 1
            End If
            c(i, 2) = b(i, 1)
        Next i

    ReDim b(1 To UBound(c), 1 To 3)
        For i = 1 To say
            If c(i, 1) <> "" Then
                If Not d.exists(c(i, 1)) Then
                    d(c(i, 1)) = d.Count + 1
                    sat = d.Count
                    b(sat, 1) = c(i, 2)
                End If
                sat1 = d(c(i, 1))
                b(sat1, 2) = DateAdd("d", 1, c(i, 2))
                b(sat1, 3) = b(sat1, 3) + 1
            End If
        Next i

[i3].Resize(sat, 3) = b
MsgBox "işlem tamam.", vbInformation
End Sub
 
Son düzenleme:

nongeyikm

Altın Üye
Katılım
7 Kasım 2005
Mesajlar
479
Excel Vers. ve Dili
Office 365 TR-64
Altın Üyelik Bitiş Tarihi
15-04-2025
Ziynettin Bey hayırlı sabahlar,

Kontrol ettim tarih serileri doğru olarak çalışıyor. Sadece gün sayılarında hata yapıyor.
- 1 günlük izinler doğru
- Araya 1 pazar tatili giriyor ise yine doğru gün sayısını veriyor
- Araya 2 pazar tatili giriyor ise 1 gün fazla hesaplıyor.
- Araya 3 pazar tatili giriyor ise 2 gün fazla hesaplıyor.
- İzin tarih aralığı hafta içinde ise 1 gün eksik hesaplıyor.

Saygılar
 
Üst