VBAメモ

セル格納配列 = .Columns(1)
〜〜〜処理〜〜〜
.Columns(1) = セル格納配列

としていたところを

セル格納配列 = .Range(.Cells(1, 1), .Cells(行数, 1))
〜〜〜処理〜〜〜
.Range(.Cells(1, 1), .Cells(行数, 1)) = セル格納配列

てな感じで範囲をきっちり絞ったら、これまでループの17番目で必ずメモリ不足で落ちていたところを余裕で通過して全部回せるようになった。
RangeよりColumnsの方がメモリ使用量が少ないに違いない!と勝手に思い込んでいた俺がバカだった。
関係ないセルにいたずらしない方がいいのは知っていたけれど、ここまで差が出るとはね。
やってくれるぜ。