Excel VBA在单元格中搜索数组中的字符串

时间:2017-08-14 21:00:22

标签: excel vba

在excel中,

我有一张包含大量数据的表格。简化版本如下。我有一个列有活动ID,第二列包含一个字符串列表,用于指定该活动为...

活动 - 因素

1 - 测试,娱乐,试用

2 - 试用

3 - 测试,有趣,错误

在VBA中,我想找到包含Test,Right或Wrong的每个活动。

所以我在想一个查看表中每行数据的“For”语句。 然后将它与包含字符串的数组(Test,Right,Wrong)进行比较。我希望它然后返回活动名称和数组中的匹配值。

Dim FactorMatch as Variant
FactorMatch = Array ("Test", "Right", "Wrong")

For i = 2 to LastRow
   if sht.cells(i,"B") = value in array then....

现在我被卡住了。我想要一个if语句,它查看Activity单元格,如果它包含FactorMatch中的任何字符串,那么它将Activity ID和匹配的字符串保存到另一个数组。所以我的Array SavedData最后会是这样的

SavedData = 1测试 3测试,错误

1 个答案:

答案 0 :(得分:1)

我认为像这样写它会更容易。

dim rng as range, rcell as range
dim arr(5000) as string
dim counter as long
counter = 0
set rng = thisworkbook.sheets("yoursheetname").Range("yourrange")
for each rcell in rng.cells
     IF LCase(Instr(1, rcell.value, "test")) >0 Or _
     LCase(Instr(1, rcell.value, "right")) >0 Or _
     lCase(Instr(1, rcell.value, "wrong")) >0 Then
          arr(counter) = rcell.offset(0, numbertoadjustfor).value
          counter = counter + 1
     end if
next rcell