Çözüldü Hücre değerine göre diğer sütunlara veri yazma

Katılım
9 Eylül 2010
Mesajlar
860
Excel Vers. ve Dili
2016&2019&2021 TR
Altın Üyelik Bitiş Tarihi
29-09-2023
Merhabalar hocalarım. Beni aşan bi mevzu da yardımlarınızı rica ediyorum. Ekteki dosyada açıklama yaptım umarım yeterli olur açıklama. Kısaca H1 de seçilen gruba göre diğer sütunlara veri yazdırmak istiyorum.
 

Ekli dosyalar

Katılım
9 Eylül 2010
Mesajlar
860
Excel Vers. ve Dili
2016&2019&2021 TR
Altın Üyelik Bitiş Tarihi
29-09-2023
Yardımcı olabilecek hocam var ise sayfa olayına değil de option buton ile yüpübilir miyiz bu işlemi.
 

Korhan Ayhan

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

Deneyiniz. Sayfanızın kod bölümüne uygulayınız.

H1 hücresindeki listeniz H sütunundaki verilerle birebir aynı olmaldır.

C++:
Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim Rng As Range
    
    If Intersect(Target, Range("H1")) Is Nothing Then Exit Sub
    
    Application.ScreenUpdating = False
    
    Select Case Target
        Case "1. Grup"
            With Range("$A$4:$T$" & Rows.Count)
                .AutoFilter Field:=8, Criteria1:=Target
                .AutoFilter Field:=16, Criteria1:="="
            
                Set Rng = Range("Q5:R" & Cells(Rows.Count, "H").End(3).Row).SpecialCells(xlCellTypeVisible)
                If Not Rng Is Nothing Then Rng.Value = "09:00"
            End With
        Case "2. Grup", "3. Grup"
            With Range("$A$4:$T$" & Rows.Count)
                .AutoFilter Field:=8, Criteria1:=Target
                .AutoFilter Field:=16, Criteria1:="="
            
                Set Rng = Range("T5:T" & Cells(Rows.Count, "H").End(3).Row).SpecialCells(xlCellTypeVisible)
                If Not Rng Is Nothing Then Rng.Value = "İstirahatli"
            End With
        Case "Müracaat", "DBK"
            With Range("$A$4:$T$" & Rows.Count)
                .AutoFilter Field:=8, Criteria1:=Target
                .AutoFilter Field:=16, Criteria1:="="
            
                Set Rng = Range("Q5:Q" & Cells(Rows.Count, "H").End(3).Row).SpecialCells(xlCellTypeVisible)
                If Not Rng Is Nothing Then Rng.Value = "09:00"
                Set Rng = Range("R5:R" & Cells(Rows.Count, "H").End(3).Row).SpecialCells(xlCellTypeVisible)
                If Not Rng Is Nothing Then Rng.Value = "18:00"
            End With
    End Select
    
    On Error Resume Next
    ActiveSheet.ShowAllData
    On Error GoTo 0

    Application.ScreenUpdating = True
End Sub
 
Katılım
9 Eylül 2010
Mesajlar
860
Excel Vers. ve Dili
2016&2019&2021 TR
Altın Üyelik Bitiş Tarihi
29-09-2023
Hocam zihninize sağlık. 1. Grup seçiminde çalışıyor. Ancak 2. grup seçildiğinde 1. grup için uygalanan işlemleri 2. grup için yapmasını istemiştim. Sanırım eksik anlatmışım.
3. grup seçildiğinde ise 1. grupta hangi işlemi yaptıysa aynı işlem uygulanacaktı. 1. grubu seçtiğimde 1. gruba saatler yazdırılacak. diğer gruplara istirahatli yazılacak. 2. grubu seçtiğimde 2 gruba saatler diğer iki gruba ise istirahatli yazılacaktı. 3. grup için de aynı koşullar gerekli. Sizin kodları çoğaltsam çözüm olabilir mi. Çözümünüz için tekrar teşekkürler.
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,190
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Denemekten zarar gelmez..
 
