2017-06-13 59 views
-1

背景:在“工作表Sheet”宏:搜索在列1中的文本值和复制值至第2列

柱A由6,000+行由逗号每行中分隔的单词。我也有一个搜索词表(“Sheet2”)。

问:

检索词表(“Sheet2的”)由24个字,我想从“工作表Sheet1”在列A识别和复制到同一个电子表格的B列。

我遇到的问题是我正在处理一系列的单词(24),我想交叉检查列A中的每一行,并且我不确定如何设置该单词。

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

请帮忙!

+0

在VBA,只需用逗号分隔sheet1中的行,然后将其与检索词表中的单词相对照。或者使用正则表达式 –

+0

创建24个单词的数组,循环遍历数组并使用'InStr'检查它是否在列中。如果是,请将列B中的单元格值更改为列B的值+逗号和数组中的值。 – dwirony

+0

感谢@dwirony和@ ron-rosenfeld!你能告诉我你将使用的VBA脚本吗? – Walle0786

回答

0

试试这个:

这个唯一的缺点是,你必须输入你要找的为阵列的字(见字1,字2等)

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 
+0

嗨@dwirony。惊人!有效!我使用24个单词中的6个进行了测试,现在将剩下的输入到数组中。快速的问题 - 有没有办法在Sheet1中添加一个“按钮”,以便将来可以更新数组,并在Sheet1中点击“搜索”? – Walle0786

+0

@ Walle0786好听。是的,你可以添加一个按钮。在excel中,如果转到开发人员选项卡,插入并在ActiveXControl下选择小矩形框(然后在需要的位置在屏幕上的某处绘制按钮)。然后,您可以右键单击该按钮,转到分配宏,然后将刚刚创建的宏分配给它。 – dwirony

相关问题