【问题标题】:Find string in cell contents and copy the rows to another sheet在单元格内容中查找字符串并将行复制到另一个工作表
【发布时间】:2015-09-17 07:16:13
【问题描述】:

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

我将复制原始条目的内容,但有一个额外的要求:

“我需要一些帮助来将数据从一个 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”),那么答案将是:

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

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

然而,这个解决方案似乎只有在单元格的全部内容等于eee 时才有效。如果我想搜索一个子字符串,比如在alkjalkjeeeljkjl 中搜索eee,我相信我需要别的东西。

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

【问题讨论】:

    标签: excel


    【解决方案1】:

    请尝试:

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

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

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

    【讨论】:

    • 谢谢,这可以完成。我会尽量让它不区分大小写,但除此之外,这会让我得到我需要的东西。作为参考,A1、C1 和 D1 是要搜索文本的列,假设第 1 行是数据的起始行。 (从问题中很明显,但我想更多地包含答案)。
    • 啊,将“FIND”替换为“SEARCH”,使其不区分大小写。
    【解决方案2】:

    显然,根据需要更改工作表。

    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
    

    【讨论】:

    • Doh。您有多个列。我只做了A。所以请尝试为范围循环中的每个单元格设置一个。现在回家XD
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-12
    • 1970-01-01
    • 2015-01-12
    • 1970-01-01
    • 2018-07-23
    • 1970-01-01
    相关资源
    最近更新 更多