2013-08-07 50 views
0

我有一個包含數據行的Excel表。 J欄包含商品的各種描述。我需要搜索該列中的所有行以查找單詞LATEX,並且在找到該單詞時,只將該單詞複製到同一行中同一工作表上的A列。我試圖找到一個解決方案,並使用Autofilter提出了這個宏,但它不能正常工作。你能幫我麼?Excel:搜索列中的單詞並將其複製到同一張表中的另一列

Sub FilterAndCopy() 

    Dim dataWs As Worksheet 
    Dim copyWs As Worksheet 
    Dim totRows As Long 
    Dim lastRow As Long 

    Set dataWs = Worksheets("Massiv") 
    Set copyWs = Worksheets("Massiv") 

    With dataWs 
     .AutoFilterMode = False 
     With .Range("J:J") 
      .AutoFilter Field:=1, Criteria1:="LATEX" 
     End With 
    End With 

    totRows = dataWs.Range("J:J").Rows.count 
    lastRow = dataWs.Range("J" & totRows).End(xlUp).Row 
    dataWs.Range("J:J" & lastRow).Copy 
    copyWs.Range("A6").PasteSpecial Paste:=xlPasteValues 
    dataWs.AutoFilterMode = False 
+1

過濾器很好,但你必須處理可見和不可見的行。爲什麼不使用查找方法,並做你需要的東西 –

+0

即在A2類似'ActiveCell.Formula =「= IFERROR(IF(SEARCH(」* Latex *「」,J2)> 0,「」LATEX「」) ,「」「」)「'填滿。 – pnuts

+0

pnuts:宏運行沒有錯誤,但不會複製任何東西 – Infernon

回答

0

通過以下更改,您的代碼應該可以工作。我已經注意到代碼中註釋的變化。

With dataWs 
    .AutoFilterMode = False 
    With .Range("J:J") 
     'Use wildcard to search for word LATEX within contents of column J cells 
     .AutoFilter Field:=1, Criteria1:="*LATEX*" 
    End With 
End With 

totRows = dataWs.Range("J:J").Rows.Count 
lastRow = dataWs.Range("J" & totRows).End(xlUp).Row 
'After filtering, select the visible cells in column A... 
Set rng = dataWs.Range("A2:A" & lastRow).SpecialCells(xlCellTypeVisible) 
'... and set their values to "LATEX" 
rng.Value = "LATEX" 
dataWs.AutoFilterMode = False 
+0

乾杯,chuff!工作喜歡夢想! – Infernon

相關問題