-4
ありがとうございました。セル値が "True"の場合は "ClientTradeDetails"というシートの列Oを検索するマクロを作成し、セル値が "True"の場合はその行全体を取り出して "TrueValues"というシートに貼り付けます。コードを高速化する必要があります(1枚のシートから別のシートにコピー/貼り付け)
これは動作しますが、非常に遅いです。ご覧のとおり、マスターシートに65536行分のデータがあります。 Copy/Pasteが問題だと思っていましたが、Copyメソッドを避けるためにこれを変更する方法はわかりません。どんな助け?
Sub MoveTrue()
Sheets("ClientTradeDetails").Select
Dim tfCol As Range, Cell As Object
Set tfCol = Range("O2:O439050") 'Substitute with the range '
For Each Cell In tfCol
If Cell.Value = "True" Then
Cell.EntireRow.Cut
Sheets("TrueValues").Select
ActiveSheet.Range("A65536").End(xlUp).Select
Selection.Offset(1, 0).Select
ActiveSheet.Paste
End If
Next
End Sub
問題は、1つのExcelシートに多くのデータがあり、データ管理の選択肢が不十分な場合にマクロを補うことが必要であるということです。 – DejaVuSansMono
[AutoFilterメソッド](https://msdn.microsoft.com/en-us/library/office/aa221844.aspx)を使用して、1つの列でtrueをフィルタリングし、値をバルク転送します。必要に応じて、他の列に対しても繰り返します。現在、ワークシート全体を(すべての目的と目的で)検索しています。確かに、真を含むかもしれないいくつかの列しか持っていません。 – Jeeped
@Jeepedとは、 'Cell.Entire.Cut'を' Intersect(UsedRange、Cell.EntireRow).Cut'のように置き換えていると思います。この方法では、必要な列のみをコピーします。行全体ではありません(おそらくすべての列にまたがって埋められません)。[避けてください](http://stackoverflow.com/questions/10714251/how-to-avoid-using-select-in-excel-vba-macros )また、値の量に応じてAutoFitlerも遅くなる可能性がありますが、すべての行をループするよりもはるかに速い –