title: Perform a FIND, within VBA, from the bottom of a range up
body: <p>Is it possible for <code>Find</code> to start from the bottom of a range and work up?</p>
  
  <p>I would like my code to first find a record number located on a master list.  Once it finds the record number I want it to assign that deals name, an <code>offset</code> of the record number, to a variable and then search up the master list for the first deal with that name.  </p>
  
  <p>I have code that finds the record number, assigns the deal name to a variable and then loops up each cell until it finds a match.  Although this way works, the loop processing time is significantly slower than the find processing time and I am searching for the fastest solution.</p>
  
  <p>If reverse find is not a possibility, would a vlookup work?  Possibly by, creating a range beginning one row above the record number to the top and have vlookup find the last occurrence?</p>
  
  <pre><code>PendingBRow = ThisWorkbook.Sheets("PendingLog").Range("A65000").End(xlUp).Row
  MasterBRow = ThisWorkbook.Sheets("MasterLog").Range("A65000").End(xlUp).Row
  
  For D = 2 To PendingBRow
      With ThisWorkbook.Sheets("PendingLog").Range("A" &amp; D)
          PendingRecNum = .Value
          PendingDealName = .offset(0, 3).Value
          PDLenght = Len(PendingDealName) - 4
          PendingDealName = Left(PendingDealName, PDLenght)
          PendingDealName = UCase(PendingDealName)
          PendingDealName = Trim(PendingDealName)
      End With
  
      With ThisWorkbook.Sheets("MasterLog").Range("B2:B" &amp; MasterBRow)
          Set c = .Find(PendingRecNum, LookIn:=xlValues)
          If Not c Is Nothing Then
              firstRow = c.Row - 1
  
              O = 1
              Do Until firstRow = O
                  LastWorkedBy = ThisWorkbook.Sheets("MasterLog").Range("E" &amp; firstRow).offset(0, 20)
                  MasterRecNum = ThisWorkbook.Sheets("MasterLog").Range("E" &amp; firstRow).offset(0, -3).Value
                  dealName = ThisWorkbook.Sheets("MasterLog").Range("E" &amp; firstRow).Value
                  dealName = Left(dealName, 10)
                  dealName = UCase(dealName)
                  dealName = Trim(dealName)
  
                  If PendingDealName = dealName Then
                      MasterLastWorkedBy = LastWorkedBy
                      ThisWorkbook.Sheets("PendingLog").Range("A" &amp; D).offset(0, 19).Value = MasterLastWorkedBy
  
                      firstRow = O
                  Else
                      firstRow = firstRow - 1
                  End If
  
              Loop
  
          End If
      End With
  
  Next D
  </code></pre>