私のExcelスプレッドシートには、11列と500k行が含まれています。各行は、8チャンネルデジタルロジックアナライザのサンプルです。列Aはタイムスタンプで、列B〜Iはビット値(各セルでは1または0のいずれか)です。列Jは、CONCATENATE(B、C、D、E、F、G、H、I)で作成されたバイナリのバイトです。 K列はBIN2HEX(J)で作成された16進数の同じバイトです。前の行の同じセルが同じ場合、Excelで行全体を削除する方法はありますか?
ロジックアナライザは、データをかなりオーバーサンプリングしました。私は、バイト値が変更されていないサンプルを削除し、最初のサンプルのみを一連の連続した複製に保持したい。私は、セルK1を選択した後、次のコードを実行した場合、それは私が望むようオーバーサンプルを削除しますが、それ
A B C D E F G H I J K
0.67497 1 0 0 1 1 1 1 0 10011110 9E
0.67498 1 0 0 1 1 1 0 1 10011101 9D
0.67501 1 0 0 1 1 1 1 0 10011110 9E
:これに
A B C D E F G H I J K
0.67497 1 0 0 1 1 1 1 0 10011110 9E
0.67498 1 0 0 1 1 1 0 1 10011101 9D
0.67499 1 0 0 1 1 1 0 1 10011101 9D
0.67500 1 0 0 1 1 1 0 1 10011101 9D
0.67501 1 0 0 1 1 1 1 0 10011110 9E
:他の言葉で、私はこれを変更したいです非常にゆっくり実行されます。 (完了には数日かかります)
Sub DeleteOverSamples()
Do Until ActiveCell.Value = ""
If ActiveCell.Value = ActiveCell.Offset(-1, 0).Value Then
ActiveCell.EntireRow.Delete
ElseIf ActiveCell.Value <> ActiveCell.Offset(-1, 0).Value Then
ActiveCell.Offset(1, 0).Select
End If
Loop
End Sub
これをより効率的にするにはどうすればよいですか? EntireRow.Deleteが時間のかかる関数である場合、一度に削除する複数の行を選択できますか(何百というサンプルに対して繰り返し値が繰り返されることがあります)。どうもありがとう!
excelデータをcsvとしてエクスポートし、sanerで処理することができます。 – pvg
(a)重複しない情報を新しいシートに書き込んだり、古いシートを削除したりするのはなぜですか? (b)削除方法を実際に使用したい場合は、削除コードを実行する前に列JとKを数式から値に変更しましたか?そうでない場合は、コードを実行する前に計算をマニュアルに切り替えましたか? (計算リストのサイズを超えている可能性があるため、シートが変更されるたびにすべてを再計算している可能性があります)。(c)コードを実行する前に 'ScreenUpdating'をオフにしましたか? – YowE3K