|
▼ゆぅ さん:
>やっぱり全行消し、の方が処理早いんでしょうか。
>範囲選択で行消しだと止まったようになってしまうのです。
>データがたくさんあるからかもしれませんが。
>いろいろ試してみます(^^)
効率にこだわるなら、行の削除とかの重い処理をしなくて済む方法はないかと考えますね。
それでもやはり行削除が必要ならいっぺんに行う方法を考えます。
以下は、メモリー上(配列)でデータを加工して、
一気に吐き出す考えにしたもので、行削除不要としたコード例です。
そのたくさんのデータのあるシートで前のコードと
比較してみるといいかもしれません。
Dim v As Variant, w As Variant
Dim i As Long, j As Long, k As Long
With Worksheets(1).Range("A1").CurrentRegion
' v = .Value
v = .Columns("A:C").Value
ReDim w(1 To UBound(v, 1), 1 To UBound(v, 2))
k = 1
For j = 1 To UBound(v, 2)
w(k, j) = v(k, j)
Next
For i = 2 To UBound(v)
If v(i, 2) = w(k, 2) Then
w(k, 1) = WorksheetFunction.Max(w(k, 1), v(i, 1))
w(k, 3) = WorksheetFunction.Max(w(k, 3), v(i, 3))
Else
k = k + 1
For j = 1 To UBound(v, 2)
w(k, j) = v(i, j)
Next
End If
Next
.ClearContents
.Resize(k, UBound(w, 2)).Value = w
End With
なお、データはA:C列にあり1行目はヘッダー行であるという前提にしたので、
安易にForループを2行目からにしてMax関数での例外を避けてますけど。
|
|