Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我可以在countif excel函数中使用数组元素吗?_Excel_Vba - Fatal编程技术网

我可以在countif 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

所以我有一个电子表格,我想计算在一系列单元格中有多少特定单词的实例。 通常使用Excel公式,我可以:

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。你想把这个作为答案,这样我就可以结束这个问题了吗?不用担心,很乐意帮忙。如果你给我一点时间,我会键入一个答案并解释一下。