2012-10-12 34 views
8
x = 0 
For Each cell in Sheets("01").Range("A:A").Cells 
If cell.Value = "aaa" And cell.Offset(0, 1).Value = "bbb" Then 
x = x+1 
End If 
Next cell 
MsgBox x 

Có cách nào ngắn hơn không?Cách đếm nếu trong nhiều cột?

+0

thể trùng lặp của [COUNTIF Với Nhiều HOẶC Tiêu chuẩn] (http://stackoverflow.com/questions/8726627/countif-with-multiple-or-criteria) – brettdj

Trả lời

23

Bạn có thể làm điều này với một công thức, như thế này

(Excel 2007 hoặc sau đó)

=COUNTIFS(A:A,"aaa",B:B,"bbb") 

(Excel 2003 hoặc sớm hơn)

=SUMPRODUCT(--(A:A="aaa")*--(B:B="bbb")) 

Hoặc, nếu bạn phải làm điều đó trong VBA, sử dụng Evaluate

MsgBox Evaluate("=COUNTIFS(A:A,""aaa"",B:B,""bbb"")") 

MsgBox Evaluate("=SUMPRODUCT(--(A:A=""aaa"")*--(B:B=""bbb""))") 

EDIT dựa trên nhận xét của bạn

Nếu rDatrSecRange 's, và ct là tấm CodeName làm điều đó như thế này

Dim rDat As Range 
Dim rSec As Range 
Set rDat = ct.[A:A] 
Set rSec = ct.[B:B] 
ct.Range("C6").Value = Evaluate("=COUNTIFS(" & rDat.Address(, , , True) & " ,""a""," & rSec.Address(, , , True) & ",""1"")") 

Nếu ct là tấm Name, sử dụng số điện thoại

này
Dim ws As Worksheet 
Dim rDat As Range 
Dim rSec As Range 
Set ws = ActiveWorkbook.Worksheets("ct") 
Set rDat = ws.[A:A] 
Set rSec = ws.[B:B] 
ws.Range("C6").Value = Evaluate("=COUNTIFS(" & rDat.Address(, , , True) & " ,""a""," & rSec.Address(, , , True) & ",""1"")") 

Nếu rDatrSec là chuỗi, sử dụng

Dim ws As Worksheet 
Dim rDat As String 
Dim rSec As String 
Set ws = ActiveWorkbook.Worksheets("ct") 
rDat = "ct!A:A" 
rSec = "ct!B:B" 
ws.Range("C6").Value = Evaluate("=COUNTIFS(" & rDat & " ,""a""," & rSec & ",""1"")") 

tùy chọn này khác (ví rDat, rSec như dãy)

ct.Range("C6").Value = Application.WorksheetFunction.CountIfs(rDat, "a", rSec, "1") 
+0

Chris, tôi đã thử 'ct.Range (" C6 ") Giá trị = Đánh giá (" = COUNTIFS (rDat, "" a "", rSec, "" 1 "") ")' có lỗi #NAME. ct là một trang tính, rDat và rSec là các phạm vi được xác định. Excel 2010 – Alegro

+0

Cảm ơn rất nhiều. Giải quyết – Alegro

+2

Quá xấu mà SUMPRODUCT không hoạt động trong Bảng tính Google. –

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