現在、範囲 "A3"から重複した値が最後の行まで検索されるように書かれたコードがあります。最初のインスタンスと最後のインスタンスの両方を赤色で強調表示します。色を強調表示し、最後に最小から最大まで並べ替えます。VBA/Excelマクロコードの最適化(重複データの検索と大きなデータセットのソート)
これらの複製を後で使用して別のシートにコピーします。データは列「A3」から「V3」および最後に使用された行から始まります。データは、10,000〜40,000行のどこかの範囲にあります。おそらく受信したデータによります。
私の問題は、このマルコが非常に遅く走り、時には凍結するということです。同じ結果を達成するための別の方法がありますが、より効率的かつ迅速です。
Sub filtersort()
Dim sht As Worksheet
Set sht = Worksheets("Sheet1")
Lastrow = Range("A" & Rows.Count).End(xlUp).Row
N = Cells(Rows.Count, "A").End(xlUp).Row
sht.Range("A3:A" & Lastrow).Select
Selection.FormatConditions.AddUniqueValues
Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
Selection.FormatConditions(1).DupeUnique = xlDuplicate
With Selection.FormatConditions(1).Font
.Color = -16383844
.TintAndShade = 0
End With
With Selection.FormatConditions(1).Interior
.PatternColorIndex = xlAutomatic
.Color = 13551615
.TintAndShade = 0
End With
Selection.FormatConditions(1).StopIfTrue = False
sht.Range("A3:A" & Lastrow).Select
Application.CutCopyMode = False
Selection.AutoFilter
ActiveSheet.Range("$A$3:$A$" & Lastrow).AutoFilter Field:=1, Criteria1:=RGB(255, _
199, 206), Operator:=xlFilterCellColor
sht.Range("A3:V" & N).Sort Key1:=Range("A1"), Order1:=xlDescending, Header:=xlYes
End Sub
WOW!それはすばらしい改善でした。ありがとうございました。私は唯一の問題は、 "sheet1"から "Duplicate Data"へ重複データを転送するときに、数値フォーマットと値を同じに保つことです。 – Tom
また、これらの複製が転送された後も、シート1から重複を削除する効率的な方法はありますか?私は別のマクロでこれをやっています。 – Tom
列の形式を出力シートにコピーするコードを別に作成し、そのコードにデータを書き込むと呼び出すことができます。 – sktneer