• DİKKAT

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

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

Katılım
9 Eylül 2010
Mesajlar
879
Excel Vers. ve Dili
2016&2019&2021 TR
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

Yardımcı olabilecek hocam var ise sayfa olayına değil de option buton ile yüpübilir miyiz bu işlemi.
 
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
 
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.
 
Denemekten zarar gelmez..
 
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.
 
"P" sütunu boş ise koşulu vardı. Bu durumda o koşul iptal mi oldu?
 
hayır hocam o koşul hala geçerli tüm gruplar için.
 
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
 
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:
Hocam tüm koşullara göre sayfaları düzenleyerek tekrar yükledim dosyayı. İlgilenebilirseniz müteşekkir olurum.
 

Ekli dosyalar

Tüm koşulları sırasıyla adım adım yazar mısınız?
 
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.
 
Değerli hocalarım konu halen güncel?
 
"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?
 
"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.
 
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
 
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.
 
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.
 
Geri
Üst