Conditional Formatting
Bu bölümde Conditional Formatting(Bundan sonra CF olarak geçecek) işlemlerini baştan anlatmayacağım ve genel olarak ne işe yaradığını bildiğinizi varsayıyorum. Şimdi birkaç örnekle çeşitli püf noktalarına
ve az bilinen kullanım şekillerine bakalım.
Öncesinde, CF'ı sadece Greater/Less than veya Top/Bottom 10 şeklinde
değil, aşağıdaki diğer özellikleri de içerecek şekilde kullanmanızı
öneririm. Mesela, mükerrer(duplike) kayıtlarınızı bulmak için başka bir
sütuna COUNTIF formülü yazıp oraya ">1" filtresi uygulamak yerine doğrudan
Duplicate Values CF'ını uygulayabilir ve ilgili renge filtre koyabilirsiniz.
Veya ortalamanın altında/üstünde kalanları filtrelemek için bir yere ortalama
formül yazıp onunla karşılaştırma yapmanıza gerek yok, bunu direkt yapmanızı
sağlayan seçenekler de var. Özetle diğer seçenekleri de biraz kurcalayın
derim.
Yüzdesel eşikler belirleme
CF'da en sık karıştırılan konulardan biri, belirli yüzdesel eşiklerin
altını/üstünü formatlı göstermektir. Malesef
bana göre bu konuda Microsoft hatalı
yönlendirmede bulunmakta, daha doğrusu gerekli yönlendimeyi
yapmamaktadır. İşin doğrusunu öğrenene kadar bayağı bir araştırma yapmanız
gerekmektedir.
Örneğin aşağıdaki tabloda D kolonuna CF uygulayacacağız. Diyeceğiz ki
%100 ve üzerini en iyi olarak(yeşil ikon), %90-100 arasını orta(sarı
ikon), 90 altını da kötü(kırmızı ikon) olarak göster.
Aşağıdaki ikon stini uyguladım
CF, otomatik olarak 33 ve 67 şeklinde ayarladı. Ben gittim bunu 90
ve 100 olarak değiştirdim.
Sonuç şöyle:
Gördüğünüz gibi %100 ve üzerinde 6 bölge olmasına rağmen sadece birini
yeşil yaptı, 90-100 arası 1 bölge olmasına rağmen hiç sarı yapmadı.
Neden böyle oldu?
Çünkü Excel, buradaki verilerin en düşüğünü %0, en yükseğini %100
varsayarak yeni bir değer hesaplıyor ve onun üzerinden CF uyguluyor.
Zaten ilk başta %33 ve %67 diye otomatik ayırmasının sebebi de bu.
Değerleri %0 ve %100 arasında olacak şekilde diziyor, 3 dilim
belirliyor, ve rakamları bu 3 dilim içine yerleştiriyor.
Uygulanan formül şöyle:
=(D2-MIN(D:D))/(MAX(D:D)-MIN(D:D))
Buna göre hesaplanmış HG%ler E kolonundaki gibi oluyor ve bu
değerlere göre CF uygulandığında da sonuç gayet normal(!). %100 ve üzerinde
sadece 1 bölge var, 90-100 arasında ise hiç yok.
Bizim istediğimiz ise böyle birşey değildi. O yüzden Percent ifadesinin bizi yanıltmasına izin vermeyelim ve
Number seçeneğini aşağıdaki gibi ayarlayalım.
Sonuç:
Başka hücrelere göre göreceli referansla formatlama
Sıklıkla, formatlama işlemi komşu veya başka hücrelere göre yapılmaktadır.
Mesela format uygulayacağımız hücre bu yılın artış oranını, bir yan
hücre ise geçen yılın artış oranını veriyordur. Bu yılın artış oranı
geçen yılın artış oranından büyükse/küçükse şöyle şöyle formatla
diyebiliriz. Ancak burda bazı nüanslar var. Şimdi bunlara bakalım.
CF'da karıştırılan, anlaşılması zor olan bir konu da mutlak ve göreceli başvurulardır,
ki bu konu formüle dayalı CF'in can damarını oluşturmaktadır. Eğer bu
konu tam anlaşılamazsa CF de verimli ve etkin kullanılamaz.
Mutlak/Göreceli başvuru tipleri için buraya
bakabilirsiniz. Özetle CF dilinde "=$A$1", "=$A1", "=A$1" ve "=A1" tamamen farklı sonuçlar
üretir. Örnek üzerinden durumu açıklayalım.
Şimdi aşağıdaki tabloda Highlight Cell Rules>Greater Than
dedik ve değer olarak da E2 hücresini seçtik. Default olarak mutlak
başvuru yazıldı. Buna göre seçilen alandaki tüm hücrelerin E1'in
değerinden yani %81den büyük olmasına baktı. Mutlak başvuruda, CF
uygulanan hücrelerin karşılaştırma hücresine göre konumu önemsizdir ve
sabittir. Yani bu örnek için tüm hücreler için E1 hücresiyle
karşılaştırma yapılır.
Mutlak başvuru yerine göreceli başvuru yaparsak durumun nasıl
değiştiğini görelim. Bu sefer D3 hücresini E3 ile, D4'ü E4 v.s ile
karşılaştırır.
Burda yapılacak bir hata da şu olabilir. İlk CF'ı yaptınız ve mutlak
başvuru kullandığınızı farkettiniz, bunu düzeltmek yerine mevcudun üzerine
ikinci bir CF uygulayıp orada göreceli yaparsanız etkisi olmaz, çünkü
ilk CF ikincisini ezmiş olur. Zaten Rule Managera girince 2 tane
CF olduğunu da görebilirsiniz.
Burada ve
burada, birden fazla CF'ın öncelik işleyişi hakkında detaylı bilgi
bulunmaktadır.
Dikkat:Göreceli başvuruları, Icon setleri ve
Color Scale formatingle kullanamazsınız. Bunlarda nasıl biz çözüm
uygulanacağını bir sonraki örnekte bulabilirsiniz.
Icon setlerde göreceli başvuru kullanma(VBA içerir)
Aşağıdaki gibi bir tablomuz olsun. Bu, bir bankada çeşitli kalemlerde X bölge müdürlüğü ile bankanın toplam performansını karşılaştıran bir tablodur.
Bu tabloda Bölge Büyüme kolonu üzerinde, Bankadan büyükse yeşil bir tick
işareti olsun, sarı ve kırmızı ikon olmasın istiyoruz diyelim. Çünkü
yöneticimiz "çok renkli olunca kafam karışıyor, sadece iyileri görmek
yeterli" demiş olsun. Bunun için Conditional Formatting>Icon
Sets>Indicators'ten ilk seçenek tıklandığında karşımıza aşağıdaki ekran
gelir.
Bu ekranda aşağıdaki gibi sadece ilk kutu için ilgili hücreyi gireriz ve Type kutusuna da Number gireriz. Diğer iki kutuyu "No Cell Icon" yaparız.
OK dedikten sonra da "Applies to" kutusunu da hangi hücrelere uygulayacaksak
onları seçeriz.
Ancak iki üstteki resimde farkettiyseniz yeşil tick işareti koyduğumuz
alan için Value kutusuna $I$6 şeklinde mutlak başvuru girişi yaptık, zira
göreceli başvuryu(I6) Icon Setlerde girmeye izin vermiyor. Bu nedenle, Conditional kutusunu kapattıktan sonra ilgili hücrelere tek tek girip bu
Value alanını değiştirmemiz lazım. Ör:H7 hücresine gidip bunun için Value
alanını $I$7 yapmak gibi. Ancak değiştireceğiniz hücre sayısı çoksa ve
bunları tek tek değiştirmek istemiyorsanız, aşağıdaki VBA kodu ile de bunu
başarabilirsiniz(Makro bilmenin avantajları...)
Sub conditional_toplu()
'bu makroyu recorder ile kaydettim, sadece döngüyü ve Value kısmını elle değiştirdim
For Each c In Selection
c.Select
c.FormatConditions.Delete 'mevcuttaki conditionı silelim
c.FormatConditions.AddIconSetCondition
c.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
With Selection.FormatConditions(1)
.ReverseOrder = False
.ShowIconOnly = False
.IconSet = ActiveWorkbook.IconSets(xl3TrafficLights1)
End With
c.FormatConditions(1).IconCriteria(1).Icon = xlIconGreenCheckSymbol
With c.FormatConditions(1).IconCriteria(2)
.Type = xlConditionValueFormula
.Value = "=" & c.Offset(0, -2).Address 'bu kısmı kendim değiştirdim
.Operator = 7
.Icon = xlIconNoCellIcon
End With
With c.FormatConditions(1).IconCriteria(3)
.Type = xlConditionValueNumber
.Value = 1000000000000#
.Operator = 7
.Icon = xlIconNoCellIcon
End With
Next c
End Sub
Sonuç aşağıdaki gibi olacaktır.
İki kritere göre iki farklı format uygulamak
İkinci örneğimiz ilk örneğin hemen hemen aynısı, ancak bu sefer bir de pazar
büyümesi ile karşılaştırma kolonu var. Bundan sonraki kısım teknik bilgiden
ziyade, çözüm bulma beceresi ve biraz pratiklikle alakalı. Giriş sayfamda belirttiğim gibi bu sitede bu tür
çözüm önerilerini de buluyor olacaksınız. Şimdi diyelim ki yöneticiniz, bölgeyi banka ve pazarla karşılaştırmanızı
istemiş olsun. Bir hücrede aynı anda hem bölgeye hem pazara göre aynı
türde conditional formatting uygulayamıyoruz. Yani aynı anda hem
bankaya hem pazara göre icon set formatı uygulayamayız. Bu durumda önünüzde iki seçenek(benim
aklıma gelen) var,
1. seçenek: Bölge kolonunda, bankaya göre karşılaştırma için icon set
uygularken, pazara göre karşılaştırma için farklı bir formating
uygulanabilir(arkaplan rengini değiştirmek gibi)
2.seçenek: Conditional formattingi bölge kolonuna değil, banka ve pazar
kolonlarına uygulamak. Bölge, bankadan iyiyise banka kolonuna yeşil tick,
bölge pazardan iyiyse pazar kolonuna yeşil tick konur.
Ben örnek olsun diye ikisini birden uyguladım, tercih size kalmış. Tabiki ikisini aynı anda kullanmak anlamsız olur, ya birini ya
diğerini seçmeniz gerekecektir.
Formüllü CF Örnekleri
CF'i, girdiğimiz bir formülün doğru olması durumunda da uygulayabiliriz.
Yani girdiğimiz formül TRUE/FALSE döndürmelidir. Mesela aşağıdaki formül ile
Sayı olan tüm hücreler formatlanacaktır.
Aşağıda diğer formüllü örnekleri bulabilirsiniz. Ancak yukarda belirttiğimiz gibi mutlak ve göreceli başvuru tiplerinin ne olduklarını iyice içselleştirdikten sonra devam etmenizi öneririm. Zira bu örneklerin hepsinde mutlak ve göreceli başvuruların farklı kombinasyonları kullanılacak olup formüller biraz karmaşıklaşacaktır.
Mükerrer kayıtları bulma
Standart CF seçenekleri arasında "Duplicate Values" olduğunu biliyoruz.
Bununla mükerrer kayıtları(tüm satırı aynı) değil, sadece seçilen kolondaki
mükerrer datayı bulmuş oluyoruz. Halbuki veritabanı dilinde
Kayıt demek,
tüm bir satıra ait data demek. Örneğin aşağıdaki kayıtlar mükerrer iken,
Şu kayıtlar mükerrer değildir. (Sadece Müşteri No
datası mükerrerdir.)
Peki mükerrer kayıtları tüm satır şeklinde nasıl buluruz. Tabiki bir
formülle. Hemen bakalım.
Countifs'in 1. ve 3. parametresini mutlak başvurulu yaptım, sürekli aynı
yerde baksın diye. 2.ve 4.parametresini ise yarı mutlak yarı göreceli yaptım, kayarak
ilerlesin diye, ama sadece satırda kaysın, sürunda değil. Böylece örneğin 5.satırı kontrol ederken A2:A17 arasında
14023ten bi tane daha varmı diye bakacak ve aynı anda B2:B17 arasında
14023ün Kredi Kartı bi tane daha varmı diye bakmış olacak.
Tüm satır renklendirmesi istediğim için tüm alanı seçiyorum.
Gördüğünüz gibi en alttaki 18952 nolu müşteri de mükerrer olmasına rağmen
iki farklı ürün için datası bulunduğu için kayıt anlamında mükerrer değildir.
Sadece 15375 nolu müşteri mükerrer çımıştır.
NOT:C kolonundaki alan hiç değişmediği için bunu formüle dahil etmedim.
Mükerrer kayıtlardan sadece ilkini formatlama
Eğer mükerrer kayıtların tamamıyla değil de sadece ilkiyle
ilgileniyorsak, tarama sırasında kontrol bölgesinin de kayarak ilerlemesini
sağlamalıyız. Mesela aşağıdaki görüntüde 10.satırın tarama bölgesi A10:A25
olur. Neden? Çünkü A2:A17 olarak başladık, ama satırı göreceli verdik.
Dolayısıyla aşağı doğru indikçe satırlar da 1er 1er kayar. Yani ilk kayıt
olan 11670 için A2:A17'ye bakarken ikincisi için A3:A18'e bakar ve böylece
gider. Dolayısıyla mükerrer kaydı bulduktan sonra bi aşağıya kaydığı için o
kayıttan bidaha bulamamış olur. Bu örnekte 11.satırdaki 15375 için tarama
bölgesi A11:A26 olduğu için onun aynısına rastlayamamıştır ve
işaretlememiştir.
Mükerrer kayıtlardan ilki dışındakileri formatlama
Eğer mükerrer kayıtlardan, ilki dışındakilerle ilgilenmiyorsak bundaki tarama mantığı "İlk başı sabitle, sonra hücrenin kendisyle birlikte aşağı doğru kay" şeklinde olmalı. Yani ilk kayıt olan 11670'i A2:A2de arar, ikinci kayıt olan 11693ü A2:A3te,
böyle ilerlerken 10.kayda geldiğinde 15375i A2:A10'da aradı ve 1 tane buldu,
dolayısıyla işaretlemedi, 11.kayda geldiğinde 15375i A2:A11de aradı ve 2 tane
bulduğu için bunu işaretledi. Aşağılarda 3. bi eşleşme olsaydı onu da
işaretlerdi.
Belli bir kategorideki rakamların toplamı negatif/poziti mi kontrolü
Şimdi diyelim ki şöyle bir listemiz var.
Bu listede İndirim+İlave toplamı negatif mi diye kontrol edelim, toplamı negatif olan kayıtları işaretleyelim.
Tabi bunun yapmanın bir yolu da PivotTable yapıp, küçükten büyüğe sıralayıp en üstte negatif var mı diye bakmak olabilir,
veya başka yöntemler de kullanılabilir. Her zaman dediğimiz gibi, o an ihtiyacınızı hangi yöntem çözüyorsa onu kullanın. Biz şimdi
CF yöntemini kullanacağız.
Bunun için formüle dayalı CF uygular ve şu formülü yazarız:
ve A2:C17 alanına uygularız:
Sonuç:
Bölge ortalamasının altında kalan şubeleri formatlama
Şimdi diyelim ki şöyle bir listemiz var. Burada bölgenin ortalama HG%
oranından düşük HG%'li şubeleri renklendirmek istiyoruz ama şubenin HG%si
%100'ün üzerinde kalıyorsa renklenmesin. Mesela Bölge1'in HG% ortalaması %104
olup Şube2'nin renklenmemesi gerekiyor.
Formülümüzü aşağıdaki gibi yazıp ilerleyelim.
Uygulanacak alanı da seçelim.
Sonuç aşağıdaki gibi olacaktır.
TEST SORULARI
Son Sorumuz şuymuş:Bir metindeki tüm noktaları yoketmek istiyorsunuz. Hangi fonksiyonu kullanırdınız?
Soru:
A şıkkı:
B şıkkı:
C şıkkı:
D şıkkı:
Doğru Cevap
Etiketler
İlişkili konuyu seç
285552
Label
* Sorulara verilen yanlış cevaplardaki esprili yorumlarım için hoşgörünüze sığınıyorum.
* Test ve Ödevlerdeki bazı detaylar burada anlatılmamış olabilir. Bunları kendiniz araştırıp bulmalısınız.
* Birden çok konuya ait içeriği olan ödevler var. Algoritmik açıdan bakıldığında o an en uygun konuya adreslenmiştir.
Dikkat! Bir soruya cevap verdikten sonra geri dönemezsiniz.