Excel区分大小写COUNTIF与通配符:本地函数?

我试图find一个本地的Excel函数(或其组合),这将正确地performance在COUNTIF的方式(即将处理通配符),但区分大小写。

我已经成功地使用了SUMPRODUCT / EXACT函数,它确实执行了大小写敏感的计数:但问题是我无法使这些识别通配符。

也许最好给我一个实际需要的例子。 我想采取一个范围,并search文本“TBA”的出现次数,其中的字母必须在大写,但他们可以出现在单元格的任何地方。 例如:

TBA – 应该算

tbA – 不应该算

一些东西 – 应该算

什么东西 – 不应该算

=COUNTIF(A1:A10,"*TBA*") ' Correctly accounts for wildcards (*), but isn't case-sensitive =SUMPRODUCT(--EXACT(A1:A10,"TBA")) ' Is case-sensitive, but only finds whole cell values which match =SUMPRODUCT(--EXACT(A1:A10,"*TBA*")) ' Doesn't recognise * as a wildcard, because it's ' literally only searching for cells with asterisks ' either side of the letters 

为了解决我的问题,我写了一个用户定义的函数,如下所示:

 Option Compare Binary ' Case-sensitive COUNTIF Function CS_Countif(rng As Range, str As String) As Long Dim Matches As Long, cl As Range For Each cl In rng If InStr(cl.Value, str) > 0 Then Matches = Matches + 1 Next cl CS_Countif = Matches End Function 

但是,此function会减慢电子表格计算速度,并且每次更新相关范围中的一个单元格时都会出现明显的延迟。

任何人都可以找出原生Excel函数的组合(就像SUMPRODUCT / EXACT一样),它会做我正在寻找的东西吗? 谢谢。

由于FIND区分大小写,因此可以使用:

 =COUNT(INDEX(FIND("TBA",A1:A7),)) 

INDEX函数只在那里,所以你不必数组input公式。