Soru Koşullu Değer Atama

Katılım
13 Mayıs 2006
Mesajlar
38
Excel Vers. ve Dili
2019
Altın Üyelik Bitiş Tarihi
23-04-2023
Örnekte Paylaştığım excellde yapmak istediğim.
Mayıs 2022 sekmesinde yazdığım isim icmal'de ayın hangi günü ismi yazıyorsa ismine karşılık 24 yazdırmak istiyorum.
şimdiden bilgi paylaşımı yapanlara teşekkürler
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,243
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Deneyiniz.

C++:
Option Explicit

Sub Nobet_Yaz()
    Dim S1 As Worksheet, S2 As Worksheet, Veri As Range
    Dim Ad As Range, Gun As Byte, Gun_Bul As Range, Ad_Bul As Range
    
    Application.ScreenUpdating = False
    
    Set S1 = Sheets("MAYIS 2022")
    Set S2 = Sheets("İCMAL MAYIS")
    
    'S2.Range("C4:AG43").ClearContents
    
    For Each Veri In S1.Range("A4:H34").Columns(1).Cells
        If Veri.Value <> "" Then
            Gun = Day(Veri.Value)
            Set Gun_Bul = S2.Range("C3:AG3").Find(Gun, , , xlWhole)
            If Not Gun_Bul Is Nothing Then
                For Each Ad In Veri.Offset(, 1).Resize(1, 7)
                    If Ad.Value <> "" Then
                        Set Ad_Bul = S2.Range("B4:B43").Find(Ad.Value, , , xlWhole)
                        If Not Ad_Bul Is Nothing Then
                            S2.Cells(Ad_Bul.Row, Gun_Bul.Column).Value = 24
                        End If
                    End If
                Next
            End If
        End If
    Next

    Application.ScreenUpdating = True
    
    MsgBox "Nöbetler aktarılmıştır.", vbInformation
    
    Set S1 = Nothing
    Set S2 = Nothing
End Sub
 
Katılım
13 Mayıs 2006
Mesajlar
38
Excel Vers. ve Dili
2019
Altın Üyelik Bitiş Tarihi
23-04-2023
Deneyiniz.

C++:
Option Explicit

Sub Nobet_Yaz()
    Dim S1 As Worksheet, S2 As Worksheet, Veri As Range
    Dim Ad As Range, Gun As Byte, Gun_Bul As Range, Ad_Bul As Range
   
    Application.ScreenUpdating = False
   
    Set S1 = Sheets("MAYIS 2022")
    Set S2 = Sheets("İCMAL MAYIS")
   
    'S2.Range("C4:AG43").ClearContents
   
    For Each Veri In S1.Range("A4:H34").Columns(1).Cells
        If Veri.Value <> "" Then
            Gun = Day(Veri.Value)
            Set Gun_Bul = S2.Range("C3:AG3").Find(Gun, , , xlWhole)
            If Not Gun_Bul Is Nothing Then
                For Each Ad In Veri.Offset(, 1).Resize(1, 7)
                    If Ad.Value <> "" Then
                        Set Ad_Bul = S2.Range("B4:B43").Find(Ad.Value, , , xlWhole)
                        If Not Ad_Bul Is Nothing Then
                            S2.Cells(Ad_Bul.Row, Gun_Bul.Column).Value = 24
                        End If
                    End If
                Next
            End If
        End If
    Next

    Application.ScreenUpdating = True
   
    MsgBox "Nöbetler aktarılmıştır.", vbInformation
   
    Set S1 = Nothing
    Set S2 = Nothing
End Sub
Çok Teşekkürler İşimi gördü.
 
Katılım
13 Mayıs 2006
Mesajlar
38
Excel Vers. ve Dili
2019
Altın Üyelik Bitiş Tarihi
23-04-2023
Korhan Ayhan Bey. vermiş olduğunuz macro kodu çok işime yaradı ama birşey daha rica etsem kodu her çalıştırdığımda veri aktarılan alandaki eski verileri silip yeni veriye yazdırma şansımız var mı?? birde hafta içine denk gelen günler için 8 nasıl veri girişi sağlayabiliriz.
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,243
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Deneyiniz.

C++:
Option Explicit

Sub Nobet_Yaz()
    Dim S1 As Worksheet, S2 As Worksheet, Veri As Range
    Dim Ad As Range, Gun As Byte, Gun_Bul As Range, Ad_Bul As Range
    
    Application.ScreenUpdating = False
    
    Set S1 = Sheets("MAYIS 2022")
    Set S2 = Sheets("İCMAL MAYIS")
    
    S2.Range("C4:AG43").ClearContents
    
    For Each Veri In S1.Range("A4:H34").Columns(1).Cells
        If Veri.Value <> "" Then
            Gun = Day(Veri.Value)
            Set Gun_Bul = S2.Range("C3:AG3").Find(Gun, , , xlWhole)
            If Not Gun_Bul Is Nothing Then
                For Each Ad In Veri.Offset(, 1).Resize(1, 7)
                    If Ad.Value <> "" Then
                        Set Ad_Bul = S2.Range("B4:B43").Find(Ad.Value, , , xlWhole)
                        If Not Ad_Bul Is Nothing Then
                            S2.Cells(Ad_Bul.Row, Gun_Bul.Column).Value = IIf(Weekday(Veri.Value, vbMonday) >= 6, 24, 8)
                        End If
                    End If
                Next
            End If
        End If
    Next

    Application.ScreenUpdating = True
    
    MsgBox "Nöbetler aktarılmıştır.", vbInformation
    
    Set S1 = Nothing
    Set S2 = Nothing
