Vba 搜索/筛选excel工作表中的所有列以查找字符串,然后将包含的行复制到另一工作表中的第一个空行

Vba 搜索/筛选excel工作表中的所有列以查找字符串,然后将包含的行复制到另一工作表中的第一个空行,vba,Vba,对于stackoverflow和VBA(以及在较小程度上的一般脚本),我是新手,因此如果我违反了任何规则或犯了任何愚蠢的错误,我向您道歉 目前我有一个一维数组,其中包含几个字符串。我想构建一个循环,为数组中的每个字符串搜索sheet1的所有列以查找字符串,然后将包含行复制到sheet2中的第一个空白行 问题是,我找不到一个内置的子例程,它允许我在多个/所有列中搜索搜索词,只在单个列中搜索。我假设有一个内置的东西可以做到这一点,因为这似乎是一件显而易见的事情——我在哪里可以找到它?如果您感觉很好,

对于stackoverflow和VBA(以及在较小程度上的一般脚本),我是新手,因此如果我违反了任何规则或犯了任何愚蠢的错误,我向您道歉

目前我有一个一维数组,其中包含几个字符串。我想构建一个循环,为数组中的每个字符串搜索sheet1的所有列以查找字符串,然后将包含行复制到sheet2中的第一个空白行

问题是,我找不到一个内置的子例程,它允许我在多个/所有列中搜索搜索词,只在单个列中搜索。我假设有一个内置的东西可以做到这一点,因为这似乎是一件显而易见的事情——我在哪里可以找到它?如果您感觉很好,并且有一些示例代码,请发布:)

谢谢,
路易


另外,如果有人想推荐一些VBA指南/文档,请推荐!我的google fu很弱,到目前为止我还没有找到太多。

这不是一个真正有效的代码,但它应该能让你很好地了解如何使用循环(列、行、数组)
注意:如果您的电子表格中有某种结构(例如标题),那么您可以在行中找到最后使用的列-这比在工作表中的所有列中循环更有效

   Sub doTheJob()
        Application.ScreenUpdating = False
        Dim ws1 As Worksheet, ws2 As Worksheet, arr() As String, str$, i&, j&, k&

        Set ws1 = ThisWorkbook.Sheets(1)
        Set ws2 = ThisWorkbook.Sheets(2)

        str = "this is your string"
        arr = Split(str, " ")

        For i = 1 To ws1.Columns.Count
            For j = 1 To ws1.Cells(Rows.Count, i).End(xlUp).Row
                For k = LBound(arr) To UBound(arr)
                    If StrComp(CStr(ws1.Cells(j, i).Value), arr(k), vbTextCompare) = 0 Then
                        ws1.Rows(j & ":" & j).Select
                        Selection.Copy
                        Dim nxt&
                        nxt = ws2.Range("A" & Rows.Count).End(xlUp).Row + 1
                        ws2.Rows(nxt & ":" & nxt).Select
                        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
                        :=False, Transpose:=False
                    End If
                Next k
            Next j
        Next i
    Application.ScreenUpdating = True
End Sub

后期编辑-它现在应该复制整行

这应该让您开始使用
.Find
方法。它是
范围
对象的一种方法。所以你可以在任何你想指定的范围内使用这个方法。@芒果我确实考虑过使用.find方法,但是我遇到的问题是我不知道如何决定运行.find循环需要多少次才能找到表中搜索词的每一个实例。你建议如何避开这个问题?谢谢:)这很有帮助,谢谢!我想做的差不多,但我认为它将内置,我不确定的语法。我将稍微处理一下这个,然后看看我是否能想出办法让它复制整行,而不仅仅是那个单元格。我希望过一会儿我会再次打扰你:)好的,请看编辑。我只想问你一个问题。如果要复制/粘贴整行,则在所有列之间循环有什么意义?听起来你好像在重复……你将得到WB2中完全相同的行。在列中循环的要点是,我可以搜索每列中的每个单元格,而不仅仅是一列。我找不到任何其他方法来做这件事。搜索范围是整个工作表。确定。我看不到您的数据结构,但我正在尝试将其可视化数据结构只是一个由单个单词字符串组成的一维数组。它是搜索词的容器,而不是我正在搜索的内容:)