KTF: Renkli Hücreleri Toplama ve Sayma tamam Peki Alttoplam istersek nasıl olmalı?

Katılım
2 Mart 2005
Mesajlar
2,960
Excel Vers. ve Dili
ev: Ofis 2007- Win Xp
iş: Ofis 2010- Win Vista
http://www.excel.web.tr/showthread.php?p=244969#post244969

merhaba arkadaşlar yukarıdaki linkte işlenen ve aşağıda kodlar ile Bir aralıkta (e2:e100) belirtilen tüm hücreleri rengine göre topluyoruz peki d sü tütununda veri filtreleme uyguladık ve renkli hücrelerin bir kısmı gözükmeyen alanda kaldı

Normol toplama istesek =alttoplam(9;e2:e100) deriz filtrelenmiş alanın toplamını elde ederiz.

peki filtrelenmiş alandaki renkli hücrelerin toplamı nasıl elde edilir?

Saygılarımla.







Kod:
Function brdrenktopla(Adres As Range, Dolgu_rengi, Font_rengi, islem As Integer)
Dim c As Range
On Error Resume Next
Toplam = 0
If islem = 1 Then
    For Each c In Adres
       If c.Interior.ColorIndex = Dolgu_rengi And c.Font.ColorIndex = Font_rengi And c <> "" Then Toplam = Toplam + c.Value
    Next
End If
brdrenktopla = Toplam
End Function
 

Necdet

Moderatör
Yönetici
Katılım
4 Haziran 2005
Mesajlar
15,301
Excel Vers. ve Dili
Ofis 365 Türkçe
Merhaba,

Akl&#305;ma bir&#351;eyler geliyor ama &#351;u anda yapacak halim yok Say&#305;n hsayar :)

Akl&#305;ma gelen &#351;ey &#351;u:

Makro ile &#246;rnek bir h&#252;cre se&#231;ilir (tabi bu sizin istedi&#287;iniz renklere sahip olan h&#252;credir), dosyan&#305;n sa&#287; taraf&#305;nda bo&#351; bir s&#252;tunda istedi&#287;iniz &#246;zelliklere sahap olan sat&#305;rlar i&#231;in 1 di&#287;erleri i&#231;in 0 yazd&#305;r&#305;l&#305;r ve bu de&#287;erlere g&#246;re S&#252;z(Filter) yapt&#305;r&#305;l&#305;r.

Klasik ALTTOPLAM fonksiyonu ile de toplam ald&#305;r&#305;l&#305;r.
 
Katılım
2 Mart 2005
Mesajlar
2,960
Excel Vers. ve Dili
ev: Ofis 2007- Win Xp
iş: Ofis 2010- Win Vista
bu dedi&#287;iniz anlad&#305;m hocam bencede olabilir... ancak 2500 sat&#305;l&#305;k veride filtre i&#231;inde sar&#305; dolgulu beyaz yaz&#305;l&#305; olan h&#252;creleri 1 yapmak epey uzun s&#252;recektir.

kontrol&#252; filtrelenmi&#351; s&#252;tunda uygulayabilirsek belki daha h&#305;zl&#305; olur. neyse m&#252;sait olunca bakars&#305;n&#305;z bende yar&#305;n i&#351;yerinde vakit bulursam verdi&#287;iniz ilham ile na&#231;izane bir&#351;eyler yapmaya &#231;al&#305;&#351;&#305;r&#305;m.
 
Katılım
15 Haziran 2006
Mesajlar
3,704
Excel Vers. ve Dili
Excel 2003, 2007, 2010 (TR)
Merhabalar

Aşağıdaki kodlar belki size ilham verebilir. Bu fonksiyon, bir aralıktaki "görünür hücrelerden" sadece kırmızı renkli olanları toplayarak bir sonuç döndürür. Siz, farklı koşullarda daha ilave ederek geliştirebilirsiniz.

Kod:
Public Function OzelTopla(rg As Range)
Dim hcr As Range
Application.Volatile
For Each hcr In rg.Cells
    If hcr.Rows.Hidden = False Then
       If hcr.Font.ColorIndex = 3 Then
          deger = deger + hcr.Value
       End If
    End If
Next
OzelTopla = deger
End Function
 
