Tablodaki isimleri aylara getirme

sahika51

Altın Üye
Katılım
28 Ekim 2006
Mesajlar
180
Excel Vers. ve Dili
2010-2019
Altın Üyelik Bitiş Tarihi
14-09-2027
İyi akşamlar. Bir nöbet programı yapıyorum. Tablo tamamlanınca H sütunundaki isimlerin bulunduğu satıra ilgili güne X işareti koysun. Ben Bir tane elle yaptım. Yardımcı olacak arkadaşlara şimdiden teşekkür ederim
 

Ekli dosyalar

ÖmerBey

Destek Ekibi
Destek Ekibi
Katılım
22 Ekim 2012
Mesajlar
4,396
Excel Vers. ve Dili
2007 Türkçe
Merhaba,
K3'e uygulayıp sağa ve aşağı çekerek çoğaltınız...
Kod:
=EĞER(YADA($H3="";EĞERSAY(KAYDIR($B$2;KAÇINCI(K$2;$B$3:$B$33;0);1;1;4);"*"&$H3&"*")=0);"";"X")
 

ÖmerBey

Destek Ekibi
Destek Ekibi
Katılım
22 Ekim 2012
Mesajlar
4,396
Excel Vers. ve Dili
2007 Türkçe
Buyurunuz...
Kod:
Sub kod()
r = Cells(Rows.Count, "H").End(3).Row
c = Cells(2, Columns.Count).End(1).Column
With Range(Cells(3, "K"), Cells(r, c))
    .Formula = "=IF(OR($H3="""",COUNTIF(OFFSET($B$2,MATCH(K$2,$B$3:$B$33,0),1,1,4),""*""&$H3&""*"")=0),"""",""X"")"
    .Value = .Value
End With
End Sub
 

sahika51

Altın Üye
Katılım
28 Ekim 2006
Mesajlar
180
Excel Vers. ve Dili
2010-2019
Altın Üyelik Bitiş Tarihi
14-09-2027
Buyurunuz...
Kod:
Sub kod()
r = Cells(Rows.Count, "H").End(3).Row
c = Cells(2, Columns.Count).End(1).Column
With Range(Cells(3, "K"), Cells(r, c))
    .Formula = "=IF(OR($H3="""",COUNTIF(OFFSET($B$2,MATCH(K$2,$B$3:$B$33,0),1,1,4),""*""&$H3&""*"")=0),"""",""X"")"
    .Value = .Value
End With
End Sub
Ömer Bey süpersiniz teşekkürler
 

sahika51

Altın Üye
Katılım
28 Ekim 2006
Mesajlar
180
Excel Vers. ve Dili
2010-2019
Altın Üyelik Bitiş Tarihi
14-09-2027
Arkadaşlar çizelgeyi hazırlarken şöyle bir sıkıntı farkettim. Eğer hafta sonu nöbet tutulmuyorsa cuma günü nöbet tutan kişiler yarım gün olduğu için 4 yazılması gerekiyor. ben bunu şöyle bir mantık kurarak denedim ama olmadı.
eğer hafta sonu toplamı boşsa 4 doluysa 8 olsun şeklinde mantık kurdum ama nöbet tutmayanlarada 4 getirdi. bunun için mevcut makro yeniden düzenlenebilirmi
 

Ekli dosyalar

ÖmerBey

Destek Ekibi
Destek Ekibi
Katılım
22 Ekim 2012
Mesajlar
4,396
Excel Vers. ve Dili
2007 Türkçe
Tekrar merhaba,
Bu bahsettiğiniz problem resmi tatillerin hafta içine denk geldiği günlerde de olacaktır. Örneğin Cuma günü tatil olduğunda Cuma da boş olacak ve Perşembe gününün yarım gün (4 saat) hesaplanması gerekecektir.
Bu yüzden bence hangi güne kaç saat yazılacağı bilgisini de dosyaya siz girerseniz daha sağlıklı hesaplama yapılabilir. Tablonuzu bir satır aşağı kaydırıp 3. satırı bunun için kullanabilirsiniz. 8 saat 4 saat ya da boş kalacağı bilgisini buraya girer formülle aldırırsınız.

Dosyanızın bu haliyle aşağıdaki formülü önerebilirim, fakat ayın son günlerinde hata oluşacaktır dilerseniz denersiniz.
Kod:
=EĞER(YADA($I3="";EĞERSAY(KAYDIR($B$2;KAÇINCI(L$2;$B$3:$B$33;0);1;1;4);"*"&$I3&"*")=0);"";EĞER(EĞERSAY(KAYDIR($B$2;KAÇINCI(L$2;$B$3:$B$33;0)+1;1;1;4);"*?")=0;4;8))

Formülün vba şekli:
"=IF(OR($I3="""",COUNTIF(OFFSET($B$2,MATCH(L$2,$B$3:$B$33,0),1,1,4),""*""&$I3&""*"")=0),"""",IF(COUNTIF(OFFSET($B$2,MATCH(L$2,$B$3:$B$33,0)+1,1,1,4),""*?"")=0,4,8))"
İyi çalışmalar...
 

sahika51

Altın Üye
Katılım
28 Ekim 2006
Mesajlar
180
Excel Vers. ve Dili
2010-2019
Altın Üyelik Bitiş Tarihi
14-09-2027
Ömer Bey teşekkür ederim. Dediğiniz gibi son günlerde sıkıntı oluyor. Ama yinede çok sağolun. Çok yardımcı oluyorsunuz.
 

ÖmerBey

Destek Ekibi
Destek Ekibi
Katılım
22 Ekim 2012
Mesajlar
4,396
Excel Vers. ve Dili
2007 Türkçe
Son günün altındaki boşluğa herhangi bir veri (mesela bir karakter boşluk) girerseniz hesaplama doğru olur ama bu sefer de makro kodlarınız fazladan veri üretir.
Ayrıca ayın son gününün tatil öncesine (mesela Cuma'ya) gelmesi durumunda muhakkak el ile müdahale etmeniz gerekecektir. Zira ertesi gün, yani sonraki ayın birinde yurtta öğrenci kalırsa 8 kalmazsa 4 yazması gerekir ki; bunu siz belirtmezseniz Excel asla bilemez.
Hangi gün kaç saat nöbet yazılacağını programa sizin girmeniz hesaplamanın sıhhati için daha iyi olacaktır.
İyi çalışmalar...
 
Üst