我可以在countif excel函数中使用数组元素吗?
所以我有一个电子表格,我想计算在一系列单元格中有多少特定单词的实例。 通常使用Excel公式,我可以:我可以在countif excel函数中使用数组元素吗?,excel,vba,Excel,Vba,所以我有一个电子表格,我想计算在一系列单元格中有多少特定单词的实例。 通常使用Excel公式,我可以: Countif(Range("D3:D20"), "*bob*") 这将返回包含“bob”的单元格数 我希望在VBA中使用它,并对数组中存储的所有单词使用它。 我试过: x = Application.WorksheetFunction.Countif(Range("D3:D20"), "*array(i)*") 在循环中,但未找到任何实例 为了完成 x = Application.Wor
Countif(Range("D3:D20"), "*bob*")
这将返回包含“bob”的单元格数
我希望在VBA中使用它,并对数组中存储的所有单词使用它。
我试过:
x = Application.WorksheetFunction.Countif(Range("D3:D20"), "*array(i)*")
在循环中,但未找到任何实例
为了完成
x = Application.WorksheetFunction.Countif(Range("D3:D20"), "*bob*")
一切正常
如何将数组元素作为excel函数可识别的字符串传递?
提前感谢原因
x = Application.WorksheetFunction.Countif(Range("D3:D20"), "*array(i)*")
不起作用是因为excel将引号内的所有内容都视为字符串的一部分。因此,它将逐字搜索*数组(i)*
。这允许我们在工作表中搜索括号(
)之类的内容,而不会抛出错误,即括号是不完整语句的一部分
若要省略此项,请通过方括号外的数组求值,这意味着将对其求值并通过其解决方案。然后使用&
将两侧需要的通配符连接起来,如下所示:
x = Application.WorksheetFunction.Countif(Range("D3:D20"), "*" & array(i) & "*")
请注意,*
中有括号,但数组语句中没有括号。假设数组(i)
是“BOB”,现在将搜索“*”&BOB&“*”
,由&
连接:*BOB*
请注意,此方法适用于文本字符串,但对于数值不可靠。原因
x = Application.WorksheetFunction.Countif(Range("D3:D20"), "*array(i)*")
不起作用是因为excel将引号内的所有内容都视为字符串的一部分。因此,它将逐字搜索*数组(i)*
。这允许我们在工作表中搜索括号(
)之类的内容,而不会引发错误,即括号是不完整语句的一部分
若要省略此项,请通过方括号外的数组求值,这意味着将对其求值并通过其解决方案。然后使用&
将两侧需要的通配符连接起来,如下所示:
x = Application.WorksheetFunction.Countif(Range("D3:D20"), "*" & array(i) & "*")
请注意,*
中有括号,但数组语句中没有括号。假设数组(i)
是“BOB”,现在将搜索“*”&BOB&“*”
,由&
连接:*BOB*
请注意,此方法适用于文本字符串,但不适用于数值。将搜索参数与
&
串在一起,如下所示:x=Application.WorksheetFunction.Countif(范围(“D3:D20”),“*”&数组(i)和“*”)
太好了,谢谢你的帮助。我还在学习VBA。你想把这个作为答案,这样我就可以结束这个问题了吗?不用担心,很乐意帮助。如果你给我一点时间,我会键入一个答案,并给出解释。将搜索参数与&
串在一起,就像这样:x=Application.WorksheetFunction.Countif(范围(“D3:D20”)、“*”&数组(i)和“*”
非常感谢你的帮助。我还在学习VBA。你想把这个作为答案,这样我就可以结束这个问题了吗?不用担心,很乐意帮忙。如果你给我一点时间,我会键入一个答案并解释一下。