0

stackoverflow 和 VBA 的新手(以及一般的脚本在较小程度上)所以如果我违反了任何规则或犯了任何愚蠢的错误,我深表歉意。

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

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

谢谢,
路易斯

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

4

1 回答 1

0

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

   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

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

于 2013-04-15T13:08:15.763 回答