• DİKKAT

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

3 şarta göre filtrele

mcetinkaya65

Altın Üye
Katılım
1 Mart 2011
Mesajlar
490
Excel Vers. ve Dili
2021 türkçe
İzin izlenimim sayfasıdan Rapor sayfasına aktarma.
1 Başlangıç ve bitiş tarihleri arasında hastalık izni alan var ise
2 Geçmiş aylarda alınan izinleri C stununda
3 Bu ay alınan izinleri D stununda göstermesi
4 Başlangıç tarihinden önce başlayıp başlangıç tarihinden sonra biten izin var ise
Öncesini geçmiş aya sonrasını bu aya
5 Bitiş tarihinden sonra bitecek iznide,tarih arasını bu aya
Hesaplatmamız mümkünmü?

Saygılarımla..
 

Ekli dosyalar

Eğer 4 ve 5 sorular mümkün değilse 1 2 3 soruları boş bir sayfaya iznin başlangıç ve bitiş tarihleriyle birlikte aktarması mümkünmü?
 
Eğer 4 ve 5 sorular mümkün değilse 1 2 3 soruları boş bir sayfaya iznin başlangıç ve bitiş tarihleriyle birlikte aktarması mümkünmü?

Merhaba ekteki kodları module kopyalayıp denermiisniz.


Kod:
Sub hastalık()
Set s1 = Sheets("izin izlenimi")
Set s2 = Sheets("Rapor")
s2.Range("B10:D44").ClearContents
sat = 10
For i = 3 To s1.Cells(Rows.Count, 1).End(3).Row
Adet = WorksheetFunction.CountIf(s2.Range("B10:B44"), s1.Cells(i, 1).Value)
If CDate(s1.Cells(i, 4).Value) >= CDate(s2.Cells(3, 5).Value) And CDate(s1.Cells(i, 4).Value) <= CDate(s2.Cells(4, 5).Value) Then
If Adet = 0 And s1.Cells(i, 11).Value > 0 Then
s2.Cells(sat, 2).Value = s1.Cells(i, 1).Value
sat = sat + 1
End If
End If
Next

For x1 = 10 To s2.Cells(Rows.Count, 2).End(3).Row
For x2 = 3 To s1.Cells(Rows.Count, 1).End(3).Row
If s1.Cells(x2, 1).Value = s2.Cells(x1, 2).Value And s1.Cells(x2, 11).Value > 0 Then
If CDate(s1.Cells(x2, 4).Value) < CDate(s2.Cells(3, 5).Value) Then
s2.Cells(x1, 3).Value = s2.Cells(x1, 3).Value + s1.Cells(x2, 11).Value

Else

For x3 = s1.Cells(x2, 3).Value To s2.Cells(3, 5).Value - 1
geçenay = geçenay + 1
Next x3
s2.Cells(x1, 3).Value = s2.Cells(x1, 3).Value + geçenay
s2.Cells(x1, 4).Value = s2.Cells(x1, 4).Value + (s1.Cells(x2, 11).Value - geçenay)
geçenay = 0
End If
End If
Next x2, x1

End Sub
 
Son düzenleme:
Sayın Hüseyinkis bey;
İlginize teşekkür ederim.Sağ olun var olun.
 
Kıymetli kardeşm,
16.07.2021-15.08.2012 tarihini yazıp butona tıkladığımızda istenilen sonucu vermiyor.Bitiş tarihinden sonra biten izinleri listelemiyor.Geçmişe uygulanan mantık çok güzel başlangıç tarihi öncesini geçmiş aya başlangıç tarihi sonrasını bu aya atıyor.bitişe de bu mantık uygulanamaz mı ?
Bir görevli yılda 7 gün hastalık izni alabilir.Fazla alırsa yan ödemesinden aldığı izin kadar düşülüyor.Bunun için istenilen tarihler arasında ki hastalık izinlerini bu aya,bu ayı bir sonraki aya taşan kısmını ayırması mümkünmü?Geçmişi geçmiş aya şu an ki hali ayırıyor.
Örnek:
Yurdakul isimli memurumuz 26.07.2012-24.08.2012 tarihleri arasında 30 gün hastalık izni almış. 16.07.2021-15.08.2012 tarihi arasında 21 gün izinli gösterilmesi gerekirken göstermiyor.
Saygılarımla..
 

Ekli dosyalar

