Excel 带通配符的区分大小写的 COUNTIF:本机函数?

Excel case-sensitive COUNTIF with wildcards: native function?

我正在尝试找到一个本机 Excel 函数(或它们的组合),它的行为将完全按照 COUNTIF 的方式(即处理通配符),但区分大小写。

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

也许最好举例说明我实际需要什么。我想取一个范围,并搜索文本 "TBA" 的出现次数,其中字母必须大写,但它们可以出现在单元格中的任何位置。例如:

待定 - 应该算在内

tbA - 不应该算

某事待定某事 - 应该算在内

somethingtBasomething - 不应该算在内

=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

但是,此函数会减慢电子表格的计算速度,每次更新相关范围内的一个单元格时都会有明显的延迟。

任何人都可以想出本机 Excel 函数的组合(与 SUMPRODUCT/EXACT 的方式相同)来满足我的需求吗?谢谢

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

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

只有 INDEX 函数,所以您不必数组输入公式。