Soru Koşullu Biçimlendirme ve Renk Saydırma

Katılım
4 Temmuz 2019
Mesajlar
46
Excel Vers. ve Dili
2010 Türkçe
Altın Üyelik Bitiş Tarihi
15-08-2020
Merhaba arkadaşlar,

Ben bir süredir yaptığım bir uygulamayı nihayetlendirmek üzereyim ancak uygulama dahilinde çalışanların yıllık izin hakedişlerine yönelik gelecek tarihler için koşullu biçimlendirme ile
Kod:
=BUGÜN()=TARİH(2019;8;16)
şeklinde bir formül kullanarak hücreleri renklendirdim. Hakediş günü gelince o kişinin karşısındaki hücre renk değiştiriyor. Eski tarihler için direk kendim dolgu rengi ile renklendirdim. Ve yıl sonu izinlerinde hesaplama yaparken renk saydırdım ancak koşullu biçimlendirme ile oluşan renkleri saymıyor bir türlü.

Sitede benzer konuları tek tek inceledim ancak tam olarak istediğimi bulamadım.
Formda şu şekilde aktarılan bilgiler mevcut.

Bildiğim kadarıyla yerleşik işlevlerin kullanıldığı formüllerle RENK işlemi yapılamıyor.
Bunun için VBA kod'ları veya KTF oluşturulması gerekiyor.

Yerleşik işlevlerle sayma yapmak için ise kullanılan koşullu biçimlendirme formülünü değerlendirmek ve
ona göre formül oluşturmak gerekir.
Koşul sonucu renklenen hücrelerin arka plan rengi aslında değişmemektedir. Bu sebeple bu renkleri saydırabilmek için özel fonksiyon yazmak gerekmektedir. Bu foksiyonda da sizin oluşturmuş olduğunuz koşullar sorgulanacağı için bence buna gerek yoktur. Bunun yerine rengi gözardı edip sizin koşullarınızı formül içine adapte ederek sayma işlemleri yaptırılabilir.

Yukarıdaki arkadaşların da yazdığı gibi formüle göre kod yazmak gerekiyor anladığım kadarıyla.

Çalışmamın benzer bir örneğini sadeleştirip ekledim ve daha detaylı açıkladım. İnceleyip yardımcı olursanız sevinirim.
 

Ekli dosyalar

Katılım
6 Mart 2005
Mesajlar
6,238
Excel Vers. ve Dili
Excel Vers. ve Dili:
Office 2016 TR 64 Bit
Altın Üyelik Bitiş Tarihi
22/12/2022
Koşullu biçimlendirme dolgu renklerini saydırmak için aşağıdaki kalıbı kullanmalısınız.(örn DisplayFormat.Interior.ColorIndex=3 gibi)

Kod:
DisplayFormat.Interior.ColorIndex
 
Katılım
4 Temmuz 2019
Mesajlar
46
Excel Vers. ve Dili
2010 Türkçe
Altın Üyelik Bitiş Tarihi
15-08-2020
Koşullu biçimlendirme dolgu renklerini saydırmak için aşağıdaki kalıbı kullanmalısınız.(örn DisplayFormat.Interior.ColorIndex=3 gibi)

Kod:
DisplayFormat.Interior.ColorIndex
Benim renk saydırdığım kod şu şekilde:
Kod:
Function Renkli_Hucreleri_Say(bolge As Range, Hangi_Rengi_sayacagim As Range) As Long
    Dim xcolor As Long
    xcolor = Hangi_Rengi_sayacagim.Interior.ColorIndex
    For Each datax In bolge
        If datax.Interior.ColorIndex = xcolor Then
            Renkli_Hucreleri_Say = Renkli_Hucreleri_Say + 1
        End If
    Next datax
End Function
Ben göndermiş olduğunuz kalıbı içerisine ekleyip aşağıdaki şekilde düzenlediğim de bu sefer #DEĞER! hatası alıyorum.
Kod:
Function Renkli_Hucreleri_Say(bolge As Range, Hangi_Rengi_sayacagim As Range) As Long
    Dim xcolor As Long
    xcolor = Hangi_Rengi_sayacagim.Interior.ColorIndex
    For Each datax In bolge
        If DisplayFormat.Interior.ColorIndex = xcolor Then
            Renkli_Hucreleri_Say = Renkli_Hucreleri_Say + 1
        End If
    Next datax
End Function
Vermiş olduğum renk saydırma kodunu hatayı almamam için nasıl düzenlemem gerekiyor?
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
41,452
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Önerilen kod sizin renk fonksiyonu içinde çalışmaz.

Benim yaptığım daha önceki açıklamadaki gibi tarihle ilgili koşulları saydırabilirsiniz.
 
Katılım
4 Temmuz 2019
Mesajlar
46
Excel Vers. ve Dili
2010 Türkçe
Altın Üyelik Bitiş Tarihi
15-08-2020
Önerilen kod sizin renk fonksiyonu içinde çalışmaz.

Benim yaptığım daha önceki açıklamadaki gibi tarihle ilgili koşulları saydırabilirsiniz.
Sizin açıklamanızı da uyguladım ama hata verdi.

Benim uygulamamda şöyle bir formül var:
=TOPLA(ÇARPIM(Renkli_Hucreleri_Say(Q31:OB31;OD31);OD31)+(K31-(Renkli_Hucreleri_Say(Q31:OB31;OE31:OI31))))

Ben sizin göndermiş olduğunuz makroları ekleyipte formülü aşağıdaki gibi değiştirdiğimde sonuç ya 0 çıkıyor ya da #DEĞER! hatası veriyor
=TOPLA(ÇARPIM(KB_RENKSAY(Q31:OB31;OD31);OD31)+(K31-(KB_RENKSAY(Q31:OB31;OE31:OI31))))
ama doğru sonuç 16 çıkmalı mesela. Yani dolgu rengini kendim verdiğimde 16 çıkıyor dolgu rengi olmayınca da diyelim ki 2 olması gerekirken her şekilde 0 çıkıyor
 
Katılım
4 Temmuz 2019
Mesajlar
46
Excel Vers. ve Dili
2010 Türkçe
Altın Üyelik Bitiş Tarihi
15-08-2020
Arkadaşlar uzun bir süredir araştırıyorum ama maalesef henüz bir çözüm bulamadım.

Yardımcı olursanız çok sevinirim.
 

ynstcrt

Altın Üye
Katılım
21 Mart 2021
Mesajlar
75
Excel Vers. ve Dili
Office 2010 - Türkçe
Altın Üyelik Bitiş Tarihi
05-12-2024
İyi günler iyi çalışmalar.
Ben de aynı sıkıntıyı yaşıyorum. Bunun çözümü nedir acaba. 2010 versiyon kullandığım için DisplayFormat.Interior.ColorIndex çalışmıyor.
 

Korhan Ayhan

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

DisplayFormat.Interior.ColorIndex komutu 2010 sürümde çalışması gerekir. Bu komut KTF dediğimiz kullanıcı tanımlı fonksiyonlarda çalışmamaktadır.

KTF yerine normal makro kodu ile sonuç alabilirsiniz.

C++:
Option Explicit

Sub Count_Cells_Colored_With_Conditional_Formatting()
    Dim Rng As Range, Count As Long
   
    For Each Rng In Sheets("Sheet1").Range("A1:Z1000")
        If Rng.DisplayFormat.Interior.ColorIndex = 6 Then
            Count = Count + 1
        End If
    Next
   
    MsgBox "Alandaki sarı renkli hücre sayısı ; " & Format(Count, "#,##0")
End Sub
Ek olarak linki incelebilirsiniz.

 
Üst