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

¿Hay una manera más corta, pls?Cómo contar si hay varias columnas?

+0

posible duplicado de [Countif con múltiples o criterios] (http://stackoverflow.com/questions/8726627/countif-with-multiple-or-criteria) – brettdj

Respuesta

23

Usted puede hacer esto con una fórmula, como este

(Excel 2007 o posterior)

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

(Excel 2003 o anterior)

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

O, si usted tiene que hágalo en VBA, use Evaluate

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

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

EDITAR basa en su comentario

Si rDat y rSec son Range 's, y ct es la hoja de CodeName hacerlo de esta manera

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

Si ct es la hoja Name, utilice esto

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

Si rDat y rSec son cadenas, utilice este

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

Otra opción (por rDat, rSec como rangos)

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

Chris, lo intenté 'ct.Range (" C6 "). Valor = Evaluar (" = COUNTIFS (rDat, "" a "", rSec, "" 1 "") ")' an got #NAME error. ct es una hoja, rDat y rSec son rangos definidos. Excel 2010 – Alegro

+0

Muchas gracias. Resuelto – Alegro

+2

Lástima que SUMPRODUCT no funciona en Google Spreadsheets. –