Katılım
9 Eylül 2010
Mesajlar
860
Excel Vers. ve Dili
2016&2019&2021 TR
Altın Üyelik Bitiş Tarihi
29-09-2023
Sn. Hocam denedim ve başaramadım. 1. Grup seçiminde 1. gruplara saat diğer gruplara ise istirahatli yazacak. 2. Grup seçiminde ise 2. gruba saat 1 ve 3 gruplara istirahatli yazacak. 3. grup seçiminde ise 3. gruba saat diğer gruplara ise istirahatli yazacak. her seferinde bir önceki seçimi sildirip tekrardan atama yapmamız mümkün müdür acaba.

1. Grup seçiminde diğer gruplara istirahatli yazdırabileceğimiz kodu yazabilirseniz sanırım çoğaltabilirim.
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,190
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
"P" sütunu boş ise koşulu vardı. Bu durumda o koşul iptal mi oldu?
 
Katılım
9 Eylül 2010
Mesajlar
860
Excel Vers. ve Dili
2016&2019&2021 TR
Altın Üyelik Bitiş Tarihi
29-09-2023
hayır hocam o koşul hala geçerli tüm gruplar için.
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,190
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
1. Grup seçimi için aşağıdaki kod bloğunu deneyiniz.

C++:
    Select Case Target
        Case "1. Grup"
            With Range("$A$4:$T$" & Rows.Count)
                .AutoFilter Field:=8, Criteria1:=Target
                .AutoFilter Field:=16, Criteria1:="="
            
                Set Rng = Range("Q5:R" & Cells(Rows.Count, "H").End(3).Row).SpecialCells(xlCellTypeVisible)
                If Not Rng Is Nothing Then Rng.Value = "09:00"
            
                .AutoFilter Field:=8, Criteria1:="<>" & Target
                .AutoFilter Field:=16, Criteria1:="="
            
                Set Rng = Range("T5:T" & Cells(Rows.Count, "H").End(3).Row).SpecialCells(xlCellTypeVisible)
                If Not Rng Is Nothing Then Rng.Value = "İstirahatli"
            End With
 
Katılım
9 Eylül 2010
Mesajlar
860
Excel Vers. ve Dili
2016&2019&2021 TR
Altın Üyelik Bitiş Tarihi
29-09-2023
Budur hocam. Çok teşekkür ederim. Peki 1. 2. ve 3. grupta olmayan personelin karşısına 09.00 18.00 saatlerini nasıl yazdırabiliriz.
 
Son düzenleme:
Katılım
9 Eylül 2010
Mesajlar
860
Excel Vers. ve Dili
2016&2019&2021 TR
Altın Üyelik Bitiş Tarihi
29-09-2023
Hocam tüm koşullara göre sayfaları düzenleyerek tekrar yükledim dosyayı. İlgilenebilirseniz müteşekkir olurum.
 

Ekli dosyalar

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,190
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Tüm koşulları sırasıyla adım adım yazar mısınız?
 
