2017-08-17 20 views
0

おはよう、複数の条件一致/検索vba

私は複数のワークシートで複数の条件の検索をプログラムする方法を見つけようとしています。

私は行a:日付、行b:文字列、行c:量のデータを持つ3つのwsを持っています。私の目的は、列bとcに完全に一致する3枚のシートすべてに重複を見つけることです。結果のマッチは、新しく作成されたシートにコピーする必要があります。

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 

それを実行している私はエラーを取得する:ワークシートが範囲外である

は、これは私がこれまでにしようとしているものです。助けてください。

ありがとうございます。

答えて

0

3枚しかない場合は、Set WS3 = ThisWorkbook.Sheets(4)という行が間違っています.4枚目を参照してください。 4番目のワークシートが必要な場合は、Worksheets.Addメソッドを使用する必要があります。その機能をニーズに応じて使い分ける方法を明確に理解するには、Microsoft siteを参照してください。

+0

HI Michal、4枚目はメインページですが、上記のコードには含まれていませんが、ファイル内にあります。また、これははるかに大きなコードの一部、私はちょうど関連部分を含めるか、私は仮定します。 –

関連する問題