在sheet1的所有行和列中搜索字符串,如果发现则将整个行复制到sheet2

utt73

我将如何在sheet1的所有行和列中搜索特定的字符串,然后将整个行复制到sheet2(如果找到),而不创建重复项?

到目前为止,这是我根据此答案得出的结论,但我认为我需要针对所有列进行循环。这只是在搜索第一列A。

Sub Main()
   Dim wb1 As Workbook
   Set wb1 = ThisWorkbook

   Call searchtext("organic", "Organic Foods")
   wb1.Save

End Sub


Private Sub searchtext(term, destinationsheet)
    Dim wb1 As Workbook
    Set wb1 = ThisWorkbook
    Dim ws1 As Worksheet
    Set ws1 = wb1.Sheets(1) 'assumes raw data is always first sheet
    Dim ws2 As Worksheet
    Dim copyFrom As Range
    Dim lRow As Long 

    With ws1

        .AutoFilterMode = False

        lRow = .Range("A" & .Rows.Count).End(xlUp).Row
        With .Range("A1:A" & lRow)
            .AutoFilter Field:=1, Criteria1:="=*" & term & "*"
            Set copyFrom = .Offset(1, 0).SpecialCells(xlCellTypeVisible).EntireRow
        End With

        .AutoFilterMode = False
    End With

    '~~> Destination File
    Set ws2 = wb1.Worksheets(destinationsheet)

    ws2.Cells.ClearContents

    With ws2
        If Application.WorksheetFunction.CountA(.Cells) <> 0 Then
            lRow = .Cells.Find(What:="*", _
                          After:=.Range("A1"), _
                          Lookat:=xlPart, _
                          LookIn:=xlFormulas, _
                          SearchOrder:=xlByRows, _
                          SearchDirection:=xlPrevious, _
                          MatchCase:=False).Row
        Else
            lRow = 1
        End If

        copyFrom.Copy .Rows(lRow)
    End With


End Sub

当我尝试循环然后进行重复数据删除时,下面的代码仅比较前两列。如何指定所有列以比较重复项?

Private Sub RemoveDuplicates(destinationsheet) 
    Dim wb1 As Workbook
    Set wb1 = ThisWorkbook

    With wb1.Worksheets(destinationsheet)
        Set Rng = Range("A1", Range("B1").End(xlDown))
        Rng.RemoveDuplicates Columns:=Array(1, 2), Header:=xlYes
    End With

End Sub
用户4039065

我已经重写了您的第一个代码以遍历所有可用列。我没有在多个工作表上测试此代码,但是可以编译。

Private Sub searchtext(term, destinationsheet)
    Dim wb1 As Workbook, ws1 As Worksheet, ws2 As Worksheet
    Dim copyFrom As Range, c As Long, lr As Long, b1st As Boolean

    Set wb1 = ThisWorkbook
    Set ws1 = wb1.Worksheets(1) 'assumes raw data is always first sheet
    Set ws2 = wb1.Worksheets(destinationsheet)
    ws2.Cells.ClearContents

    With ws1.Cells(1, 1).CurrentRegion
        .Parent.AutoFilterMode = False
        lr = .Rows.Count
        For c = 1 To .Columns.Count
            b1st = CBool(Application.CountA(ws2.Columns(1)))
            .AutoFilter
            .Columns(c).AutoFilter Field:=1, Criteria1:="=*" & term & "*"
            If CBool(Application.Subtotal(103, .Columns(c))) Then _
                .Offset(1, 0).Resize(.Rows.Count - 1, .Columns.Count).Copy _
                    Destination:=ws2.Cells(Rows.Count, 1).End(xlUp).Offset(0 - b1st, 0)
        Next c

        .Parent.AutoFilterMode = False
    End With

    Set ws2 = Nothing
    Set ws1 = Nothing
    Set wb1 = Nothing
End Sub

对于您的删除重复项问题,用于.CurrentRegion管理要考虑的区域并构造一个数组以在Columns:=参数中使用

Public Sub RemoveDuplicates(destinationsheet)
    Dim a As Long, rdCOLs As Variant
    Dim wb1 As Workbook
    Set wb1 = ThisWorkbook

    With wb1.Worksheets(destinationsheet)
        With .Cells(1, 1).CurrentRegion
            ReDim rdCOLs(.Columns.Count - 1)
            For a = LBound(rdCOLs) To UBound(rdCOLs)
                rdCOLs(a) = a + 1
            Next a
            .RemoveDuplicates Columns:=(rdCOLs), Header:=xlYes
        End With
    End With

    Set wb1 = Nothing
End Sub

rdCOL中的括号Columns:=(rdCOLs),重要没有它们,该.RemoveDuplicates命令将不会处理该数组此代码已在Excel 2010上进行了测试。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

获取 sheet1 中最后填充的列并将 sheet2 中的数据复制到 sheet1

来自分类Dev

Excel VBA 按钮。将行从 Sheet1 复制到 Sheet2 / 条件:列值

来自分类Dev

Excel VBA-在sheet2中查找字符串,并将其复制到sheet1中

来自分类Dev

根据单元格条件将Sheet1的活动行复制到Sheet2并避免重复

来自分类Dev

如果在sheet2中不存在从sheet1复制到sheet2的单元格

来自分类Dev

Excel Online-将日期从Sheet1列A复制到Sheet2列B

来自分类Dev

根据标题将数据从Sheet1复制到Sheet2

来自分类Dev

根据标题将数据从Sheet1复制到Sheet2

来自分类Dev