End Sub
 
Katılım
13 Mayıs 2006
Mesajlar
38
Excel Vers. ve Dili
2019
Altın Üyelik Bitiş Tarihi
23-04-2023
Deneyiniz.

C++:
Option Explicit

Sub Nobet_Yaz()
    Dim S1 As Worksheet, S2 As Worksheet, Veri As Range
    Dim Ad As Range, Gun As Byte, Gun_Bul As Range, Ad_Bul As Range
   
    Application.ScreenUpdating = False
   
    Set S1 = Sheets("MAYIS 2022")
    Set S2 = Sheets("İCMAL MAYIS")
   
    S2.Range("C4:AG43").ClearContents
   
    For Each Veri In S1.Range("A4:H34").Columns(1).Cells
        If Veri.Value <> "" Then
            Gun = Day(Veri.Value)
            Set Gun_Bul = S2.Range("C3:AG3").Find(Gun, , , xlWhole)
            If Not Gun_Bul Is Nothing Then
                For Each Ad In Veri.Offset(, 1).Resize(1, 7)
                    If Ad.Value <> "" Then
                        Set Ad_Bul = S2.Range("B4:B43").Find(Ad.Value, , , xlWhole)
                        If Not Ad_Bul Is Nothing Then
                            S2.Cells(Ad_Bul.Row, Gun_Bul.Column).Value = IIf(Weekday(Veri.Value, vbMonday) >= 6, 24, 8)
                        End If
                    End If
                Next
            End If
        End If
    Next

    Application.ScreenUpdating = True
   
    MsgBox "Nöbetler aktarılmıştır.", vbInformation
   
    Set S1 = Nothing
    Set S2 = Nothing
End Sub
Hızlı cevabınız için Teşekkürler. benim istediğim çalışma günlerine denk gelen günlere 8 yazdırmak. ama anladığım kadarı ile öncelikle benim yılı ve ayı seçebileceğim bir yer oluşturup. şablonu otomatik yılı ve ayı seçince doldurmasını sağlatmak sonra da hafta sonuna denk gelmeyen yerleri kodda belirlemek. çünkü bu kodu ekleyince bazı kişilere 8 atadı bazılarına atamadı. hafta tatillerini görmedi.
kusura bakmayın anlamayınca sizi de yoruyorum ama olanaklı bir şey ise bana yardımı çok büyük olacak.
örnek dosyayı ekledim.https://dosya.co/anc4fo2uewgc/MAYIS_2022.xlsm.html
 
Katılım
13 Mayıs 2006
Mesajlar
38
Excel Vers. ve Dili
2019
Altın Üyelik Bitiş Tarihi
23-04-2023
Şablonu değiştirdim. kafamdaki olanı size aktarıp yardımlarınız rica ediyorum. örnekte paylaştığım excell tablosunda amacım çalışma günleri için 8 nöbet yazdığım günler için 24 veri girişi sağlamak icmal kısmına.
I5 satırını ayları j5 satırına da yılları ekledim. ben hangi ayı seçersem a4:a34 aralığına hangi yılsa o yılın ayının günlerini getirmek. aynı zamanda icmal kısmında c3:ag3 satırınında o aya ait günler olmasını sağlayıp hafta sonu ve tatil günlerini gri renge zemin rengini boyamak. sanırsam böylelikle veri girişi yaparsam nöbet yerine icmale daha doğru bir veri akışı olacak.
bunu nasıl yapabiliriz diye yardımlarınızı rica ediyorum.
https://dosya.co/39jkapjxs58n/MAYIS_2022.xlsm.html
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,243
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
1 Mayıs tarihinde yazdığınız LALE için görmek istediğiniz sonuç nedir?
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,243
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Zaten çıkış noktamız isimlere göre işlem yapmaktı.

İlk önerdiğim kod bu işlemi yapıyor.

Şimdi senaryo sanırım değişti. Net cevap verebilmem için örneklendirme yapmalısınız.

Sorduğum soruyu örnek dosyanız üzerinde elle doldurarak gösterirseniz sonuç için daha faydalı olacaktır.
 
Katılım
13 Mayıs 2006
Mesajlar
38
Excel Vers. ve Dili
2019
Altın Üyelik Bitiş Tarihi
23-04-2023
Zaten çıkış noktamız isimlere göre işlem yapmaktı.

