Nhờ AE giúp đỡ "Đếm những ô theo điều kiện màu và điều kiện giá trị?"

  • Thread starter Thread starter Denly
  • Ngày gửi Ngày gửi
Liên hệ QC

Denly

Thành viên mới
Tham gia
3/6/09
Bài viết
48
Được thích
14
Em có 1 bảng excel gồm các giá trị và các ô tô màu.
Nhờ các bác giúp đếm các ô có màu vàng và có giá trị >=1 và <2.
Em cảm ơn.
 

File đính kèm

Bạn tô màu vàng đó theo điều kiện nào? còn công thức đếm theo màu thì không có, phải dùng VBA
em tô màu thủ công ạ. còn đếm các ô màu thì em có đếm theo VBA mà các bác share ấy (CountCellsByBackColor) nhưng chỉ đếm được theo 1 điều kiện là mà, ko đếm được như countifs ạ.
 
Lần chỉnh sửa cuối:
Trong file bạn gửi đã có sẵn cái hàm CountCellsByBackColor, bạn sửa câu lệnh If indRefColor = cellCurrent.Interior.ColorIndex Then
thành If indRefColor = cellCurrent.Interior.ColorIndex And cellCurrent.Cells(1, 1).Value >= 1 And cellCurrent.Cells(1, 1).Value < 2 Then
và sử dụng nó là được.
 
em tô màu thủ công ạ. còn đếm các ô màu thì em có đếm theo VBA mà các bác share ấy. (CountCellsByBackColor)
Trong file bạn gửi đã có sẵn cái hàm CountCellsByBackColor, bạn sửa câu lệnh If indRefColor = cellCurrent.Interior.ColorIndex Then
thành If indRefColor = cellCurrent.Interior.ColorIndex And cellCurrent.Cells(1, 1).Value >= 1 And cellCurrent.Cells(1, 1).Value < 2 Then
và sử dụng nó là được.
mình đã sửa như bạn chỉ nhưng ko đc ạ. Mình muốn đếm các ô có màu(cụ thể trong files đính kèm là màu vàng) và có giá trị >=1 và <2 ạ
 
Function CountCellsByBackColor(rData As Range, cellRefColor As Long) As Long
Dim indRefColor As Long
Dim cellCurrent As Range
Dim cntRes As Long
cntRes = 0
indRefColor = cellRefColor
For Each cellCurrent In rData
If indRefColor = cellCurrent.Interior.Color And cellCurrent.Cells(1, 1).Value >= 1 And cellCurrent.Cells(1, 1).Value < 2 Then
cntRes = cntRes + 1
End If
Next cellCurrent
CountCellsByBackColor = cntRes
End Function
'============================================
Sub test1()
Dim R As Range, Mau As Long
Set R = Range(Cells(1, 6), Cells(100, 6))
Mau = 65535 'mau vang
MsgBox CountCellsByBackColor(R, Mau)
End Sub
 
Function CountCellsByBackColor(rData As Range, cellRefColor As Long) As Long
Dim indRefColor As Long
Dim cellCurrent As Range
Dim cntRes As Long
cntRes = 0
indRefColor = cellRefColor
For Each cellCurrent In rData
If indRefColor = cellCurrent.Interior.Color And cellCurrent.Cells(1, 1).Value >= 1 And cellCurrent.Cells(1, 1).Value < 2 Then
cntRes = cntRes + 1
End If
Next cellCurrent
CountCellsByBackColor = cntRes
End Function
'============================================
Sub test1()
Dim R As Range, Mau As Long
Set R = Range(Cells(1, 6), Cells(100, 6))
Mau = 65535 'mau vang
MsgBox CountCellsByBackColor(R, Mau)
End Sub
em ko hiểu lắm nên bác có thể làm trên file em gửi ko ạ? em cảm ơn
 
Cách dùng hàm đếm này, bạn xem công thức trong ô F38 nhé.
 

File đính kèm

cảm ơn bạn nhưng nếu là mầu khác và khoảng giá trị khác thì đổi ntn ạ?
Màu thì bạn thay số
65535 (màu vàng) bằng số khác ( ví dụ đỏ là 255, xanh là 5287936), còn khoảng giá trị thì phải sửa lại code ở dòng này

If indRefColor = cellCurrent.Interior.Color And cellCurrent.Cells(1, 1).Value >= 1 And cellCurrent.Cells(1, 1).Value < 2 Then

Thay số cụm ">= 1" và "< 2" bằng giá trị bạn muốn.
 
Màu thì bạn thay số
65535 (màu vàng) bằng số khác ( ví dụ đỏ là 255, xanh là 5287936), còn khoảng giá trị thì phải sửa lại code ở dòng này

If indRefColor = cellCurrent.Interior.Color And cellCurrent.Cells(1, 1).Value >= 1 And cellCurrent.Cells(1, 1).Value < 2 Then

Thay số cụm ">= 1" và "< 2" bằng giá trị bạn muốn.
vậy màu vàng em thay là số bất kỳ không phải 65535 được không hay bắt buộc phải là giá trị ấy ạ.
Cảm ơn bác
 
Web KT

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

Back
Top Bottom