• DİKKAT

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

Girilen tarih aralığı dışındaki tablo satırlarının gizlenmesi

Katılım
10 Kasım 2006
Mesajlar
1,288
Excel Vers. ve Dili
Excel-2016
Değerli hocalarım..! Hayırlı Çalışmalar dileğiyle..
Ekli dosyada; alt-alta devam eden ve takvim günleri düzenine göre devam eden aylık çizelgeler mevcut.. Bu çizelgelerden çalışma yapılacak aralığın çıktısı alınıyor..

Fakat işi hızlandırmak için sayma ve hesaplama yapmadan, hücreye girilen başlama ve bitiş tarihleri arasında kalan bölümü alalım, bunun dışında kalan diğer tablo satırları (buton yardımıyla) gizlensin.. Konuya el atabilirseniz arkadaşlar, çok makbule geçecek.. (Ekli tabloda açıklama var..)
 

Ekli dosyalar

Öncelikle gizli satır varsa göstermek için 1 döngü kuruldu. Sonra şarta uymayan hücreler gizlenmek bir için de bir döngü kuruldu. 2 döngü olduğu için biraz yavaş çalışıyor.
iki döngüyü ayrı butonlara atarsanız daha hızlanabilir.
Kod:
Sub askm()
Dim son As Long
son = Range("A" & Rows.Count).End(xlUp).Row
On Error Resume Next
Application.ScreenUpdating = False
For i = 9 To son
    Rows(i).Hidden = False
Next i
For i = 9 To son
If CDate(Cells(i, 1)) < CDate(Range("M7")) Or CDate(Cells(i, 1)) > CDate(Range("N7")) Then
    Rows(i).Hidden = True
End If
Next i
Application.ScreenUpdating = True
MsgBox "İşlem tamam...", vbInformation, "ASKM"
End Sub
 
Çok değerli arkadaşlar.. Gerek sn.muygun, gerekse sn.askm; her ikinize de çok teşekkür ediyorum. Konu büyük oranda çözüldü.. Satır gizlenmesi konusunda, şöyle yapabilirsek daha iyi olacak.

1-Satır gizleme yapıldıktan sonra, tablo sonundaki toplam yazan satırdan sonra gelen boş satırı gizlememiş olursa daha iyi olacak..Yani tabloların arasını bölen boş satır gözüksün.

2-Sn.muygun un da el attığı formüller konusunda, iki ayrı sütunda yer alan karşılıklı saatler arasındaki farkı toplamak.. Örneğin, saat 08-12 arasında çalışacak ise bunun farkı 4 saat.. Maksat bu 4 saatleri toplamak.. Bu da ilk 15 günlük tabloda 40 saat etmesi gerekiyor..
 
Merhaba.

Sayın muygun'un eklediği belgeyi incelemedim.
Mevcut örnek belgeye göre; satır gizleme/gösterme işlemi için döngü kurmaya lüzum olmadığını düşünüyorum.
Aşağıdaki kodu deneyiniz.
.
Kod:
[B]Private Sub CommandButton1_Click()[/B]
If [M7] < [N7] And [O5] > 0 And WorksheetFunction.CountIf([A:A], [M7]) > 0 And _
                                WorksheetFunction.CountIf([A:A], [N7]) > 0 Then
    Application.ScreenUpdating = False
    [L:L].ClearContents
    Rows("10:" & Rows.Count).EntireRow.Hidden = False
    ilk = Cells(WorksheetFunction.Match([M7], [A:A], 0), 1).End(xlUp).Row
    If Cells(ilk + 1, 1) = "" Then ilk = ilk + 2
    son = Cells(WorksheetFunction.Match([N7], [A:A], 0), 1).End(xlDown).Row + 1
    Rows("10:" & Rows.Count).EntireRow.Hidden = True
    Rows(ilk & ":" & son).EntireRow.Hidden = False
    Application.ScreenUpdating = True
Else
    MsgBox "HATA :" & vbLf & vbLf & "-- Başlama ve Bitiş Tarihleri A sütununda mevcut bir tarih olmalıdır," & _
        vbLf & "-- Başlama tarihi, Bitiş tarihinden küçük olmalıdır.", vbCritical, "..:: Ömer BARAN ::.."
End If
Cells(ilk, 1).Activate
[B]End Sub[/B]
 
Saygıdeğer Ömer hocam.. Son derece esaslı olmuş, tam teşekkürlerimi sunuyorum. Ömer hocam, şöyle de, ayrıca bir durum var.. DSM ‘den gelen yazılarda, çalıştırılacak hükümlü için, şu tarihden şu tarihe kadar süre belirlediği gibi, ekseriyetle saat üzerinden gidiyor ve örneğin, şu tarihten itibaren şu kadar saat (mesela 650 saat gibi, her neyse..) çalıştırılması şeklinde..geliyor.

Bunun için çalıştırılacak saat, kaç güne tekabül ettiğini hesaplıyoruz ve ondan sonra tekabül ettiği tarih aralığını baz alıyoruz. Buna da saat hesaplama cinsinden pratik bir çözüm yolu bulunabilir mi? Zahmet olmazsa çok makbule geçecek..ve saymak için kullanmak istediğim formüllere de gerek kalmayacak.

