2013-04-08 22 views
8

Tôi có danh sách tên đã được xuất từ ​​cơ sở dữ liệu khác thành excel. Các tên trong danh sách được quan tâm được đánh dấu bằng phông chữ màu đỏ. Tôi muốn một cách để đếm nó, tức là John Smith xuất hiện 5 lần trong tổng số trong một cột nhưng 3 trong số 5 lần, tên của ông nổi lên bằng phông chữ màu đỏ. Vì vậy, tôi muốn xem có bao nhiêu trường hợp của tên của mình xuất hiện màu đỏ.Cách đếm văn bản của màu phông khác nhau trong excel

Tôi biết Cách tìm kiếm tất cả các phiên bản tên của anh ấy, ví dụ: = COUNTIF (A1: A100, "John Smith")

Tôi cũng đã được trợ giúp tạo hàm VB tính tất cả các giá trị màu đỏ (= SumRed) (khi chỉ mục màu được chỉ định) trong trang tính theo sử dụng:

Function SumRed(MyRange As Range) 
    SumRed = 0 
For Each cell In MyRange 
    If cell.Font.Color = 255 Then 
     SumRed = SumRed + cell.Value 
    End If 
Next cell 
End Function 

Tôi không thể tìm cách kết hợp hai điều kiện đếm. Bất kì sự trợ giúp nào đều được đánh giá cao!

+0

'+ cell.value' này doesn dường như không đúng? – glh

+0

Không cần VBA. Excel công thức cũng có thể giúp đỡ. –

Trả lời

0
For Each cell In Range("A1:A100") 
    If cell.Font.Color = 255 And cell.Value = "John Smith" Then 
     myCount = myCount + 1 
    End If 
Next 
2

Tôi nghĩ rằng bạn gần như có nhưng điều này xứng đáng một chức năng @user đặt cược tôi đến dòng đấm :(

Function CoundRedAndText(MyRange As Range, Mytext as string) as long 
    CoundRedAndText = 0 
    For Each cell In MyRange 
     If cell.Font.Color = 255 and cell.value like MyText Then 
      CoundRedAndText = CoundRedAndText + 1 'you had cell.value but dont know why? 
     End If 
    Next cell 
End Function 

Cách sử dụng, =CountRedAndText(A1:A25, "John Smith")

13

Bạn không cần VBA cho điều này nhưng vẫn còn nếu bạn muốn giải pháp VBA sau đó bạn có thể đi với bất kỳ câu trả lời nào khác. :)

Chúng ta có thể sử dụng công thức Excel để tìm Màu phông của ô. Xem ví dụ này.

Chúng tôi sẽ sử dụng các macro XL4.

  1. Mở Trình quản lý tên
  2. Đặt tên. Nói FontColor
  3. Loại công thức này trong Đề cập Để =GET.CELL(24,OFFSET(INDIRECT("RC",FALSE),0,-1)) và nhấn OK

enter image description here

Giải thích về công thức

Cú pháp là

GET.CELL(type_num, reference) 

Type_num is a number that specifies what type of cell information you want. 
reference is the cell reference 

Trong công thức trên số 24 cung cấp cho bạn màu phông chữ của ký tự đầu tiên trong ô, dưới dạng một số trong phạm vi từ 1 đến 56. Nếu màu phông chữ tự động, trả về 0. Và Do đó có nhược điểm. Đảm bảo rằng toàn bộ màu phông chữ có màu đỏ. Chúng tôi có thể đã sử dụng 64 nhưng điều đó không hoạt động đúng cách.

OFFSET(INDIRECT("RC",FALSE),0,-1) đề cập đến ô ngay lập tức ở bên trái.

Bây giờ hãy nhập công thức này vào ô =IF(AND(Fontcolor=3,B1="John Smith"),1,0) và sao chép nó xuống.

Lưu ý: Công thức phải được nhập ở bên phải ô chứa văn bản.

Screentshot

enter image description here

EDIT (10/12/2013)

Để đếm các tế bào với backcolor cụ thể, xem THIS liên kết

+0

+1 cho giải pháp thay thế thanh lịch và chi tiết này cho vba. Bạn học được điều gì mới mỗi ngày. – glh

+0

Tôi cảm thấy như thể đây là một cách rất hữu ích để thực hiện điều này. Và có vẻ như nó mất ALOT trước thời gian được thiết lập. Lấy tất cả dữ liệu và đảm bảo bạn có thể di chuyển dữ liệu xung quanh, chèn một cột bên cạnh tên hoặc di chuyển tên đến cuối cột để đặt nó vào trong đó. Cũng có vẻ như nó sẽ rất chậm nếu bạn đã nói 500.000 hồ sơ để kiểm tra. Ngoài ra lỗi lớn nhất của tôi là khả năng sử dụng lại, điều gì sẽ xảy ra nếu trong tương lai OP cần đếm số tên và kết hợp màu duy nhất, điều này sẽ mất nhiều thời gian để thực thi và gỡ lỗi? – user2140261

+0

+1 - Để tìm màu phông chữ (và màu nền), đây chính xác là những gì tôi đang tìm kiếm - cho phép tôi viết một hàm dựa trên màu sắc, nhưng không cần sử dụng VBA. Cảm ơn nhiều. – Unsliced