2017-07-21 9 views
0

に見つかった行、私は技術的にネストされたループで次のコードを、持っている.Findが

Dim compareRange As Range 
Dim toCompare As Range 
Dim rFound As Range 
Dim cel As Range 

Set compareRange = Worksheets("sheet2").Range("A2:A" & Lastrow3) 
Set toCompare = Worksheets("sheet3").Range("A2:A" & Lastrow4) 
Set rFound = Nothing 

For Each cel In toCompare 
    Set rFound = compareRange.Find(cel) 

どのように私は、値が別々のシートで見つかった行を見つけるのですか?たとえば、AAAAがsheet3の1行目にあり、それが5行目のシート5で見つかった場合、5行目の値5を取得するにはどうすればよいですか?

+1

ちょうどない、 'rFound.Row'を使用しますか? – BruceWayne

+1

^^しかし、ブロック内であれば 'If Not rFound Is Nothing Then'ブロック内にあります(データがFindで常に一致することが保証されていない限り) – YowE3K

+0

私のシートに複数の値がある場合1列Aには111があり、列2には列Aがあります。111には、常に同じものを見つけることができます。 –

答えて

1

FINDは、セルへの参照を返します。その参照から、セルのすべてのプロパティにアクセスできます。手動で参照を設定する場合と同じ方法です。

見つかった項目の次または前のインスタンスに移動するには、FINDNEXTまたはFINDPREVIOUSを使用します。

以下のコードは、各見つかった項目から様々な値を返す方法を示しています

Sub Test() 

    Dim compareRange As Range 
    Dim toCompare As Range 
    Dim rFound As Range 
    Dim cel As Range 
    Dim FirstAddress As String 

    Dim LastRow3 As Long 
    Dim LastRow4 As Long 

    LastRow3 = 189: LastRow4 = 9 

    Set compareRange = Worksheets("sheet2").Range("A2:A" & LastRow3) 
    Set toCompare = Worksheets("sheet3").Range("A2:A" & LastRow4) 

    With compareRange 
     For Each cel In toCompare 
      'Find the first instance of cel. 
      Set rFound = .Find(cel) 
      'Check that rFound contains a value otherwise an error will occur when 
      'trying to return values from it. 
      If Not rFound Is Nothing Then 
       FirstAddress = rFound.Address 
       Do 
        With rFound 
         Debug.Print "Row: " & .Row & " - Col: " & .Column & _ 
          " - Sheet: " & .Parent.Name & " - Book: " & .Parent.Parent.Name 
        End With 
        'Find the next instance of cel. 
        Set rFound = .FindNext(rFound) 
       Loop While FirstAddress <> rFound.Address 
      End If 
     Next cel 
    End With 

End Sub 

https://msdn.microsoft.com/VBA/Excel-VBA/articles/range-find-method-excel
https://msdn.microsoft.com/VBA/Language-Reference-VBA/articles/with-statement