|As should this, but possibly in a more efficient manner.|
Dim LR As Long, c As Variant
LR = .Range("C" & Rows.Count).End(xlUp).Row
Set c = .Find("High", lookat:=xlWhole)
If Not c Is Nothing Then
firstAddress = c.Address
nxtRw = _
Sheets("Transfer").Range("B" & Rows.Count).End(xlUp).Row + 1
Sheets("Transfer").Range("B" & nxtRw) = Range("B" & c.Row)
Sheets("Transfer").Range("D" & nxtRw) = Range("D" & c.Row)
Set c = .FindNext(c)
Loop While Not c Is Nothing And c.Address <> firstAddress
The reason I say "more efficient" is three-fold:
By using the .Find method, the code does not have to check every cell to see if it contains "High". It simply "Finds" it.
By using nxtRw = Sheets("Transfer").Range("B" & Rows.Count).End(xlUp).Row + 1 the code only has to calculate the next open row once per iteration, as opposed to twice by having to figure out the "offset" each time.
By eliminating the Copy-Paste functions, it's, well, it's simply more efficient.
Granted, in such simple code, the efficiencies might not even be seen, but as a "best practice" it stills makes sense to use the most efficient methods, at least in my opinion.
Click Here Before Posting Data or VBA Code ---> How To Post Data or Code.