Giúp code đếm các ô bôi mầu (1 người xem)

Liên hệ QC

Người dùng đang xem chủ đề này

tungtuantu

Thành viên mới
Tham gia
23/6/14
Bài viết
3
Được thích
0
Hi mọi người, mọi người giúp mình code đếm các ô bôi vàng trong 1 bảng theo như file mình gửi kèm nhé, thanks mọi người nhiều lắm
 

File đính kèm

Mình chỉ có thể đếm bằng 1 macro

Bạn xem trong file

PHP:
Option Explicit
Sub ColorCellsCount()
 Dim Rng As Range, sRng As Range, Cls As Range, Rg0 As Range, Cll As Range
 Dim J As Byte:                                         Dim fAdd As String
 
 Set Rng = Range([D5], [D5].End(xlDown))
 For Each Cll In Range("M6:M9")
    Set sRng = Rng.Find(Cll.Value, , xlFormulas, xlWhole)
    If Not sRng Is Nothing Then
        fAdd = sRng.Address
        Do
            Set Rg0 = sRng.Offset(, 1).Resize(, 5)
            For Each Cls In Rg0
                If Cls.Interior.ColorIndex = 6 Then
                    J = 1 + J
                End If
            Next Cls
            Set sRng = Rng.FindNext(sRng)
        Loop While Not sRng Is Nothing And sRng.Address <> fAdd
    End If
    If J Then
        Cll.Offset(, 1).Value = J:                      J = 0
    End If
 Next Cll
End Sub
 

File đính kèm

Upvote 0
Cảm ơn các bạn đã giúp mình, mình gà phần code quá, nên đọc chưa hiểu được hết.
Đây chỉ là phàn mình đưa ra ví dụ như thế, cụ thể của mình thì cột "đội số" khoảng 1000 hàng, và phần bôi vàng của mình ko chỉ nằm ở "E6:I21" mà nó kéo rộng đến Cột FA,
Cái này các bạn có thể viết như lênh countif ko.
Cảm ơn các bạn nhiều
 
Upvote 0
Tùy theo qui mô dữ liệu mà chọn fương cách thôi.

[thongbao]Đây chỉ là phàn mình đưa ra ví dụ như thế, cụ thể của mình thì cột "đội số" khoảng 1000 hàng, và phần bôi vàng của mình ko chỉ nằm ở "E6:I21" mà nó kéo rộng đến Cột FA, [/thongbao]
Lí ra bạn f ải nói ngay từ bằ đầu, rằng thì là mà dữ liệu như vầy, như vậy,.. .

[thongbao]
Cái này các bạn có thể viết như lênh countif ko.[/thongbao]

Mình xài E2003 nên không rõ, nhưng hình như E07 trở lên thì được.
 
Upvote 0
Cảm ơn các bạn đã giúp mình, mình gà phần code quá, nên đọc chưa hiểu được hết.
Đây chỉ là phàn mình đưa ra ví dụ như thế, cụ thể của mình thì cột "đội số" khoảng 1000 hàng, và phần bôi vàng của mình ko chỉ nằm ở "E6:I21" mà nó kéo rộng đến Cột FA,
Cái này các bạn có thể viết như lênh countif ko.
Cảm ơn các bạn nhiều
Thử cách này coi có xài được không?
 

File đính kèm

Upvote 0
Cũng không mất bao nhiêu thòi gian, chừng 0.4 gy thôi

Với vùng dữ liệu như bạn nói, macro sau chạy 0.4 giây (ở máy cổ lỗ của mình)

PHP:
 Option Explicit
Sub ColorCellsCount()
 Dim Rng As Range, sRng As Range, Cls As Range, Rg0 As Range, Cll As Range
 Dim J As Long, Tmr As Double:                          Dim fAdd As String
 
 Set Rng = Range([D5], [D5].End(xlDown)):               Tmr = Timer()
 For Each Cll In Range("B6:B9")
    Set sRng = Rng.Find(Cll.Value, , xlFormulas, xlWhole)
    If Not sRng Is Nothing Then
        fAdd = sRng.Address
        Do
            Set Rg0 = sRng.Offset(, 1).Resize(, 180)
            For Each Cls In Rg0
                If Cls.Interior.ColorIndex = 6 Then
                    J = 1 + J
                End If
            Next Cls
            Set sRng = Rng.FindNext(sRng)
        Loop While Not sRng Is Nothing And sRng.Address <> fAdd
    End If
    If J Then
        Cll.Offset(, -1).Value = J:                      J = 0
    End If
 Next Cll
 [a13].Value = Timer() - Tmr
End Sub
 
Upvote 0
Cảm ơn các bạn đã giúp mình, mình gà phần code quá, nên đọc chưa hiểu được hết.
Đây chỉ là phàn mình đưa ra ví dụ như thế, cụ thể của mình thì cột "đội số" khoảng 1000 hàng, và phần bôi vàng của mình ko chỉ nằm ở "E6:I21" mà nó kéo rộng đến Cột FA,
Cái này các bạn có thể viết như lênh countif ko.
Cảm ơn các bạn nhiều
Bạn dùng Funtion của Bạn QuangHai đi . Muốn đếm mầu khu vực nào thì chọn khu vực đó, mở rông bao nhiêu chả được .
 
Upvote 0

Bài viết mới nhất

Back
Top Bottom