使用VBA在多个列中查找值

时间:2012-05-10 20:49:52

标签: excel-vba vba excel

我对excel vba相对较新,但我正在寻找一些关于创建一个宏的建议,我可以在工作簿中的许多工作表上运行。

我正在寻找的建议是采用3列,我可以在这些列中找到某些值。哪一行在满足这三列中的每一列中都有一个值,以将这些行与所有列标题一起保存到同一工作簿中的新工作表中。所以,如果我的工作簿中有10个工作表并运行宏,我需要最终得到20个工作表。

任何人都可以帮助我吗?

1 个答案:

答案 0 :(得分:0)

由于您不熟悉VBA,我会给您一些代码。上帝知道我在新的时候有很多帮助。看一下这个。我不确定你将如何传递要寻找的值,但这应该会给你一个很好的开始。

Sub find3_makesheet()

Dim strValue As String
Dim wks As Worksheet
Dim rng1 As Range, rng2 As Range, rng3 As Range

strValue = "myValue"

For Each wks In Worksheets

    With wks

        If Not .Columns(1).Find(strValue, lookat:=xlWhole) Is Nothing Then Set rng1 = .Columns(1).Find(strValue, lookat:=xlWhole)
        If Not .Columns(2).Find(strValue, lookat:=xlWhole) Is Nothing Then Set rng2 = .Columns(2).Find(strValue, lookat:=xlWhole)
        If Not .Columns(2).Find(strValue, lookat:=xlWhole) Is Nothing Then Set rng3 = .Columns(2).Find(strValue, lookat:=xlWhole)

        If Not rng1 Is Nothing And Not rng2 Is Nothing And Not rng3 Is Nothing Then
            ThisWorkbook.Worksheets.Add After:=Worksheets(Worksheets.Count)
            Set wksCopyTo = ActiveSheet
            .Rows(1).EntireRow.Copy wksCopyTo.Rows(1)
            rng1.EntireRow.Copy wksCopyTo.Rows(2)
            rng2.EntireRow.Copy wksCopyTo.Rows(3)
            rng3.EntireRow.Copy wksCopyTo.Rows(4)
        End If

    End With

    Set rng1 = Nothing
    Set rng2 = Nothing
    Set rng3 = Nothing
Next

End Sub