6 minutes is still a long time. After Kenneth's suggestion, your next savings would come from getting rid of the loops. You could try this approach in the code

- insert a helper columns
- in this column add a formula that checks the condition and inserts say 1 if true, blank if not
- set a range variable to the 1 values in the helper column - SpecialCells(xlCellTypeConstants)
- do a block update of the range value offset by the column (to get the real target column) with the formula - (take care to get the correct start row for your formula)
- delete the helper column