Katılım
2 Mart 2005
Mesajlar
2,960
Excel Vers. ve Dili
ev: Ofis 2007- Win Xp
iş: Ofis 2010- Win Vista
Te&#351;ekk&#252;rler Hocam; peki
Application.Volatile
sat&#305;r&#305;n&#305;n anlam&#305; nedir?

ve de&#287;er girilmezse varsay&#305;lan de&#287;er tan&#305;mlabilirmi

Mesala
Function brdrenktopla(Adres As Range, Dolgu_rengi, Font_rengi, islem As Integer)

Sat&#305;r&#305;n&#305; &#231;a&#287;&#305;rrken brdrenktopla(a1:a100, 3, 8, 1) diye &#231;a&#287;&#305;r&#305;yoruz
&#351;u e&#351;kilde &#231;a&#287;&#305;rd&#305;m&#305;zda da olmayan de&#287;er otomatik gelsin
brdrenktopla(a1:a100, , 10, )
bu &#231;a&#287;r&#305;m ile a1:a100 aral&#305;&#287;&#305;nda dolgurenk de&#287;eri 3 olanlar (Otomatik gelecek), Font rengi 10 olanlar, 1 nolu i&#351;lem (otomatikj gelecek)

m&#252;mk&#252;nm&#252;d&#252;r?

ger&#231;i bana paramaetrik prosod&#252;rde alz&#305;m ama fonksiyon i&#231;in olan&#305;n&#305; da &#246;&#287;renmenin zarar&#305; olmaz :)

Sayg&#305;lar&#305;mla hay&#305;rl&#305; geceler
 
Son düzenleme:
Katılım
15 Haziran 2006
Mesajlar
3,704
Excel Vers. ve Dili
Excel 2003, 2007, 2010 (TR)
E&#287;er bu fonksiyonu, bir makro kodu i&#231;erisinde, bir de&#287;er &#252;retmek i&#231;in kullanacaksan&#305;za, Volatile'in pek bir &#246;nemi olmayabilir.

Ancak, s&#246;z konusu function, sayfa &#252;zerinde herhangi bir h&#252;creye yaz&#305;lan form&#252;l niteli&#287;ini alacaksa, Volatile hayati &#246;nem ta&#351;&#305;r.

Volatile, kullanmadan b&#246;yle bir KTF'nin; de&#287;er g&#252;ncellemesi beklenemez.

&#350;&#246;yle ki; siz A1 h&#252;cresini de&#287;i&#351;tirdi&#287;inizde, normalde form&#252;l&#252;n de kendini g&#252;ncellemesini beklersiniz. Ama Application.Volatile kullanmasayd&#305;k, h&#252;cre de&#287;erini de&#287;i&#351;tirmeniz halinde bile, fonksiyon hesaplama yapmayacakt&#305;. Bu olay, sanki "Hesaplama"n&#305;n Manuel'e d&#246;nmesini hat&#305;rlat&#305;r.

Kodlar&#305;, Volatile sat&#305;r&#305;n&#305; iptal ederek ve bar&#305;nd&#305;rarak, deneme yap&#305;n&#305;z daha iyi anlayacaks&#305;n&#305;z.
 
Katılım
2 Mart 2005
Mesajlar
2,960
Excel Vers. ve Dili
ev: Ofis 2007- Win Xp
iş: Ofis 2010- Win Vista
te&#351;ekk&#252;r ederim hocam, te&#351;ekk&#252;r mesaj&#305;mda (5 nolu) d&#252;zeltme yapm&#305;&#351;t&#305;m ek konu hakk&#305;ndada fikrinizi s&#246;ylermisiniz?
 
Katılım
15 Haziran 2006
Mesajlar
3,704
Excel Vers. ve Dili
Excel 2003, 2007, 2010 (TR)
Sizin fonksiyonun tamam&#305;n&#305; bilemedi&#287;im i&#231;in benim daha &#246;nce verdi&#287;im &#246;rnek &#252;zerinden gidelim.

Eski fonksiyonumuzda, sadece k&#305;rm&#305;z&#305; renkli h&#252;crelerin toplanmas&#305;n&#305; istiyorduk ve bunun i&#231;in sadece aral&#305;k belirlememiz yeterliydi.
Yani "=OzelTopla(A2:A28)" &#351;eklinde ...

