Çözüldü Makro İle Dinamik Koşullu Biçimlendirme

PriveT

İlyas PINAROĞLU
Yönetici
Excel Versiyonu
Excel 2016
Excel Sürümü
64 Bit
Excel Dili
Türkçe
Makro üstadlarım merhaba,
Formüller yardımıyla yaptığım koşullu biçimlendirmede araya satır kopyala yapıştır yapınca aksaklıklar yaşıyorum.
Bu yüzden yardımınıza ihtiyacım var.

Yapmak istediklerim 2. satırdan son dolu satıra (yardımcı sütun kullanılmadan);
  1. B sütunundaki verilere göre satırlarda sadece tek renk ve dolgusuz olacak şekilde gurupsal renklendirmek. (Ben bunu K sütununu yardımcı sütun olarak kullanarak yaptım.)
  2. F sütununda yer alan hücredeki tarih 27.07.2021 tarihinden büyükse J sütununun ilgili hücresine "AHM'DEN" yazdırmak.
  3. C, D ve I sütununda yinelenen hücreleri vurgulamak.
  4. G sütunundaki bir hücrede tarih var ise o satırı gri renklendirip tablonun sonuna taşımak. (Bu durumda 1 numaralı biçimlendirme iptal olacak ama 2 numaralı biçimlendirme aktif görevine devam edecek)
  5. Bazı durumlarda satırdaki font rengini değiştiriyorum. (örnek: 18. satır) Mümkünse makro bu font renklerimi etkilemeyecek.
  6. Bu madde o kadar önemli değil, olmasa da olur. 4. maddeye göre sona taşınan satırlar kendi aralarında G sütununa göre Eskiden Yeniye şeklinde tablonun sonunda sıralanacak.
Yardımlarınız için şimdiden teşekkürler.
 

Ekli dosyalar

Merhabalar Sn. @PriveT

Belirttiğiniz maddelere göre parça parça kod oluşturunca biraz uzun oldu.
Dosyadaki Kayıt sayısı çoğaldıkça, koddaki döngülerden dolayı kodun işlemi tamamlama süresi uzun olacaktır.

Aşağıdaki kodları modül ya da ilgili sayfanın kod bölüme ekleyip, buton ya da herhangi bir nesneye makro olarak atayınız.

VBA:
You must log in to view content
(90 satır)
 
Moderatörün son düzenlenenleri:
Merhabalar Sn. @PriveT

Belirttiğiniz maddelere göre parça parça kod oluşturunca biraz uzun oldu.
Dosyadaki Kayıt sayısı çoğaldıkça, koddaki döngülerden dolayı kodun işlemi tamamlama süresi uzun olacaktır.

Aşağıdaki kodları modül ya da ilgili sayfanın kod bölüme ekleyip, buton ya da herhangi bir nesneye makro olarak atayınız.

VBA:
You must log in to view content
(90 satır)

Emeğinize sağlık. Müsait olur olmaz kontrol edip sonuç bildirimi yapacağım.
 
Sayın @AhmetRasim ,
İncelediğim kadarıyla;
  • 1. satırdaki başlık satırı da sıralamaya dahil edilmiş,
  • Gurup biçimlendirmesi G sütununa kadar olmuş.
  • Dinamik olmamış. İşlem yaptıkça güncellenmiyor. (Büyük bir sorun değil. )
  • Evet, 300 satırda işlem 8-10 saniye kadar sürüyor.
 
- Başlıklar, Sıralamaya dahil ama satırı değişmiyor.
- İşlem yaptıkça çalışması için kodları Worksheet_Change bölümüne alabiliriz.
- "Gurup biçimlendirmesi G sütununa kadar olmuş" kısmını anlamadım açıkçası, nasıl bir hata oluşuyor.
Kodu çalıştırdığım zaman Örnek dosyadaki koşullu biçimlendirme ile aynı sonucu veriyor.
 
- Başlıklar, Sıralamaya dahil ama satırı değişmiyor.
- İşlem yaptıkça çalışması için kodları Worksheet_Change bölümüne alabiliriz.
- "Gurup biçimlendirmesi G sütununa kadar olmuş" kısmını anlamadım açıkçası, nasıl bir hata oluşuyor.
Kodu çalıştırdığım zaman Örnek dosyadaki koşullu biçimlendirme ile aynı sonucu veriyor.

Ekli videodan başlıkla ilgili problemimi görebilirsiniz.

Gurup biçimlendirmesini şimdi kodları tekrar kopyalayıp denediğimde düzeldi. :unsure: J sütununa kadar renklendiriyor.
 

Ekli dosyalar