Katılım
9 Eylül 2010
Mesajlar
860
Excel Vers. ve Dili
2016&2019&2021 TR
Altın Üyelik Bitiş Tarihi
29-09-2023
Tabi ki hocam.
1. şart H1=1. Grup olduğunda P sütunu boş ise H sütununda 1. Grup yazan tüm personel için N ve O sütunlarına 09.00 yazılacak. 2. ve 3 gruplarda ise yine P sütunu boş ise T sütununa "İstirahatli" yazacak. H sütununda DBK yazan personel hariç geri kalan tüm personel için yine P sütunu boş ise N sütununa 09.00 O sütununa ise 18.00 yazacak.
2. şart H1=2. Grup olduğunda P sütunu boş ise H sütununda 2. Grup yazan tüm personel için N ve O sütunlarına 09.00 yazılacak. 1. ve 3 gruplarda ise yine P sütunu boş ise T sütununa "İstirahatli" yazacak. H sütununda DBK yazan personel hariç geri kalan tüm personel için yine P sütunu boş ise N sütununa 09.00 O sütununa ise 18.00 yazacak.
3. şart H1=3. Grup olduğunda P sütunu boş ise H sütununda 3. Grup yazan tüm personel için N ve O sütunlarına 09.00 yazılacak. 1. ve 2 gruplarda ise yine P sütunu boş ise T sütununa "İstirahatli" yazacak. H sütununda DBK yazan personel hariç geri kalan tüm personel için yine P sütunu boş ise N sütununa 09.00 O sütununa ise 18.00 yazacak.
H1 hücresinde her tetiklendiğinde verilerin silinerek yenilenmesi gerekiyor hocam.

Bir koşul daha var yapılabilirse I1=Tatil yazdığı zaman gruplar ve DBK dışında kalan tüm personelin N ve O sütunlarındaki saatler silinerek T sütununa "İstirahatli" yazılacak.
Umarım bu sefer anlatabilmişimdir. Sabrınız ve emekleriniz için Allah razı olsun.
Çok teşekkürler.
 
Katılım
9 Eylül 2010
Mesajlar
860
Excel Vers. ve Dili
2016&2019&2021 TR
Altın Üyelik Bitiş Tarihi
29-09-2023
Hocam çözümü yok mudur?
 
Katılım
9 Eylül 2010
Mesajlar
860
Excel Vers. ve Dili
2016&2019&2021 TR
Altın Üyelik Bitiş Tarihi
29-09-2023
Değerli hocalarım konu halen güncel😰
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,190
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
"Müracaat", "DBK" seçimleri için ne yapılacacak bunu belirtmemişsiniz? Gerçi sonradan farkettim bunlar zaten H1 hücresinden seçilemiyor.

Ayrıca "H1 hücresinde her tetiklendiğinde verilerin silinerek yenilenmesi gerekiyor hocam. " ifadenizden ne anlamalıyım?

Diyelim ki "1. Grup" seçildi işlemler yapıldı. Sonra 2. Grup" seçildi. Bu aşamada neler silinecek?
 
Katılım
9 Eylül 2010
Mesajlar
860
Excel Vers. ve Dili
2016&2019&2021 TR
Altın Üyelik Bitiş Tarihi
29-09-2023
"Müracaat", "DBK" seçimleri için ne yapılacacak bunu belirtmemişsiniz? Gerçi sonradan farkettim bunlar zaten H1 hücresinden seçilemiyor.
DBK için hiç bir koşulda işlem yapılmıyor hocam. Müracaat ve NBA yazanlar için ise N sütununa 09.00 O sütununa ise 18.00 yazılacak. I1 Tatil yazdığında ise "T sütununa "İzinli" yazılacak.
Ayrıca "H1 hücresinde her tetiklendiğinde verilerin silinerek yenilenmesi gerekiyor hocam. " ifadenizden ne anlamalıyım?
Hocam H1 hücresi değiştiğinnde

H1=1. Grup olduğunda P sütunu boş ise H sütununda 1. Grup yazan tüm personel için N ve O sütunlarına 09.00 yazılacak. 2. ve 3 gruplarda ise yine P sütunu boş ise T sütununa "İstirahatli" yazacak. H sütununda DBK yazan personel hariç geri kalan tüm personel için yine P sütunu boş ise N sütununa 09.00 O sütununa ise 18.00 yazacak.
H1=2. Grup olduğunda P sütunu boş ise H sütununda 2. Grup yazan tüm personel için N ve O sütunlarına 09.00 yazılacak. 1. ve 3 gruplarda ise yine P sütunu boş ise T sütununa "İstirahatli" yazacak. H sütununda DBK yazan personel hariç geri kalan tüm personel için yine P sütunu boş ise N sütununa 09.00 O sütununa ise 18.00 yazacak.
H1=3. Grup olduğunda P sütunu boş ise H sütununda 3. Grup yazan tüm personel için N ve O sütunlarına 09.00 yazılacak. 1. ve 2 gruplarda ise yine P sütunu boş ise T sütununa "İstirahatli" yazacak. H sütununda DBK yazan personel hariç geri kalan tüm personel için yine P sütunu boş ise N sütununa 09.00 O sütununa ise 18.00 yazacak.