İlk önerdiğim kod bu işlemi yapıyor.

Şimdi senaryo sanırım değişti. Net cevap verebilmem için örneklendirme yapmalısınız.

Sorduğum soruyu örnek dosyanız üzerinde elle doldurarak gösterirseniz sonuç için daha faydalı olacaktır.
Kusura bakmayın uğraştırdım. yapmaya çalıştığım şey
24 nöbet yazınca ertesi gün izinli çalışma yok
hafta içi nöbet yoksa 8
hafta sonu ve resmi tatillerde nöbet yoksa hiç birşey yazmıyorum.
I5 satırını ayları j5 satırına da yılları ekledim. ben hangi ayı seçersem a4:a34 aralığına hangi yılsa o yılın ayının günlerini getirmek. aynı zamanda icmal kısmında c3:ag3 satırınında o aya ait günler olmasını sağlayıp hafta sonu ve tatil günlerini gri renge zemin rengini boyamak
örnek dosyam
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,243
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Ekli dosyayı inceleyiniz.

Çalışmanıza resmi tatil sayfası ekledim. Tarihleri dilediğiniz gibi değiştirebilirsiniz.

Ay ve yıl seçiminize göre tarihler otomatik oluşmaktadır. Haftasonu gri renk olmaktadır. Resmi tatiller ise mavi renk olmaktadır.
 

Ekli dosyalar

Katılım
13 Mayıs 2006
Mesajlar
38
Excel Vers. ve Dili
2019
Altın Üyelik Bitiş Tarihi
23-04-2023
Ekli dosyayı inceleyiniz.

Çalışmanıza resmi tatil sayfası ekledim. Tarihleri dilediğiniz gibi değiştirebilirsiniz.

Ay ve yıl seçiminize göre tarihler otomatik oluşmaktadır. Haftasonu gri renk olmaktadır. Resmi tatiller ise mavi renk olmaktadır.
herşey için teşekkürler güzel olmuş.
sadece mayıs ayının 2-3-4 günü nöbet yazılanlara 8 atıyor.
hafta içi 8 yazınca o güne nöbet yazsam da 24 yazmıyor.
 
Katılım
13 Mayıs 2006
Mesajlar
38
Excel Vers. ve Dili
2019
Altın Üyelik Bitiş Tarihi
23-04-2023
Nöbet Hazırlama için bayağı ilerledim sayenizde Korhan Aydın son bir kaç şey daha aklımda var . Excell sayfasına başka bir paylaşımda bulduğum bir macro ekledim bununla otomatik kaç kişi varsa( I ) Hücresinde eşit sayı da dağıtım yaptırabildim. benim aklımdaki eşit sayı ve saat olarak dağıtımı otomatik yapabilirmiyiz. L6 Hücresin de listeden şeçtiğim kişiye ayın kaçına nöbet yazıldığını liste üzerinde altı kırmızı olarak nasıl seçtirebilirim. aldığım macroda bu vardı ama ben hücrelerin yerini değiştirince çalışmadı.iki örneğide upload ediyorum.

https://dosya.co/vt4ere2qct1l/NÖBET_ÇALIŞMASI.xlsm.html
https://dosya.co/qxbympraa42h/NOBET_CIZELGESI_-_Kopya_(1).xls.html
 
Katılım
13 Mayıs 2006
Mesajlar
38
Excel Vers. ve Dili
2019
Altın Üyelik Bitiş Tarihi
23-04-2023
L6 Hücresin de listeden şeçtiğim kişiye ayın kaçına nöbet yazıldığını liste üzerinde altı kırmızı olarak nasıl seçtirebilirim.
Halletim Bunu Koşullu Biçimlendirme ile
sadece eşit sayı ve saat kaldı. baya geliştirdi burası beni. teşekkürler kattığınız şeyler için
 
Katılım
13 Mayıs 2006
Mesajlar
38
Excel Vers. ve Dili
2019
Altın Üyelik Bitiş Tarihi
23-04-2023
bir soru daha :
=TAMİŞGÜNÜ.ULUSL(A4;A34;1;RESMİ_TATİLLER!A2:A69) bu formüllen aylık çalışma gününü bulup 8 çarpıp bir ayda kaç saat çalışılması gerektiğini buldurdum ama ayı değiştirince belirlediğim aralıktan az olunca ay mesala mayıs 31 gün haziran 30 olunca formül hata veriyor.ÇGS için bunu tüm sütuna kopyala diyince de olmadı tek tek yapmak dışında başka yöntem nedir?formülü icmal AM4 satırına yazıp AI4 satırından aşağı doğru yapmak istiyorum
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,243
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Deneyiniz.

AI4;
C++:
=8*TAMİŞGÜNÜ.ULUSL(NÖBET!A4;SERİAY(NÖBET!A4;0);1;RESMİ_TATİLLER!$A$2:$A$69)
 
Üst