在单元格内容中查找字符串并将行复制到另一个工作表

时间:2015-09-16 22:44:33

标签: excel

这是问题Find Results in excel copy the rows to another sheet的分支。这有完全匹配的解决方案,但不是“包含”匹配。此前的条目还有一个分支,但具体到日期格式。

我将复制原始条目的内容并附加额外要求:

  

“我需要一些帮助将数据从一个Excel工作表复制到另一个Excel工作表。例如:

____A_____B____C
1 xaaax xbbbx xdddx
2 xbbbx xcccx xeeex
3 xcccx xfffx xrrrx
4 xcccx xfffx xtttx
5 xdddx xeeex xgggx
6 xaaax xdddx xeeex
7 xbbbx xfffx xhhhx
8 xeeex xeeex xeeex
  

其中“x”的每个实例都可以是任何字符串。

     

因此,对于上述记录,如果我执行'CTRL + F'并搜索以查找所有'eee',结果将显示C2,B5,C6,A8,B8,C8中的6个实例

     

现在我想将整个行2,5,6和8复制到另一个工作表。

     

如果整个单元格内容只是搜索到的子字符串(即:“eee”),那么答案就是:

     

(Peter L.提供)   “要实现您的需求,请执行以下操作(假设您的数据位于A:C行,从第2行开始,即有标题):

     

键入D2(附加列):= IF(OR(A2:C2 =“eee”),1,0),但按CTRL + SHIFT + ENTER而不是通常的ENTER - 这将定义一个ARRAY公式并将导致围绕它的{}括号(但不要手动输入!)   根据需要自动填充配方。
  将过滤器添加到整个A:D范围   将过滤器应用于D列的值为1   复制整个过滤的列A:C并粘贴到任何位置 - 仅复制过滤的行。“

但是,如果单元格的全部内容等于eee,则此解决方案似乎才有效。如果我想搜索子字符串,例如在eee中搜索alkjalkjeeeljkjl,我相信我还需要其他内容。

我曾尝试使用=ISNUMBER(SEARCH(,但我已经达到了我的能力极限,似乎搜索不会在第二行的A2:C2范围内。

2 个答案:

答案 0 :(得分:0)

显然,必要时更改工作表。

Sub SO()

Dim ws1 As Worksheet
Dim ws2 As Worksheet
Dim lastRow1 As Long
Dim lastRow2 As Long
Dim f As Long
Dim search As String
search = "eee"
Set ws1 = ThisWorkbook.WorkSheets("Sheet5")
Set ws2 = ThisWorkbook.WorkSheets("Sheet6")

lastRow1 = ws1.Cells(ws1.Rows.Count, "A").End(xlUp).Row

With ws1

For i = 1 To lastRow1

f = InStr(1, .Cells(i, 1), search)

    If f > 0 Then
        lastRow2 = ws2.Cells(ws2.Rows.Count, "A").End(xlUp).Row
        ws2.Rows(lastRow2 + 1).Value = ws1.Rows(i).Value
    End If

Next

End With

End Sub

答案 1 :(得分:0)

请尝试:

=IFERROR(FIND(D$1,A1),IFERROR(FIND(D$1,B1),FIND(D$1,C1)))  

(区分大小写)被复制下来,其中D1包含您的搜索词。

应该是一种识别要复制的行的方法(与过滤器一起排除错误值)。