【问题标题】:Multiple criteria match/search vba多个条件匹配/搜索 vba
【发布时间】:2017-08-17 08:45:04
【问题描述】:

早安,

我头疼地想弄清楚如何在多个工作表上编写多条件搜索。

我有 3 个 ws 在 a 行有数据:日期,b 行:字符串,c 行:金额。我的目标是在所有三张表中找到在 b 列和 c 列上完全匹配的重复项。生成的匹配项应复制到新创建的工作表上。

这是我迄今为止尝试过的:

Dim WS As Worksheet, WS1 As Worksheet, WS2 As Worksheet, WS3 As Worksheet
Dim st_cell As Range, frow1 As Range, frow2 As Range, frow3 As Range, mydata As Range, cell As Range, Descr1 As Range, Descr2 As Range, Descr3 As Range
Dim p As Long

Set WS1 = ThisWorkbook.Sheets(2)
Set WS2 = ThisWorkbook.Sheets(3)
Set WS3 = ThisWorkbook.Sheets(4)

    Sheets.Add after:=Sheets(Sheets.Count)
    Sheets(ActiveSheet.Name).Name = "Report"
    Sheets("Report").Range("A1") = "Description"
    Sheets("Report").Range("B1") = "Amount"
    erow = Sheets("Report").Cells(1, 1).CurrentRegion.Rows.Count + 1



    Set st_cell = WS1.Cells(2, 2)
        lastrow = WS1.Cells(WS1.Rows.Count, st_cell.Column).End(xlUp).row


    Set frow1 = WS2.Cells(2, 2)
        lastrow1 = WS2.Cells(WS2.Rows.Count, frow1.Column).End(xlUp).row


    Set frow2 = WS3.Cells(2, 2)
        lastrow2 = WS3.Cells(WS3.Rows.Count, frow2.Column).End(xlUp).row


    With WS1
    For i = 2 To lastrow
        Set Descr1 = WS1.Range(Cells(i, 2), Cells(i, 3))


    For Each Descr1 In ThisWorkbook.Worksheets
                    If (Descr1 <> Empty) Then
    For p = 2 To lastrow1 And lastrow2
        Set Descr2 = WS2.Range(Cells(p, 2), Cells(p, 3))
        Set Descr3 = WS3.Range(Cells(p, 2), Cells(p, 3))

                    Set mydata = WS1.Range(Cells(i, 2), Cells(i, 3)).Find(what:=Descr1, after:=.Cells(i, 2), LookIn:=xlValues, lookat:=xlWhole)
                If Not mydata Is Nothing Then
                    Sheets("Report").Cells(erow, 1) = WS1.Cells(i, "b")
                    Sheets("Report").Cells(erow, 2) = WS1.Cells(i, "c")
                    Exit Sub
                End If
    Next p
    End If
    Next Descr1


Next i
End With

End Sub

运行时出现错误:工作表超出范围。请帮忙。

提前致谢。

【问题讨论】:

    标签: vba match


    【解决方案1】:

    如果您只有 3 张纸,Set WS3 = ThisWorkbook.Sheets(4) 行是错误的,因为您引用了第四张纸。如果你想要第四张工作表,你应该使用Worksheets.Add 方法。要清楚地了解如何根据您的需要使用该功能,请参阅此Microsoft site

    【讨论】:

    • 嗨,Michal,第 4 页是主页,我没有将它包含在上面复制的代码中,但它在我的文件中。这也是更大代码的一部分,我只是包含了相关部分,或者我假设。
    猜你喜欢
    • 2016-09-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-18
    • 1970-01-01
    • 2013-08-30
    • 2019-12-28
    • 2015-12-23
    相关资源
    最近更新 更多