Diyelim ki "1. Grup" seçildi işlemler yapıldı. Sonra 2. Grup" seçildi. Bu aşamada neler silinecek?
Hocam silinecek veri yok bunu yanlış yazmışım.
 

Korhan Ayhan

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

C++:
Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim Rng As Range
    
    If Intersect(Target, Range("H1,I1")) Is Nothing Then Exit Sub
    
    Application.ScreenUpdating = False
    
    Select Case Target
        Case "1. Grup"
            With Range("$A$4:$T$" & Rows.Count)
                .AutoFilter Field:=8, Criteria1:=Target
                .AutoFilter Field:=16, Criteria1:="="
            
                Set Rng = Range("N5:O" & Cells(Rows.Count, "H").End(3).Row).SpecialCells(xlCellTypeVisible)
                If Not Rng Is Nothing Then Rng.Value = "09:00"
            
                .AutoFilter Field:=8, Criteria1:="=2. Grup", Operator:=xlOr, Criteria2:="=3. Grup"
                .AutoFilter Field:=16, Criteria1:="="
            
                Set Rng = Range("T5:T" & Cells(Rows.Count, "H").End(3).Row).SpecialCells(xlCellTypeVisible)
                If Not Rng Is Nothing Then Rng.Value = "İstirahatli"
                
                .AutoFilter Field:=8, Criteria1:="=Müracaat", Operator:=xlOr, Criteria2:="=NBA"
                .AutoFilter Field:=16, Criteria1:="="
            
                Set Rng = Range("N5:N" & Cells(Rows.Count, "H").End(3).Row).SpecialCells(xlCellTypeVisible)
                If Not Rng Is Nothing Then Rng.Value = "09:00"
            
                Set Rng = Range("O5:O" & Cells(Rows.Count, "H").End(3).Row).SpecialCells(xlCellTypeVisible)
                If Not Rng Is Nothing Then Rng.Value = "18:00"
            End With
        Case "2. Grup"
            With Range("$A$4:$T$" & Rows.Count)
                .AutoFilter Field:=8, Criteria1:=Target
                .AutoFilter Field:=16, Criteria1:="="
            
                Set Rng = Range("N5:O" & Cells(Rows.Count, "H").End(3).Row).SpecialCells(xlCellTypeVisible)
                If Not Rng Is Nothing Then Rng.Value = "09:00"
            
                .AutoFilter Field:=8, Criteria1:="=1. Grup", Operator:=xlOr, Criteria2:="=3. Grup"
                .AutoFilter Field:=16, Criteria1:="="
            
                Set Rng = Range("T5:T" & Cells(Rows.Count, "H").End(3).Row).SpecialCells(xlCellTypeVisible)
                If Not Rng Is Nothing Then Rng.Value = "İstirahatli"
                
                .AutoFilter Field:=8, Criteria1:="=Müracaat", Operator:=xlOr, Criteria2:="=NBA"
                .AutoFilter Field:=16, Criteria1:="="
            
                Set Rng = Range("N5:N" & Cells(Rows.Count, "H").End(3).Row).SpecialCells(xlCellTypeVisible)
                If Not Rng Is Nothing Then Rng.Value = "09:00"
            
                Set Rng = Range("O5:O" & Cells(Rows.Count, "H").End(3).Row).SpecialCells(xlCellTypeVisible)
                If Not Rng Is Nothing Then Rng.Value = "18:00"
            End With
        Case "3. Grup"
            With Range("$A$4:$T$" & Rows.Count)
                .AutoFilter Field:=8, Criteria1:=Target
                .AutoFilter Field:=16, Criteria1:="="
            
                Set Rng = Range("N5:O" & Cells(Rows.Count, "H").End(3).Row).SpecialCells(xlCellTypeVisible)
                If Not Rng Is Nothing Then Rng.Value = "09:00"
            
                .AutoFilter Field:=8, Criteria1:="=1. Grup", Operator:=xlOr, Criteria2:="=2. Grup"
                .AutoFilter Field:=16, Criteria1:="="
            
                Set Rng = Range("T5:T" & Cells(Rows.Count, "H").End(3).Row).SpecialCells(xlCellTypeVisible)
                If Not Rng Is Nothing Then Rng.Value = "İstirahatli"
                
                .AutoFilter Field:=8, Criteria1:="=Müracaat", Operator:=xlOr, Criteria2:="=NBA"
                .AutoFilter Field:=16, Criteria1:="="
            
                Set Rng = Range("N5:N" & Cells(Rows.Count, "H").End(3).Row).SpecialCells(xlCellTypeVisible)
                If Not Rng Is Nothing Then Rng.Value = "09:00"
            
                Set Rng = Range("O5:O" & Cells(Rows.Count, "H").End(3).Row).SpecialCells(xlCellTypeVisible)
                If Not Rng Is Nothing Then Rng.Value = "18:00"
            End With
        Case "Müracaat", "NBA"
            With Range("$A$4:$T$" & Rows.Count)
                .AutoFilter Field:=8, Criteria1:=Target
                .AutoFilter Field:=16, Criteria1:="="
            
                Set Rng = Range("N5:N" & Cells(Rows.Count, "H").End(3).Row).SpecialCells(xlCellTypeVisible)
                If Not Rng Is Nothing Then Rng.Value = "09:00"
                Set Rng = Range("O5:O" & Cells(Rows.Count, "H").End(3).Row).SpecialCells(xlCellTypeVisible)
                If Not Rng Is Nothing Then Rng.Value = "18:00"
            End With
        Case "Tatil"
            With Range("$A$4:$T$" & Rows.Count)
                .AutoFilter Field:=8, Criteria1:="=Müracaat", Operator:=xlOr, Criteria2:="=NBA"
                .AutoFilter Field:=16, Criteria1:="="
            
                Set Rng = Range("N5:O" & Cells(Rows.Count, "H").End(3).Row).SpecialCells(xlCellTypeVisible)
                If Not Rng Is Nothing Then Rng.Value = ""
                
                Set Rng = Range("T5:T" & Cells(Rows.Count, "H").End(3).Row).SpecialCells(xlCellTypeVisible)
                If Not Rng Is Nothing Then Rng.Value = "İstirahatli"
            End With
    End Select
    
    On Error Resume Next
    ActiveSheet.ShowAllData
    On Error GoTo 0

    Application.ScreenUpdating = True
End Sub
 
Katılım
9 Eylül 2010
Mesajlar
860
Excel Vers. ve Dili
2016&2019&2021 TR
Altın Üyelik Bitiş Tarihi
29-09-2023
Merhabalar Korhan Bey maalesef şu an pc ye erişimim yok. Yarın sabah dönüş yapabilirim. Zihninize sağlık çok teşekkür ederim.
 
Katılım
9 Eylül 2010
Mesajlar
860
Excel Vers. ve Dili
2016&2019&2021 TR
Altın Üyelik Bitiş Tarihi
29-09-2023
Hocam zihninize sağlık. Eksik anlatım nedeniyle farklı olan kodları düzenlemeye çalışıyorum. Gayet işlevsel hale geldi şu an çok teşekkürler.
 
Üst