簡體   English   中英

帶有通配符的Excel區分大小寫的COUNTIF:本機函數?

[英]Excel case-sensitive COUNTIF with wildcards: native function?

我正在嘗試找到一個本機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相同的方式),這將完成我正在尋找的東西嗎? 謝謝。

由於FIND區分大小寫,您可以使用:

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

INDEX函數只在那里,所以你不必數組輸入公式。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM