2017-02-03 11 views
0

〜50,000行のデータシートがあります。各行は、位置識別子(列C)および他のデータ(列D~H)を有する。位置識別子が他のテーブルの73の値のいずれかと一致しない行をすべて削除する必要があります。Excel VBA:セルにテーブルの値が含まれていない場合は、行を削除します。

私は新しいシートを倍のアクション数百を繰り返す必要がありますので(むしろ式/条件付き書式/テーブルより)VBAを使用する必要があります。

私が見つけた最も近い「How to delete all cells that do not contain specific values (in VBA/Excel)」です。しかし、答えで提供されたコードは機能しませんでした。エラーは発生せず、何も起こりませんでした。

そこに任意の助けに感謝!ここで

+1

コピーしたコードを変更することなく動作することを、その可能性が低いです。それに応じて変更を加える必要があります。既に試したことがある場合は、失敗したコードと声明を私たちに提示してください。たぶん誰かが覗き見て、あなたの問題を解決するように提案するでしょう。 –

答えて

0

あなたが行く:

Sub Remove_Rows() 
Dim i As Long 

i = Range("C" & Cells.Rows.Count).End(xlUp).Row ' Find the bottom row number 

Do Until i = 1 ' This loops to the top row before stopping (assuming you have a header row that you want to keep) 
    If WorksheetFunction.CountIf(Sheets("Sheet2").Range("A:A"), Cells(i, 3)) = 0 Then Cells(i, 1).EntireRow.Delete 'This checks to see if the value in the C column is in sheet2 - If not, deletes row 
    i = i - 1 'This step backwards though you data rows - the reason to use this as opposed to "forward stepping" is to avoid issues causes on the count when a row is deleted 
Loop 

End Sub 
関連する問題