2017-06-13 60 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

相關問題