at the top of the macro, you have:
Const strTest = "IN PROGRESS"
add another similar line right after that one, we'll make this one strTest2:
Const strTest2= "ON HOLD"
Then in the code, the line that checks for this string:
If Not (rngCells.Find(strTest) Is Nothing) Then
change to
If Not (rngCells.Find(strTest) Is Nothing) OR Not (rngCells.Find(strTest2) Is Nothing) Then
Honestly, that logic makes my brain hurt, and the code suggests you are checking a bunch of columns (F through T) to find the status, instead of just the one you show (column G?).
If you have data validation on column G (and the status is ONLY in column G) and know that the entry will always be exactly (case sensitive) "IN PROGRESS" or "ON HOLD" with no extra spaces or other characters, I'd probably just use
For I = 1 To NoRows
StatusValue= wsSource.Range("G" & I ).value
If StatusValue = strTest or StatusValue = strTest2 then
'(the lines that move just your target columns goes here)
DestNoRows = DestNoRows + 1
End If
Next I