2008-09-08 35 views
9

Mỗi ô có chứa một số văn bản và màu nền. Vì vậy, tôi có một số tế bào màu xanh và một số có màu đỏ. Tôi sử dụng chức năng nào để đếm số lượng tế bào màu đỏ?Đếm danh sách ô có cùng màu nền

Tôi đã thử =COUNTIF(D3:D9,CELL("color",D3)) không thành công (Nơi D3 có màu đỏ).

Trả lời

8

Excel không có cách nào thu thập thuộc tính đó với các hàm tích hợp sẵn. Nếu bạn sẵn sàng để sử dụng một số VB, tất cả các câu hỏi liên quan đến màu sắc của bạn được trả lời ở đây:

http://www.cpearson.com/excel/colors.aspx

Ví dụ tạo trang web:

Chức năng SumColor là một màu dựa trên analog của cả hàm SUM và hàm SUMIF . Nó cho phép bạn chỉ định phạm vi riêng biệt cho phạm vi có các chỉ số màu cần được kiểm tra và phạm vi ô có giá trị là được tổng hợp. Nếu hai phạm vi này là , hàm tổng hợp các ô có màu phù hợp với giá trị được chỉ định. Ví dụ: công thức sau đây tính tổng các giá trị trong B11: B17 có màu tô đầy màu đỏ.

=SUMCOLOR(B11:B17,B11:B17,3,FALSE)

5

Công thức bảng, =CELL("color",D3) lợi nhuận 1 nếu ô được định dạng với màu sắc cho các giá trị âm (khác trả 0).

Bạn có thể giải quyết vấn đề này bằng một chút VBA. Chèn này thành một mô-đun mã VBA:

Function CellColor(xlRange As Excel.Range) 
    CellColor = xlRange.Cells(1, 1).Interior.ColorIndex 
End Function 

Sau đó sử dụng chức năng =CellColor(D3) để hiển thị .ColorIndex của D3

+0

Tôi dường như không làm được điều này. Chỉ số màu sẽ xuất hiện ở mức 55 khi có 6 ô có màu. – FortunateDuke

+0

Xin lỗi, tôi đã không hoàn thành lời giải thích của tôi. ColorIndex chỉ định giá trị chỉ mục vào bảng màu hiện tại, vì vậy bạn sẽ cần một công thức bảng tính khác để đếm số lượng hàm CellColor trả về 55. – Graham

+0

Dưới đây là chi tiết từng bước bài viết với hình ảnh về cách tạo hàm do người dùng xác định trong bổ trợ VBA: Đếm số lượng tế bào với màu sắc tế bào cụ thể bằng cách sử dụng VBA https://support.microsoft.com/kb/2815384 – Vadzim

3

tôi vừa tạo này và có vẻ dễ dàng hơn. Bạn sẽ có được những 2 chức năng:

=GetColorIndex(E5) <- returns color number for the cell 

từ (cell)

=CountColorIndexInRange(C7:C24,14) <- returns count of cells C7:C24 with color 14 

từ (phạm vi của các tế bào, số màu sắc mà bạn muốn đếm)

ví dụ cho thấy phần trăm của các tế bào với màu 14

=ROUND(CountColorIndexInRange(C7:C24,14)/18, 4) 

Tạo 2 hàm VBA này trong Mô-đun (nhấn Alt-F11)

mở + thư mục. kích đúp vào Module1

Chỉ cần dán văn bản dưới đây, sau đó đóng cửa sổ mô-đun (nó phải lưu nó rồi):

Function GetColorIndex(Cell As Range) 
    GetColorIndex = Cell.Interior.ColorIndex 
End Function 

Function CountColorIndexInRange(Rng As Range, TestColor As Long) 
    Dim cnt 
    Dim cl As Range 
    cnt = 0 

    For Each cl In Rng 
    If GetColorIndex(cl) = TestColor Then 
     Rem Debug.Print ">" & TestColor & "<" 
     cnt = cnt + 1 
    End If 
    Next 

    CountColorIndexInRange = cnt 

End Function 
2

tôi là cần thiết để giải quyết hoàn toàn các nhiệm vụ tương tự. Tôi đã chia trực quan bảng bằng cách sử dụng các màu nền khác nhau cho các phần khác nhau.Googling Internet tôi đã tìm thấy trang này https://support.microsoft.com/kb/2815384. Thật không may nó không giải quyết được vấn đề vì ColorIndex đề cập đến một số giá trị không thể đoán trước, vì vậy nếu một số ô có sắc thái của một màu (ví dụ các giá trị độ sáng khác nhau của màu sắc), hàm được đề xuất sẽ đếm chúng. Các giải pháp dưới đây là sửa chữa của tôi:

Function CountBgColor(range As range, criteria As range) As Long 
    Dim cell As range 
    Dim color As Long 
    color = criteria.Interior.color 
    For Each cell In range 
     If cell.Interior.color = color Then 
      CountBgColor = CountBgColor + 1 
     End If 
    Next cell 
End Function 
0

Có VBA là con đường để đi.

Nhưng, nếu bạn không cần phải có ô có công thức tự động đếm/cập nhật số lượng ô có màu cụ thể, cách thay thế chỉ đơn giản là sử dụng chức năng 'Tìm và thay thế' và định dạng ô để tô màu thích hợp.

Nhấn 'Tìm tất cả' sẽ cung cấp cho bạn tổng số ô được tìm thấy ở dưới cùng bên trái của hộp thoại.

enter image description here

này trở nên đặc biệt hữu ích nếu phạm vi tìm kiếm của bạn là đồ sộ. Kịch bản VBA sẽ rất chậm nhưng chức năng 'Tìm và Thay thế' sẽ vẫn rất nhanh.

Các vấn đề liên quan