Yine ayn&#305; i&#351;i yapan ama renk opsiyonunu da ihtiva eden daha geli&#351;tirilmi&#351; bir fonksiyon a&#351;a&#287;&#305;dad&#305;r. Burada renk parametresi opsiyonel b&#305;rak&#305;lm&#305;&#351;t&#305;r. Yani yaz&#305;lsa da olur, yaz&#305;lmasa da ... Yaz&#305;lmazsa, '=OzelTopla(A2:A28) gibi' default olarak "g&#246;r&#252;nen k&#305;rm&#305;z&#305; renkli h&#252;creleri" toplar, yaz&#305;l&#305;rsa '=OzelTopla(A2:A28;4)' gibi belirtilen renk index'ine uyan "g&#246;r&#252;n&#252;r h&#252;creleri" toplar.

Daha &#246;nce verdi&#287;im kodla; yeni kodun aras&#305;ndaki farklar k&#305;rm&#305;z&#305; olarak g&#246;sterilmi&#351;tir.

Kod:
Function OzelTopla(rg As Range, [COLOR=red]Optional renk As Integer[/COLOR])
Dim hcr As Range
Application.Volatile
[COLOR=red]If renk = 0 Then: renk = 3[/COLOR]
For Each hcr In rg.Cells
    If hcr.Rows.Hidden = False Then
       If hcr.Font.ColorIndex = [COLOR=red]renk [/COLOR]Then
          deger = deger + hcr.Value
       End If
    End If
Next
OzelTopla = deger
End Function
 
Son düzenleme:
Katılım
2 Mart 2005
Mesajlar
2,960
Excel Vers. ve Dili
ev: Ofis 2007- Win Xp
iş: Ofis 2010- Win Vista
te&#351;ekk&#252;r ederim hocam genel uygulamadada in&#351;allah ba&#351;ar&#305;l&#305; olurum.
 

Necdet

Moderatör
Yönetici
Katılım
4 Haziran 2005
Mesajlar
15,301
Excel Vers. ve Dili
Ofis 365 Türkçe
Say&#305;n hsayar,

&#214;rnek dosya ekleseniz &#351;imdiye kadar &#231;ok h&#305;zl&#305; &#351;ekilde &#231;&#246;z&#252;m al&#305;rd&#305;n&#305;z. &#304;nan&#305;n son g&#252;nlerde &#246;ylesine tembelimki, bir&#351;eyler yap&#305;p kontrol etmek i&#231;in data gerek, oysa data yok. Olmay&#305;nca da kod yazmada tembelle&#351;iyorum.

:)
 
Katılım
2 Mart 2005
Mesajlar
2,960
Excel Vers. ve Dili
ev: Ofis 2007- Win Xp
iş: Ofis 2010- Win Vista
sn necdet yesertener soruma cevap lad&#305;m ve denememde ba&#351;ar&#305;l&#305; oldum ... iginize te&#351;ekk&#252;r ederim.
gnelke uyguklma derken renli h&#252;crelrde F&#304;LTRELENM&#304;&#350; JH&#220;CRELER alttoplM FONK&#304;SYONUNUN t&#252;m &#246;zelliklerini kazand&#305;racak bir fonkisyon haz&#305;rlamak ma bug&#252;n &#231;ok yo&#287;undum yar&#305;n k&#305;smet.
 

Necdet

Moderatör
Yönetici
Katılım
4 Haziran 2005
Mesajlar
15,301
Excel Vers. ve Dili
Ofis 365 Türkçe
Merhaba,

Basit bir örnekte benden :

Kod:
Public Sub BulveSüz()
On Error Resume Next
ActiveSheet.ShowAllData
[C2:C1000].ClearContents
For i = 2 To [A65536].End(3).Row - 1
    If Selection.Font.ColorIndex = Cells(i, "A").Font.ColorIndex And _
       Selection.Interior.ColorIndex = Cells(i, "A").Interior.ColorIndex Then Cells(i, "C") = 1
Next i
    Range("A1").Select
    Selection.AutoFilter
    Selection.AutoFilter Field:=3, Criteria1:="1"
End Sub
 
Üst