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,然后…
嘿,谢谢,这做得更好。这样就不会对空单元格进行计数:)