我需要计算包含特定值的列中的单元格数量。我目前使用下面的代码:Countif具有多个OR条件
iVal = Application.WorksheetFunction.COUNTIF(Range("A:A"), "SAL")
不过,我现在需要算多少细胞中含有两种
SAL
,或PRE
我需要计算包含特定值的列中的单元格数量。我目前使用下面的代码:Countif具有多个OR条件
iVal = Application.WorksheetFunction.COUNTIF(Range("A:A"), "SAL")
不过,我现在需要算多少细胞中含有两种
SAL
,或PRE
最快的方法就是做2个COUNTIF:
iVal = Application.WorksheetFunction.CountIf(Range("A:A"), "SAL") + Application.WorksheetFunction.CountIf(Range("A:A"), "PRE")
+1,这是您的最佳方法,因为CountIf只能接受一个参数。 – 2012-01-04 16:15:38
这个效果很好,但从长远来看,我将结束很多变量,所以试图找到一个更高效的方法,但很好的中间方法! – BradStevenson 2012-01-04 16:22:24
@MattDonnan实际上可以为COUNTIF提供多个测试,参见上文。 – brettdj 2012-01-04 23:36:26
您可以使用标准COUNTIF公式(可能需要多个参数)的VBA
等效项。这可以被扩展为需要
标准配方
=SUM(COUNTIF(A:A, {"SAL","PRE"}))
VBA等效
MsgBox Evaluate("Sum(COUNTIF(A:A,{""PRE"",""SAL""}))")
+1远和最好的答案到目前为止!可以支付添加VBA选项来传递一个字符串数组MsgBox Evaluate(“Sum(COUNTIF(A:A,{”“”&Join(v,“”“,”“”)&“”“}))” ) ' – 2012-01-05 11:19:17
@chrisneilsen thx - 以及对字符串数组的极好建议。 – brettdj 2012-01-05 11:26:03
你为什么不使用CountIfs
功能?
例子:
Application.CountIfs(CR1_range, V_1, CR2_range, V_2, CR3_range, V_3, CR4_range, V_4)
哪里CR1_range显然是你的范围和V_1是你的变量
编辑:哎呀!刚看到它必须是一个或声明,我的回答将只用于AND语句工作(没有删除参考柜面任何人有兴趣)
继为我工作很好: -
Dim val1 as string, val2 as string
val1 = "value1"
val2 = "value2"
count = Application.WorksheetFunction.CountIfs(ThisWorkbook.Names("firstname").RefersToRange, val1 , ThisWorkbook.Names("secondname").RefersToRange, val2)
这webpage有助于了解Excel中的命名范围。
为什么不是一个简单的第二线'iVal2 = Application.WorksheetFunction.COUNTIF(范围( “A:A”), “PRE”)',然后添加(或报告两者)的变量作为一个整体? – brettdj 2012-01-04 12:22:16
因为我将加起来大约20个变量,并为大约30个不同的列做这个,所以如果我可以将它们全部合并到一行中,就会减少很多工作量! – BradStevenson 2012-01-04 16:21:18
如何将列的值读入数组?那么你可以循环,添加条件等? – JimmyPena 2012-01-04 18:46:44