Nöbet listesinde olan kişilerin tarihlerini arka arkaya yazdırma

Katılım
12 Eylül 2012
Mesajlar
5
Excel Vers. ve Dili
2010
Türkçe
bir nöbet listem var buraya eklemek istiyorum. (Buraya ekleyemedim dış site link: http://s000.tinyupload.com/index.php?file_id=02040778323291534999

her gün 5 kişi, toplamda 25 farklı kişi 30 gün nöbet tutuyor.

listede bir kişinin tuttuğu nöbet günlerini yan yana yazdırmak istiyorum . Yani misal "Ahmet kişisi 2,4,11,18,23 mart nöbet tutuyor" gibi.

Dosya ekleyeceğim (Ekledim: http://s000.tinyupload.com/index.php?file_id=02040778323291534999 ). ctrl+f ile tek tek bulabiliyorum ama ekrana üstte yazdığım gibi yazdırmam lazım. o kadar veri arasından gözle bulma ve bunu her ay yapma zor oluyor. Yardımcı olana minnet duyarım.
 

veyselemre

Özel Üye
Katılım
9 Mart 2005
Mesajlar
3,647
Excel Vers. ve Dili
Pro Plus 2021
Kod:
Sub test()
    lst1 = Range("A5:G" & Cells(Rows.Count, 1).End(3).Row).Value2
    [J:J].ClearContents
    With CreateObject("Scripting.Dictionary")
        For i = 1 To UBound(lst1)
            For ii = 3 To 7
                ky = lst1(i, ii)
                If ky <> "" Then
                    .Item(ky) = .Item(ky) & "," & i
                End If
            Next ii
        Next i
        itms = .items
        kys = .keys
        For i = 0 To UBound(kys)
            Cells(i + 1, "J") = kys(i) & " : " & Mid(itms(i), 2) & " Mart Nöbetleri.."
        Next i
    End With
End Sub
 
Katılım
12 Eylül 2012
Mesajlar
5
Excel Vers. ve Dili
2010
Türkçe
Kod:
Sub test()
    lst1 = Range("A5:G" & Cells(Rows.Count, 1).End(3).Row).Value2
    [J:J].ClearContents
    With CreateObject("Scripting.Dictionary")
        For i = 1 To UBound(lst1)
            For ii = 3 To 7
                ky = lst1(i, ii)
                If ky <> "" Then
                    .Item(ky) = .Item(ky) & "," & i
                End If
            Next ii
        Next i
        itms = .items
        kys = .keys
        For i = 0 To UBound(kys)
            Cells(i + 1, "J") = kys(i) & " : " & Mid(itms(i), 2) & " Mart Nöbetleri.."
        Next i
    End With
End Sub

Hocam harikasınız çalıştı eksiksiz, 2 sorum var ;

1. Bunu excel'in komutları ile yapabilir miydik VBA kullanmadan?
2. Hafta içi hafta sonu ayrımı yapabilir miydik? Ahmet Hafta içi: 1,3,5,7 ( hangisi denk geldiyse), Hafta Sonu: 2,4,6,8 gibi)

Aslında oluşturduğum bu örnek excel dosyası sadece "örnekti" . for next döngüsü php den vesaire biliyorum uyarlarım diye düşündüm kendiminkine ama çözemedim. Özelden size asıl dosyayı atsam orada bana aynı dosyada ayrı bir sekmede bu denetimi yapıp yazdırmak üzere yardımcı olur musunuz? Dediğim gibi programlama dillerinin genel mantığına hakimim uyarlamaya kendim de çalışırım.
 
Son düzenleme:
Katılım
12 Eylül 2012
Mesajlar
5
Excel Vers. ve Dili
2010
Türkçe
sayarken o tarih hafta sonu ise sonuna parantez içinde (H) yazılsa ya da o tarih bold olsa o bile yeter bana . Bu arada kendi nöbet listeme uyarlamayı başardım.
 

veyselemre

Özel Üye
Katılım
9 Mart 2005
Mesajlar
3,647
Excel Vers. ve Dili
Pro Plus 2021
Kod:
Sub test()
    lst1 = Range("A5:G" & Cells(Rows.Count, 1).End(3).Row).Value2
    [J:J].ClearContents
    baslangic = CDate("01.03.2019")

    With CreateObject("Scripting.Dictionary")
        For i = 1 To UBound(lst1)
            Select Case Weekday(DateSerial(Year(baslangic), Month(baslangic), i), vbMonday)
            Case 6, 7: EK = "(H)"
            Case Else: EK = ""
            End Select
            For ii = 3 To 7
                ky = lst1(i, ii)
                If ky <> "" Then
                    .Item(ky) = .Item(ky) & ", " & i & EK
                End If
            Next ii
        Next i
        itms = .items
        kys = .keys
        For i = 0 To UBound(kys)
            Cells(i + 1, "J") = kys(i) & " : " & Mid(itms(i), 2) & " Mart Nöbetleri.."
        Next i
    End With
End Sub
 
Üst