数十万件のデータベースファイルがあった場合、単純に条件削除するというのは処理に1時間近くかかってしまう恐れがある。

一般的にこの処理で考えられるのは。

MaxRow = Cells(Row.Count, 1).End(xlUp).Row '穴抜けがない前提で1列目を基準に調べた行数を代入
For i = 1 To MaxRow Step 1
If Cells(i, 3).Value = "" Then '※3という数字は対象の列番号、これは3列のカラムに空白がある場合という意味
Row.(i).Delete
End If
Next i

だが、これだとCell(1, 3)を参照、Cell(2, 3)を参照、Cell(3, 3)を参照、Cell(4, 3)を参照~という命令であり、これを数十万回繰り返すとなると洒落にはならない。

解決策としては、配列変数やDictionary関数を利用し、連続的な処理を行わない事だと思うが、私のつぶらな脳みそではいまいち解決策が出せなかった。
ぶち込んだ配列変数から条件処理する方法を考えていたら頭が痛くなり、Dictionary関数はどちらかというかVLOOKUP的な関数なので色々と悩んでいた。

因みに配列の場合。

MaxRow = Cells(Row.Count, TargetScope).End(xlUp).Row
ArryData = Range("A1:A" & MaxRow)

みたいに、Forやloopで一つずつ処理を行わずに一括で配列変数にぶち込めるので、ここから処理できる筈である。 そんで先人の知恵を借りようと色々と検索していたらば、信じられないくらい高速で処理してくれるものを一つだけ見つけた。 ちょっと読みにくい部分があったり、用途が限定的で応用が利かなかった部分を調整する為にテコ入れしているが、完成形が下記である。

Option Explicit

Sub TargetDelete()
Dim RR As Range
Dim V1 As Variant, V2 As Variant
Dim maxRow As Long, maxCol As Long
Dim i As Long, j As Long, c As Long

'変数RRに配列に代入したい範囲を少しずつ細かくしながらぶち込んで、配列に動的に代入する
Set RR = Range("A1")
Set RR = Range(RR, Range("A" & Rows.count.End(xlUp))
Set RR = Intersect(RR.EntireRow, RR.Worksheet.UsedRange)
V1 = RR.Value
maxRow = UBound(V1): maxCol = UBound(V1,2)
ReDim V2(1 To maxRow, 1 To maxCol)

For i = 1 To maxRow
    '下記のBool関数がTrueを返した場合、その行を配列に記録しない
    '条件を増やす度に「V1(i, j)」の引数を増やしていく(jに指定の列番号)
    'この場合3列目と2列目に検索をかけている
    If DeleteRow (V1(i, 3), V1(i,2)) Then 
    Else
        c = c + 1
        For j = 1 To maxCol
            V2(c, j) = V1(i, j)
        Next j
    End If
Next i
RR.Value = V2 '配列に記録されたデータを動的な対象範囲RRのValueにぶち込んで反映させる

End Sub

Function DeleteRow(Va As Variant, Vb As Variant) As Boolean '上記で二列目(Va)と三列目(Vb)に対応する引数
If Va = "" Or Bb = "TEST" Then 'もし三列目が空白か二列目がTESTと入っていたの場合、Trueを返す
    DeleteRow = True
Else
    DeleteRow = False
End If
End Function

と、こんな感じである。
引数を追加して条件式を複雑化すれば、〇列がxで△列がyの場合削除、置換なども少し書き換えるだけで可能である。
しかも数十万件を一瞬で処理できるのでかなり実用的なソースコードではないだろうか。

問題点としては多分プログラマーにとっては簡単で初学者や自称プログラミング出来る人(※俺)にはやや難しいかもしれない。
配列ならまだしもRangeの特殊なクラスを用いたり、正直初歩的なBAでそこまで使わなくても何とかなる関数定義Functionを使ったりするので見慣れない人だと本当に見慣れないかもしれない。(特に独学だと引数や関数の概念って後回しにしたり、知らないままそこそこ身についちゃったりする)
というか俺が最初見た瞬間よくわからなかったので(※こんなんでも一応本職のPGです)、しばらく色々弄って「あ、これ作った人頭良い~」という顛末である。