Sub Analytical()
'Dim WM As Workbook
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
Dim srcWS As Worksheet, desWS As Worksheet, RngList As Object
Dim LastRow As Long, bottomA As Long, Rng As Range
Set srcWS = ThisWorkbook.Sheets("ABC Stage")
LastRow = srcWS.Cells.Find("*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
Workbooks.Open "C:\Users\paulam\Documents\Monitoring Report_2020.T-1.xlsm"
Set desWS = Sheets("Treat Summary") ''
bottomA = desWS.Range("H" & desWS.Rows.Count).End(xlUp).Row
desWS.Range("H9:Z" & bottomA).ClearContents
Set RngList = CreateObject("Scripting.Dictionary")
For Each Rng In srcWS.Range("A2:A" & LastRow)
If Not RngList.Exists(Rng.Value) Then
RngList.Add Rng.Value, Rng.Row
End If
Next Rng
For Each Rng In desWS.Range("H9", desWS.Range("H" & desWS.Rows.Count).End(xlUp))
If RngList.Exists(Rng.Value) Then
Intersect(srcWS.Rows(RngList(Rng.Value)), srcWS.Range("B:B,C:C,D:D,E:E,F:F,G:G,H:H,I:I,J:J,K:K,L:L,M:M,N:N,O:O,P:P,Q:Q,R:R,S:S,T:T")).Copy
desWS.Cells(Rng.Row, 2).PasteSpecial xlPasteValues
End If
Next Rng
RngList.RemoveAll
LastRow = desWS.Cells.Find("*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
For Each Rng In desWS.Range("A9:A" & bottomA)
If Not RngList.Exists(Rng.Value) Then
RngList.Add Rng.Value, Nothing
End If
Next Rng
For Each Rng In srcWS.Range("A2", srcWS.Range("A" & srcWS.Rows.Count).End(xlUp))
If Not RngList.Exists(Rng.Value) Then
Intersect(srcWS.Rows(Rng.Row), srcWS.Range("A:A,B:B,C:C,D:D,E:E,F:F,G:G,H:H,I:I,J:J,K:K,L:L,M:M,N:N,O:O,P:P,Q:Q,R:R,S:S,T:T")).Copy
desWS.Cells(desWS.Rows.Count, "A").End(xlUp).Offset(1, 0).PasteSpecial xlPasteValues
End If
Next Rng
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
End Sub
Bookmarks