• DİKKAT

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

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
 
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.
 
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.
 
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
 
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:
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.
 
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?
 
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:
te&#351;ekk&#252;r ederim hocam genel uygulamadada in&#351;allah ba&#351;ar&#305;l&#305; olurum.
 
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.

:)
 
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.
 
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
 
Geri
Üst