Son düzenleme:
İşlemin %70 çözüldü.Yukardaki makroya ne ekleyelim ki bu Ay Kullandığı Hastalık İzin Süresi stununa sadece başlangıç ve bitiş tarihleri arasındaki kullanılan izinleri göstersin.
Saygılarımla..
 
Merhaba ekteki kodları denermisiniz konu biraz karıştı ve grip ile savaştığım için fazla ilgilenemiyorum baska hata ile karşılaşırsanız kodları baştan duzenlemeye gidebilirim.

Kod:
Sub hastalık()
Set s1 = Sheets("izin izlenimi")
Set s2 = Sheets("Rapor")
s2.Range("B10:D44").ClearContents
sat = 10
For i = 3 To s1.Cells(Rows.Count, 1).End(3).Row
Adet = WorksheetFunction.CountIf(s2.Range("B10:B44"), s1.Cells(i, 1).Value)
If CDate(s1.Cells(i, 4).Value) >= CDate(s2.Cells(3, 5).Value) And Month(s1.Cells(i, 4).Value) <= Month(s2.Cells(4, 5).Value) Then
If Adet = 0 And s1.Cells(i, 11).Value > 0 Then
s2.Cells(sat, 2).Value = s1.Cells(i, 1).Value
sat = sat + 1
End If
End If
Next

For x1 = 10 To s2.Cells(Rows.Count, 2).End(3).Row
For x2 = 3 To s1.Cells(Rows.Count, 1).End(3).Row
If s1.Cells(x2, 1).Value = s2.Cells(x1, 2).Value And s1.Cells(x2, 11).Value > 0 Then
If CDate(s1.Cells(x2, 4).Value) < CDate(s2.Cells(3, 5).Value) Then
s2.Cells(x1, 3).Value = s2.Cells(x1, 3).Value + s1.Cells(x2, 11).Value

Else

For x3 = s1.Cells(x2, 3).Value To s2.Cells(3, 5).Value - 1
geçenay = geçenay + 1
Next x3

If s1.Cells(x2, 4).Value > s2.Cells(4, 5).Value Then
Gunf = CDate(s1.Cells(x2, 4).Value) - CDate(s2.Cells(4, 5).Value) - 1
End If
s2.Cells(x1, 3).Value = s2.Cells(x1, 3).Value + geçenay
s2.Cells(x1, 4).Value = s2.Cells(x1, 4).Value + (s1.Cells(x2, 11).Value - geçenay) - Gunf
geçenay = 0
Gunf = 0
End If
End If
Next x2, x1

End Sub
 
[Huseyinkis]Merhaba ekteki kodları denermisiniz konu biraz karıştı ve grip ile savaştığım için fazla ilgilenemiyorum baska hata ile karşılaşırsanız kodları baştan duzenlemeye gidebilirim.

Kıymetli kardeşim ilginize çok teşekkür ederim.Allah hastalığınızada acil şifa versin.Sizin önceki makronuzu anahtar yapıp bir takvim tablosu oluşturup,
=EĞER(TOPLA.ÇARPIM(('izin izlenimi'!$A$2:$A$2000=Rapor!$B10)*('izin izlenimi'!$C$2:$C$2000<=Rapor!F$8)*('izin izlenimi'!$O$2:$O$2000>=Rapor!F$8));"X";"") formülüyle çözdüm.
Hepinizden Allah razı olsun.
 
Sayın hüseyinkis bey
Teşekkürler.
Saygılarımla..
 
Son düzenleme:
Sayın Hüseyinkis bey;
İyi akşamlar,
Örnek dosyayı sizin kodlarınızdan esinlenerek hazırladım.2012 yılı için problem yoktu.2013 yılında ise geçen aylarda kullandığı bölümü 2012 de ve 2013 kullanılanların hepsini topluyor.
1.Sadece 2013 görmesi
2.2012 de başlayıp 2013 de biten raporların sadece 2013 ayağını hesaplaması

Dosyanın orjinali yaklaşık 4,5 mb olduğu için sadece lazımolan kısmı gönderiyorum.

Saygılarımla..
 

Ekli dosyalar

Son düzenleme:
Ekli dosyada rapor sayfasına bir stun daha ekleyip,herhangi bir hücreyede hesaplatmak istediğimiz yılı yazsak topla.çarpım formülüyle yapamazmıyız.
1.Sadece 2013 görmesi
2.2012 de başlayıp 2013 de biten raporların sadece 2013 ayağını hesaplaması
saygılaımla..
 
Geri
Üst