如果它们匹配,我需要将 Sheet1 Column A 与 Sheet2 Column A 匹配,然后将 Sheet2 Column B 复制到 Sheet1 Column I

来自分类Dev

如果Sheet1 A包含Sheet2 C的一部分,则复制行

来自分类Dev

如何将sheet1仅包含正值的那些行反映到sheet2中?

来自分类Dev

使用规则自动将单元格从 Sheet2 复制到 Sheet1 上的自定义列

来自分类Dev

如何将数据从 sheet1 中的范围复制到 sheet2 5 次,直到到达空单元格?

来自分类Dev

Google脚本,如何使用正则表达式将一行从Sheet1复制到Sheet2,而不是仅复制一个单元格?

来自分类Dev

比较sheet1中sheet2中缺少的行,并在有条件的sheet3中显示它们

来自分类Dev

Google脚本-将SheetC数据从Sheet21复制到columnC Sheet2(如果Sheet2中尚不存在)

来自分类Dev

将行复制到sheet2的值在范围内

来自分类Dev

如何从 sheet2 在 sheet1 中运行宏

来自分类Dev

根据Excel中sheet1中的行数在sheet2中创建列

来自分类Dev

验证 sheet2 中的 Prefix 是否在 sheet1 中具有匹配值

来自分类Dev

如何在sheet2中给定单元格值的情况下迭代sheet1中的行,并将sheet1中的行替换为sheet 2中的行?

来自分类Dev

Excel,找到{max(sum(Sheet1(A)+ Sheet2(A)+ Sheet3(A))}公式的行,而在任何表中都没有总和

来自分类Dev

将数据从Sheet1复制并粘贴到Sheet2,然后删除输入的数据而不删除Sheet1中的功能

来自分类Dev

如果单元格的颜色为绿色,则从 Sheet1 复制一行并将其粘贴到 Sheet 2 中

来自分类Dev

如何在Sheet1的A列中标识不同的单词(每行或每个单元格一个单词),然后将这些行复制并粘贴到Sheet2

来自分类Dev

当Sheet1 A1:A2更改时,自动将Sheet 1 A1:A2复制到Sheet 2 A1:A2

来自分类Dev

如何在文件中搜索字符串并将找到的行和下一行复制到另一个文件?

来自分类Dev

如何在文件中搜索字符串并将找到的行和下一行复制到另一个文件?

来自分类Dev

在除Sheet1和Sheet2之外的每个工作表上运行宏

Related 相关文章

  1. 1

    获取 sheet1 中最后填充的列并将 sheet2 中的数据复制到 sheet1

  2. 2

    Excel VBA 按钮。将行从 Sheet1 复制到 Sheet2 / 条件:列值

  3. 3

    Excel VBA-在sheet2中查找字符串,并将其复制到sheet1中

  4. 4

    根据单元格条件将Sheet1的活动行复制到Sheet2并避免重复

  5. 5

    如果在sheet2中不存在从sheet1复制到sheet2的单元格

  6. 6

    Excel Online-将日期从Sheet1列A复制到Sheet2列B

  7. 7

    根据标题将数据从Sheet1复制到Sheet2

  8. 8

    根据标题将数据从Sheet1复制到Sheet2

  9. 9

    如果它们匹配,我需要将 Sheet1 Column A 与 Sheet2 Column A 匹配,然后将 Sheet2 Column B 复制到 Sheet1 Column I

  10. 10

    如果Sheet1 A包含Sheet2 C的一部分,则复制行

  11. 11

    如何将sheet1仅包含正值的那些行反映到sheet2中?

  12. 12

    使用规则自动将单元格从 Sheet2 复制到 Sheet1 上的自定义列

  13. 13

    如何将数据从 sheet1 中的范围复制到 sheet2 5 次,直到到达空单元格?

  14. 14

    Google脚本,如何使用正则表达式将一行从Sheet1复制到Sheet2,而不是仅复制一个单元格?

  15. 15

    比较sheet1中sheet2中缺少的行,并在有条件的sheet3中显示它们

  16. 16

    Google脚本-将SheetC数据从Sheet21复制到columnC Sheet2(如果Sheet2中尚不存在)

  17. 17

    将行复制到sheet2的值在范围内

  18. 18

    如何从 sheet2 在 sheet1 中运行宏

  19. 19

    根据Excel中sheet1中的行数在sheet2中创建列

  20. 20

    验证 sheet2 中的 Prefix 是否在 sheet1 中具有匹配值

  21. 21

    如何在sheet2中给定单元格值的情况下迭代sheet1中的行,并将sheet1中的行替换为sheet 2中的行?

  22. 22

    Excel,找到{max(sum(Sheet1(A)+ Sheet2(A)+ Sheet3(A))}公式的行,而在任何表中都没有总和

  23. 23

    将数据从Sheet1复制并粘贴到Sheet2,然后删除输入的数据而不删除Sheet1中的功能

  24. 24

    如果单元格的颜色为绿色,则从 Sheet1 复制一行并将其粘贴到 Sheet 2 中

  25. 25

    如何在Sheet1的A列中标识不同的单词(每行或每个单元格一个单词),然后将这些行复制并粘贴到Sheet2

  26. 26

    当Sheet1 A1:A2更改时,自动将Sheet 1 A1:A2复制到Sheet 2 A1:A2

  27. 27

    如何在文件中搜索字符串并将找到的行和下一行复制到另一个文件?

  28. 28

    如何在文件中搜索字符串并将找到的行和下一行复制到另一个文件?

  29. 29

    在除Sheet1和Sheet2之外的每个工作表上运行宏

热门标签

归档