2012-10-12 14 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 

Czy istnieje krótsza droga, pls?Jak CountIf w wielu kolumnach?

+0

możliwe duplikat [COUNTIF ze szpiczakiem lub kryteriów] (http://stackoverflow.com/questions/8726627/countif-with-multiple-or-criteria) – brettdj

Odpowiedz

23

Można to zrobić za pomocą formuły, jak to

(Excel 2007 lub nowszy)

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

(Excel 2003 lub wcześniej)

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

Lub, jeśli trzeba zrób to w VBA, użyj Evaluate

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

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

EDIT na podstawie Twojego komentarza

Jeśli rDat i rSecRange „s, a ct jest arkusz CodeName zrobić jak ten

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"")") 

Jeśli ct jest arkusz Name, użyj tego

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"")") 

Jeśli rDat i rSec są łańcuchami, ten

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"")") 

Inną opcję (na rDat, rSec jako zakresy)

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

Chris, próbowałem 'ct.Range (" C6 "). Wartość = Ocena (" = COUNTIFS (rDat, "" a "", rSec, "" 1 "") ")' dostał błąd #NAME. ct to arkusz, rDat i rSec to zdefiniowane zakresy. Excel 2010 – Alegro

+0

Wielkie dzięki. Rozwiązany – Alegro

+2

Szkoda, że ​​SUMPRODUCT nie działa w Arkuszach kalkulacyjnych Google. –

Powiązane problemy