宏:在列1中搜索文本值并将值复制到列2

时间:2017-06-13 17:03:18

标签: excel vba

背景:

" Sheet1"中的A列;由每行中逗号分隔的6,000多行单词组成。我还有一个搜索词表(" Sheet2")。

问:

搜索词表(" Sheet2")包含24个单词,我想在A列中识别出来自" Sheet1"并复制到同一电子表格的B列。

我遇到的问题是我正在处理一系列单词(24),我想在A列中反复检查每一行,而我不知道如何设置它。

如果文本出现在A列单元格中的字符串中,则它应该拉入B列中的同一行,用逗号分隔。只有搜索词表中的文本应出现在B列中。

请帮忙!

1 个答案:

答案 0 :(得分:0)

试试这个:

唯一的缺点就是你必须输入你要在数组中寻找的单词(参见Word1,Word2等)

Sub movingvalues()
Dim sht As Worksheet
Dim i As Long
Dim lastrow As Integer

Set sht = ActiveWorkbook.Worksheets("Sheet1")
lastrow = sht.Cells(sht.Rows.Count, "A").End(xlUp).Row

Dim mywords As Variant, word As Variant
mywords = Array("Word1", "Word2", "Word3", "Word4", "Word5") 'etc all the way to Word24

ActiveWorkbook.Worksheets("Sheet1").Range("B:B").ClearContents

For i = 1 To lastrow
    For Each word In mywords
        If InStr(ActiveWorkbook.Worksheets("Sheet1").Range("A" & i).Value, word) Then
            If ActiveWorkbook.Worksheets("Sheet1").Range("B" & i).Value <> "" Then
                ActiveWorkbook.Worksheets("Sheet1").Range("B" & i).Value = ActiveWorkbook.Worksheets("Sheet1").Range("B" & i).Value & " " & word
            Else
                ActiveWorkbook.Worksheets("Sheet1").Range("B" & i).Value = word
            End If
        End If
    Next word
Next i
End Sub