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

Gibt es einen kürzeren Weg, pls?Wie wird in mehreren Spalten gezählt?

+0

möglich Duplikat [Countif mit mehreren OR Kriterien] (http://stackoverflow.com/questions/8726627/countif-with-multiple-or-criteria) – brettdj

Antwort

23

Sie können dies tun, mit einer Formel, wie diese

(Excel 2007 oder höher)

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

(Excel 2003 oder früher)

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

Oder, wenn Sie müssen tun Sie es in VBA, verwenden Sie Evaluate

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

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

EDIT basierend auf Ihren Kommentar

Wenn rDat und rSec sind Range ‚s, und ct ist das Blatt CodeName tun es wie folgt

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

Wenn ct das Blatt Name, verwenden Sie diese

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

Wenn rDat und rSec Strings sind, verwenden Sie diese

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

Eine weitere Option (für rDat, rSec als Bereiche)

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

Chris, versuchte ich 'ct.Range (" C6 "). Wert = Auswerten (" = COUNTIFS (rDat, "a" ", rSec," "1" ")") ein #NAME-Fehler. ct ist ein Blatt, rDat und rSec sind definierte Bereiche. Excel 2010 – Alegro

+0

Vielen Dank. Gelöst – Alegro

+2

Schade, dass SUMPRODUCT in Google Spreadsheets nicht funktioniert. –

Verwandte Themen