使用VBA,我如何search定义范围内的多个string?

如果我在A列中有一长串文本,而在C列中有一个简短的单词列表,那么在A中searchC中的每个单词的最好方法是将C中的任何单词复制并粘贴匹配到列B?

我到目前为止写的代码如下

Sub ListKeywordQualifier() Dim Rng As Range Dim Keyword As Range Dim Chunk As Range Dim x As Long x = 1 While x <= 5000 Set Rng = Range("A" & x) Set Chunk = Range("C1", "C100") Application.ScreenUpdating = True Range("D1").Value = x If Application.WorksheetFunction.CountIf(Chunk, Rng) = 0 Then x = x + 1 ElseIf Application.WorksheetFunction.CountIf(Chunk, Rng) = 1 Then Rng.Copy Rng.Offset(0, 1).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False x = x + 1 End If Wend End Sub 

但是,这只会给我两者之间的精确匹配。 是否可以做同样的事情,但是在列C中出现的文本,只构成列A的一部分,触发复制/粘贴行?

谢谢

考虑:

 Sub ListKeywordQualifier() Dim A As Range, C As Range, aa As Range, cc As Range Dim K As Long, va, vc, boo As Boolean Set A = Range("A1:A" & Cells(Rows.Count, "A").End(xlUp).Row) Set C = Range("C1:C" & Cells(Rows.Count, "C").End(xlUp).Row) K = 1 For Each aa In A va = aa.Value boo = False For Each cc In C If InStr(1, va, cc.Value) > o Then boo = True Next cc If boo Then aa.Copy Cells(K, "B") K = K + 1 End If Next aa End Sub 

之前:

在这里输入图像说明

之后:

在这里输入图像说明

你的countif不工作,因为它是一个工作表函数,要实现countif ….你需要写它像WorksheetFunction.CountIf 。 还是你的代码不好看,试试这个!

  Sub ListKeywordQualifier() Dim Rng(50) As String Dim Chunk(50) As String Dim i As Long i = 1 '' Take a value From 3rd Column this works for 10 cells , For i = 1 To 10 Chunk(i) = Cells(i, 3) ''Search it in 1st Column in 10 cells For j = 1 To 10 Rng(j) = Cells(j, 1) ''If it matches If Chunk(i) = Rng(j) Then ''Then copy that value to Second Column Cells(i, 2).Value = Rng(j) End If Next j Next i End Sub 

这只是给你一个想法,你仍然需要做出改变谢谢