我正在尝试找到一个本机Excel函数(或其组合),它将以COUNTIF的方式运行(即将处理通配符),但区分大小写。
我已成功使用SUMPRODUCT / EXACT函数,它确实执行区分大小写的计数:但问题是我无法识别通配符。
或许最好举一个我真正需要的例子。我想取一个范围,并搜索文本“TBA”的出现次数,其中字母必须是大写字母,但它们可以出现在单元格的任何位置。例如:
TBA - 应该算上
tbA - 不应该算
somethingTBAsomething - 应该算上
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相同的方式),这将完成我正在寻找的东西吗?感谢。
答案 0 :(得分:3)
由于FIND区分大小写,您可以使用:
=COUNT(INDEX(FIND("TBA",A1:A7),))
INDEX功能只在那里,所以你不必排列输入公式。