Làm sao để đếm màu chữ.

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

andi10

Thành viên mới
Tham gia
22/1/11
Bài viết
6
Được thích
0
mình muốn đếm có bao nhiêu số có màu đỏ, nhưng hàm mình viết bị lỗi hoài. Các bạn nào biết thì giúp mình nhé. Thanks các bạn nhiều. đây là file đính kèm của mình.
 

File đính kèm

mình muốn đếm có bao nhiêu số có màu đỏ, nhưng hàm mình viết bị lỗi hoài. Các bạn nào biết thì giúp mình nhé. Thanks các bạn nhiều. đây là file đính kèm của mình.

Không có công thức nào làm được điều này đâu bạn à, trừ phi là dùng hàm tự tạo (lập trình VBA)

Bạn đồng ý thì chúng ta tiếp tục
 
mình muốn đếm có bao nhiêu số có màu đỏ, nhưng hàm mình viết bị lỗi hoài. Các bạn nào biết thì giúp mình nhé. Thanks các bạn nhiều. đây là file đính kèm của mình.
Dùng VBA thôi:
PHP:
Private Sub Worksheet_Activate()
Dim r1 As Range
Dim i As Integer
i = 0
  For Each r1 In Range("b5:e10")
    If r1.Font.ColorIndex = 3 Then i = i + 1
  Next
[g10].Value = i
End Sub
 
từ bài bebo tôi viết riêng ra function
PHP:
Function Demmau(rng As Range, mau as integer) As Integer
    Dim r1 As Range
    Dim i As Integer
    i = 0
    For Each r1 In rng
          If r1.Font.ColorIndex = mau Then i = i + 1
   Next
   Demmau = i
End Function
ví dụ
PHP:
=Demmau(H1:J9,3)
 
Lần chỉnh sửa cuối:
từ bài bebo tôi viết riêng ra function
PHP:
Function Demmau(rng As Range) As Integer
    Dim r1 As Range
    Dim i As Integer
    i = 0
    For Each r1 In rng
          If r1.Font.ColorIndex = 3 Then i = i + 1
   Next
   Demmau = i
End Function
ví dụ
PHP:
=Demmau(H1:J9)
Nếu viết thành hàm thì nên tổng quát chút.
- Phải có Option cho phép chọn màu nền hay màu chữ
- Phải có màu điều kiện để đếm theo nó (đếm màu xanh lại phải sửa code à?)
- Ngoài ra, nếu đã COUNT thì phải đi chung với SUM thành 1 cặp (Sum theo màu)
 
Chắc bác ndu giúp dùng bảng màu trong VBA quá chứ hiện tại em chưa biết bảng màu đó theo thứ tự như thế nào nữa, xin cảm ơn
 
Chắc bác ndu giúp dùng bảng màu trong VBA quá chứ hiện tại em chưa biết bảng màu đó theo thứ tự như thế nào nữa, xin cảm ơn
Hổng phải vậy! Ý tôi là hàm sẽ có cú pháp đại khái như sau:
=DEMNAU(Vung as Range, Mau as Range, TuyChon as Boolean)
Vung là vùng chứa dữ liệu
Mau là mẫu màu (là 1 cell nào đó)
TuyChon là tùy chọn đếm màu font hay màu nền
 
vậy bác chỉ giúp em cách sử dụng hàm tự tạo nha, em chưa dùng bao giờ nên không biết.
 
vậy bác chỉ giúp em cách sử dụng hàm tự tạo nha, em chưa dùng bao giờ nên không biết.
Làm như sau:
- Mở file của bạn
- Bấm Alt + F11 vào cửa số lập trình
- Vào menu Insert, chọn Module
- Copy code dưới đây paste vào khung bên phải của Module
PHP:
Function CountColor(ByVal SrcRng As Range, CriteriaColor As Range, Optional Opt As Boolean = False) As Long
  Dim Clls As Range, lTmp As Long
  On Error Resume Next
  Application.Volatile
  For Each Clls In SrcRng
    If Opt Then
      If Clls.Interior.ColorIndex = CriteriaColor.Interior.ColorIndex Then lTmp = lTmp + 1
    Else
      If Clls.Font.ColorIndex = CriteriaColor.Font.ColorIndex Then lTmp = lTmp + 1
    End If
  Next
  CountColor = lTmp
End Function
- Thoát ra bảng tính, chọn 1 cell nào đó rồi gõ công thức này vào =CountColor($B$5:$E$10, C6)
Xem kết quả = bao nhiêu?
-------------
Nói thêm về cú pháp hàm CountColor(SrcRng, CriteriaColor, Opt)
SrcRng là vùng dữ liệu
CriteriaColor là màu mẫu (1 cell nào đó)
Opt là tùy chọn TRUE hoặc FALSE. Nếu bạn bỏ qua tham số này hoặc cho = FALSE thì có nghĩa là bạn đang muốn đếm màu font. Ngược lại, Opt = True thì có nghĩa bạn muốn đếm màu nền
 
Chắc bác ndu giúp dùng bảng màu trong VBA quá chứ hiện tại em chưa biết bảng màu đó theo thứ tự như thế nào nữa, xin cảm ơn
Hàm thì làm theo ndu, màu điều kiện lấy từ 1 ô nào đó.
còn bảng màu thì quá dễ:
Dùng 1 vòng lặp for, i chạy từ 1 đến 54, gán màu cho ô cells(i, 1).
 
Bác ndu ơi, em làm thử theo công thức bác cho thì được. nhưng em áp dụng như vậy cho các bài tương tự như vậy thì không được, trả lại kết quả sai. Nhờ bác giúp em nhé, File đính kèm của em đây, file này e dùng để tính công cho công nhân. Bác giúp em nhé, cảm ơn bác nhiều.
 

File đính kèm

Bác ndu ơi, em làm thử theo công thức bác cho thì được. nhưng em áp dụng như vậy cho các bài tương tự như vậy thì không được, trả lại kết quả sai. Nhờ bác giúp em nhé, File đính kèm của em đây, file này e dùng để tính công cho công nhân. Bác giúp em nhé, cảm ơn bác nhiều.
Đúng là tôi có sơ suất!
Thật ra code không sai nhưng nó tính luôn cả nhưng cell rổng (khi cell ấy đã được định dạng font đúng điều kiện trước đó)
Ví dụ: Cell P17 đã được tô màu font là màu đỏ, xong ta xóa P17 thì hàm vẫn tính luôn
Vậy sửa lại chỉ tính những cell có giá trị nhé:
PHP:
Function CountColor(ByVal SrcRng As Range, CriteriaColor As Range, Optional Opt As Boolean = False) As Long
  Dim Clls As Range, lTmp As Long
  On Error Resume Next
  Application.Volatile
  For Each Clls In SrcRng
    If Opt Then
      If Clls.Interior.ColorIndex = CriteriaColor.Interior.ColorIndex Then lTmp = lTmp + 1
    Else
      If Clls <> "" Then
        If Clls.Font.ColorIndex = CriteriaColor.Font.ColorIndex Then lTmp = lTmp + 1
      End If
    End If
  Next
  CountColor = lTmp
End Function
 
Web KT

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

Back
Top Bottom