Excel VBA计算一个范围中有多少是文本的一部分

Excel VBA计算一个范围中有多少是文本的一部分,excel,vba,Excel,Vba,我正在努力解决一个我认为很容易解决的问题。不幸的是,我没能做到。我有一个包含文本的单元格,实际上是一系列代码除以“;”。此外,我还有一系列包含单个代码的单元格。现在我想数一数文本中的单个代码有多少 Text-Cell: AA01;AA05;AB03;AB05;CD07 Range: AA01 AB05 AB07 CD07 CD09 Result: 3 这个范围是动

我正在努力解决一个我认为很容易解决的问题。不幸的是,我没能做到。我有一个包含文本的单元格,实际上是一系列代码除以“;”。此外,我还有一系列包含单个代码的单元格。现在我想数一数文本中的单个代码有多少

    Text-Cell:  AA01;AA05;AB03;AB05;CD07

    Range:
          AA01
          AB05
          AB07
          CD07
          CD09


    Result: 3
这个范围是动态的,所以我看到的细胞数量是不同的。我正在寻找类似以下代码:

    Function NumberContaining(RANGE As Variable, TEXT as Variable) as  Integer

    Dim RESULT as Integer
    Dim CELL as Variable
    RESULT=0

    For(CELL in RANGE)
         RESULT=RESULT+WorksheetFunction.CountIf(Text,”=*” & CELL & “*”)

    Next


    NumberContaining=RESULT

    End Function

不幸的是,我不能让它工作。如果你能帮助我,我将很高兴。谢谢。

如果字符串的分隔符总是相同的(
),您可以使用该函数,然后在数组中循环,查看是否有任何变体与范围中的任何单元格匹配

请尝试以下方法:

Function NumberContaining(rng As Range, txt As String) As Integer

Dim sArray() As String
Dim element As Variant

sArray = Split(txt, ";")

For Each element In sArray
    If WorksheetFunction.CountIf(rng, Trim(element)) > 0 Then NumberContaining = NumberContaining + 1
Next element

End Function
使用您的模板。。。(您的语法有一些问题)。但是,使用Jordan的方法,因为这会将AA01标记为AA011的匹配项

Function NumberContaining(rRANGE As RANGE, vTEXT As Variant) As Integer

Dim RESULT As Integer
Dim CELL As RANGE

For Each CELL In rRANGE
    RESULT = RESULT + WorksheetFunction.CountIf(vTEXT, "=*" & CELL & "*")
Next

NumberContaining = RESULT

End Function

您可以使用数组公式来表示这个
=SUM(N(ISNUMBER(SEARCH(A3:A7,A1)))
。非常感谢,这解决了我的问题。我是VBA新手,到目前为止只有R、Python和Matlab,所以语法对我来说真的很奇怪。谢谢。不幸的是,也有一些空白空间,它们分布广泛。通过删除所有的空白,你的方法也能起作用。没问题,如果是这种情况,你也可以使用
if WorksheetFunction.CountIf(rng,Trim(element))>0,然后…
嘿,谢谢,这做得更好。这样就不会对空单元格进行计数:)