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

时间:2017-05-16 08:12:44

标签: excel excel-vba vba

我正在努力解决我认为容易解决的问题。不幸的是我无法做到。我有一个包含文本的单元格,实际上是一系列代码除以&#34 ;;"。此外,我有一系列包含单个代码的单元格。现在我想计算文本中有多少单个代码。

    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

不幸的是我无法使其发挥作用。如果你能帮助我,我会很高兴的。感谢。

2 个答案:

答案 0 :(得分:0)

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

请改为尝试:

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

答案 1 :(得分:0)

使用您的模板......(您的语法有些问题)。但是,请使用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