Ben bunun için B sütunundaki başlama saatleri ile D sütunundaki mesai bitiş saati arasındaki farkları topluyorum ve zaman alıyor.. Saatleri hesaplayarak, tekabül ettiği tarih aralığını gösteren ikinci bir yöntemi de konumlandırabilirsek kusursuz olacak.. (ikinci bir buton yardımıyla başlama tarihi ve saatin girildiği hücre gibi..) başka bir yöntem düşünemedim.

Ömer bey, yazdığınız makronun uygulanmış şeklini aşağıya ekledim..
 

Ekli dosyalar

Son düzenleme:
Eklenen belge güncellendi.

Tekrar merhaba.

Ekli belgeyi inceleyin, deneyin.
Belgede küçük değişikler yaptım ve önceki kodu da buna göre güncelledim.
Saat hesabında istediğinizi tam olarak bilemediğimden L sütuna süre yazdırılıyor.
İsteğiniz böyle bir şey değilse, isteğinizi daha net olarak ifade ederseniz ve
olması gereken nihai hali, belgede elle veriler yazarak örneklendirirseniz kod güncellenebilir elbette.

Eklenen belge yenilendi. 29.04.2018 01:53

.
 

Ekli dosyalar

Son düzenleme:
Üstadım, tek kelimeyle olağanüstü..ve çok güzel tasarlamışsınız.. Ömer hocam, küçük bir nokta daha kaldı ki, olabilir mi diye düşünüyorum.

Çalışma saatleri, öğleden sonrasına sarkacak olursa; 12-13 öğlen arası 1 saatlik zaman, mesaiden sayılmıyor. Bu 1 saat, mesaiden düşülmesi lazım. Yani, 08-15 arası mesai 7 saat değil, 6 saat oluyor, veya tam mesai olduğunu varsayarsak 08-17 arası mesai 9 saat değil, 8 saat olarak hesaplanacak..

Ömer bey.. sizi çok meşgul edecekse gerek yok, bu haliyle yeteri kadar kolaylık sağlayacak.. Yardımların için Allah razı olsun, eline zihnine sağlık..
 
Son düzenleme:
Merhaba.

7 numaralı cevap ekindeki belge, son cevabınızdaki hususlar eklenerek ve küçük kod değişikliği yapılarak yenilendi.
7 numaralı cevap ekindeki belgeyi tekrar indirerek denemeler yapınız.
.
 
Ömer bey, tekrar tekrar teşekkürler.. Harika olmuş, görsel dizaynı ile birlikte kullanıma hazır hale getirmiş oldunuz.. Ellerin dert görmesin, yaşamında muvaffakiyetler dilerim..
 
Denetimli Serbestlik ile ilgili çok yerde, çok kamu görevlisinin yoğun işleri oluyor demek ki.
Çalıştırılma olayını bilmiyordum, öğrenmiş oldum.

Başarılar, iyi çalışmalar.
.
 
Aynen öyle.. Denetimli Serbestlik Müdürlüğünün, olur veren her kuruma, cezasının kalan kısmını muhtelif kurumlarda hizmet işlerinde tamamlamak üzere, Ekseriyetle bahçe, temizlik vb. işlerde çalıştırılmak üzere hükümlüler göndermektedir. (Bizde orman işletme müd.de olduğu gibi) Hükümlü, her mesai geliş gidişlerde bu yaptığımız takip devam çizelgelerine imza atmak zorunda ve DSM tarafından sık sık denetleniyor.

Aslında bu yaptığımız dosya, hükümlü çalıştıran her kurumda, hatta daha da önce DSM kurumunda çok kullanışlı olabilecek bir çalışma oldu..
 
Konuyla ilgili fikrimi belirteyim.

Belge ve yapının işleyişine ilişkin tercihler elbette sizin ama ben olsam;
-- Başka bir sayfaya veya ilgili sayfada uygun bir alana özel tatil günlerinin
(Yılbaşı, Dini Bayram, Milli Bayram gibi tarihler) listesini yazardım,
-- sol tarafta 800 satırlık günler tablosu yapıp, burada arama yaptırıp, gizlemek/göstermek yerine;
verilen tarihlere/gün sayıları ve saat bilgisine göre de sadece gerekli satırların oluşmasını sağlar,
-- Belgeyi tamamen formülsüz bir yapıya kavuştururdum.

Herneyse ihtiyacınız tam olarak görüldüğüne göre konu tamamlanmış oluyor.
.
 
Elbet.. bu konuda haklısınız.. özellikle bayram günlerini düşünmedim değil, ne var ki çok detaya veyahutta tam anlamıyla program olsun diye de amaç edinmedim. Çünkü kurumumda asli işim değildi, extradan üzerime kalan bir işti.. Bundan daha sonrasını gençler, veya bunu asli iş edinenler değerlendirebilir..diye düşünüyorum. Nitekim bu konularda paylaşımlarımı esirgemem..
 
Geri
Üst