• DİKKAT

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

renkli hucreleri bul birleştir ve toplamını yaz

Katılım
28 Ocak 2008
Mesajlar
260
Excel Vers. ve Dili
2003
merhaba,
g2:g200 arasında alt alta aynı renklerden olan (renkler karışık değil) hücerlerin aynı renkte olanları birleştirmek ve o renkten "G2:G200" aralığında kaç adet varrsa toplamını yazmak.

Bunun için şu kodları denedim fakat tek tek hücreleri seçtiği için merge (hücreleri birleştir)yapamıyorum. (hücre içleri boş)

Kod:
Private Sub CommandButton2_Click()
For g = 2 To 200
If Cells(g, "g").Interior.ColorIndex = 43 Then adres = Cells(g, "g").Address & "," & adres
Next
Range(Mid(adres, 1, Len(adres) - 1)).Select
End Sub
hücrelerdeki renkler örn.
g2:g22 =27(Sarı)
g23:g33=43(Yeşil)
g34:g56=4 (Açık Yeşil)

Renk kodlarını içeren toplam 17 rengim var.
her renk için; aynı renk hücreleri birleştirip, o renkten g2:g200 arasında kaçtane varsa toplamını birleştime (merge) yapılan hücreye yazdırmak...
 
Son düzenleme:
Aşağıdaki kodu kullanınız.

Kod:
Option Explicit
Sub Renkleri_Birlestir()
    
    Dim basHcr As Range
    Dim hcr As Range
    Dim rg As Range
    Dim renk As Integer
    
    Set basHcr = Range("G2")
    renk = basHcr.Interior.ColorIndex
    
    Set rg = Application.Union(basHcr, basHcr)
    
    For Each hcr In Range("G3:G36")
        If hcr.Interior.ColorIndex = renk Then
            Set rg = Application.Union(rg, hcr)
            rg.MergeCells = True
        Else
            Set rg = Application.Union(hcr, hcr)
            renk = hcr.Interior.ColorIndex
        End If
    Next
    
    Set rg = Nothing
End Sub
 
Ferhat bey,
harika olmuş bu kadar kısa zamanda (ben dün gece araştırmakla kaldım ve gece 3,5 yattım :) ..)

fakat aynı renklerin toplamlarını birleştirdiğim hücrelere yazdırmak istiyorum.

Ek'e örnek bir dosya koydum incelermisiniz.

bir soru daha affınıza sığınarak. işlemi hızlandırmak mümkün mü ?
 
O zaman aşağıdakini kullanın. Hem hızlıdır hem de toplamlarını yazar :)

Kod:
Private Sub CommandButton1_Click()
    Dim basHcr As Range
    Dim hcr As Range
    Dim rg As Range
    Dim renk As Integer
    Dim say As Integer
    Set basHcr = Range("G2")
    renk = basHcr.Interior.ColorIndex
    say = 1
    Set rg = Application.Union(basHcr, basHcr)
    Application.ScreenUpdating = False
    For Each hcr In Range("G3:G160")
        If hcr.Interior.ColorIndex = renk Then
            Set rg = Application.Union(rg, hcr)
            rg.MergeCells = True
            say = say + 1
        Else
            rg.Value = say
            Set rg = Application.Union(hcr, hcr)
            renk = hcr.Interior.ColorIndex
            say = 1
        End If
    Next
    Application.ScreenUpdating = True
    Set rg = Nothing
End Sub
 
Emeğinize sağlık. harika oldu teşekkürler.
 
Geri
Üst