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

带通配符的Excel区分大小写计数:本机函数?,excel,wildcard,case-sensitive,countif,vba,Excel,Wildcard,Case Sensitive,Countif,Vba,我试图找到一个本机Excel函数(或其组合),该函数将以COUNTIF的方式精确运行(即处理通配符),但区分大小写 我已经成功地使用了SUMPRODUCT/EXACT函数,它确实执行区分大小写的计数:但是问题是我无法让这些函数识别通配符 也许最好举一个我真正需要的例子。我想取一个范围,搜索文本“TBA”的出现次数,其中字母必须大写,但它们可以出现在单元格中的任何位置。例如: TBA-应该算数 tbA-不应计算在内 =COUNTIF(A1:A10,"*TBA*") ' Correctly acco

我试图找到一个本机Excel函数(或其组合),该函数将以COUNTIF的方式精确运行(即处理通配符),但区分大小写

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

也许最好举一个我真正需要的例子。我想取一个范围,搜索文本“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
有些东西应该算数

有些东西不应该算数

=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),))

索引函数就在那里,所以你不必输入公式。

知道怎么做很容易,是吗?工作完美-谢谢:)