Kod içindeki sonS = s1.Cells(1, Columns.Count).End(xlToLeft).Column satırı ile 1. Satıra Göre Son Dolu Sütun Numarasını alıyor. Bu nedenle şuan J ye kadar renklendirme işlemini yapar. Eğer yeni bir başlık eklerseniz, renklendirme işlemine dahil olur.

Başlıklar benim yaptığım denemede yer değiştirmedi ama aşağıdaki bölümde bulunan G1:G yi G2:G olarak; A1:J yi de A2:J olarak değiştirdim.
Kod:
You must log in to view content
(4 satır)

Ekran görüntüsü ektedir.
 

Ekli dosyalar

  • KosulluBicim.webp
    KosulluBicim.webp
    74.3 KB · Görüntüleme: 7
Ben de yinelenenlerin vurgulanması kısmını soracaktım.
Yinelenme kontrolü her sütun için ayrı ayrı mı (isim tekrarlanmışsa vurgula, TC Kimlik Numarası tekrarlanmışsa vurgula ...gibi),
Yoksa C, D ve I sütunları bütün olarak tekrarlanmışsa mı vurgulama yapılacak?

.
 
Kod içindeki sonS = s1.Cells(1, Columns.Count).End(xlToLeft).Column satırı ile 1. Satıra Göre Son Dolu Sütun Numarasını alıyor. Bu nedenle şuan J ye kadar renklendirme işlemini yapar. Eğer yeni bir başlık eklerseniz, renklendirme işlemine dahil olur.

Başlıklar benim yaptığım denemede yer değiştirmedi ama aşağıdaki bölümde bulunan G1:G yi G2:G olarak; A1:J yi de A2:J olarak değiştirdim.
Kod:
You must log in to view content
(4 satır)

Ekran görüntüsü ektedir.
Bu şekilde düzenleyince bende düzeldi.
Teşekkürler.
Emeğinize sağlık.
 
Ben de yinelenenlerin vurgulanması kısmını soracaktım.
Yinelenme kontrolü her sütun için ayrı ayrı mı (isim tekrarlanmışsa vurgula, TC Kimlik Numarası tekrarlanmışsa vurgula ...gibi),
Yoksa C, D ve I sütunları bütün olarak tekrarlanmışsa mı vurgulama yapılacak?

.
Sütunlar birbirinden bağımsız, kendi içlerinde. Sadece tekrarlanan hücreler renklenecek.
 
@PriveT
Madem baktım, hazırladığım kodu göndereyim, alternatif olsun.
İsteğinizin karşılığı mıdır kontrol edersiniz.
Koddaki renkler yerine, sayfada belirleyeceğiniz belli hücrelere elle uygulayacağınız renkler de kullanılabilir elbette.

VBA:
You must log in to view content
(29 satır)
 
@PriveT
Madem baktım, hazırladığım kodu göndereyim, alternatif olsun.
İsteğinizin karşılığı mıdır kontrol edersiniz.
Koddaki renkler yerine, sayfada belirleyeceğiniz belli hücrelere elle uygulayacağınız renkler de kullanılabilir elbette.

VBA:
You must log in to view content
(27 satır)

Sayın @Ömer BARAN,
Öncelikle emeğiniz için teşekkürler.
İşlem hızı harika. Hiç bekleme yok.
İsteklerimin hepsi gerçekleşiyor fakat sanırım D sütununa göre bir sıralama var kodda anladığım kadarıyla. Kimlik numarasına göre küçükten büyüğe sıralama yapıyor. Onu kaldırabilir misiniz?
Sıralamanın sadece G sütununda tarih olup aşağı taşınarak gri renklendirilenler kendi aralarında eskiden yeniye olarak yapılmasına ihtiyacım var.
 
Range("A2:K" & son).Sort [K2], , [D2]
kod satırında, VİRGÜLden başlayarak sağdaki kısmı silin veya
VİRGÜLden önce 1 adet TEK TIRNAK işareti ekleyin.

.
:giggle: Düzeldi, teşekkürler.
Çok şart değil ama G sütununda tarih olup alta taşıdığımız ve gri ile renklendirdiğimiz bölümü kendi içinde G sütununa göre eskiden yeniye sıralama yapabilir miyiz?
 
Zaten öyle sıralanmıyor mu?
Her neyse o satırı Range("A2:K" & son).Sort [K2], 1 olarak güncelleyip tekrar deneyin.
Malesef tarih sıralaması olmuyor. Uygulanmış dosyayı ekledim. Ama dediğim gibi, yoracaksa sizi gerek yok. Teşekkürler.
 

Ekli dosyalar

Konuyu başlatan
Yönetici
İlyas PINAROĞLU
Katılım
Konum
Alanya & Moskova
Konu Bilgi
Durum
Çözüldü 
Forum
Excel Makro Soruları
Başlangıç tarihi
Son yanıt tarihi
Cevaplar
19
Üst