私はVBAを初めて使用し、Webサイトの列のセルにnone
という単語が含まれるすべての行を削除する(および可能であればセルを上に移動する)方法を考えています。テーブルには5000以上のレコードが含まれているため、時間を大幅に節約できます。
提案をお願いします。事前に感謝します!
これはVBAタスクではありません-この特定のタスクは、自動フィルターで簡単に解決できます。
1.自動フィルターを挿入します(Excel 2010では、[ホーム]->(編集)並べ替えとフィルター->フィルターをクリック)
2。 [ウェブサイト]列でフィルタリングする
3。 「なし」をマークして削除します
4。フィルターをクリア
OK私はこれをVBAで知っていますが、一度だけ一括削除を行う必要がある場合は、次のExcel機能を使用できます。 http://blog.contextures.com/archives/2010/06/21/fast -way-to-find-and-delete-Excel-rows / これが誰にも役立つことを願っています
文字列「paper」を探す例:
[開発者]タブで[Visual Basic]に移動し、モジュールを作成します。次を貼り付けてコピーします。必要に応じて、コードを変更することを忘れないでください。次に、モジュールを実行します。
Sub sbDelete_Rows_IF_Cell_Contains_String_Text_Value()
Dim lRow As Long
Dim iCntr As Long
lRow = 390
For iCntr = lRow To 1 Step -1
If Cells(iCntr, 5).Value = "none" Then
Rows(iCntr).Delete
End If
Next
End Sub
lRow:現在のファイルの行数を入力します。
「If」の数字「5」は、5番目の(E)列用です
これは別のコメントで言及されましたが、このようなことを試すことができます。
Sub FilterAndDelete()
Application.DisplayAlerts = False
With Sheet1 'Change this to your sheet name
.AutoFilterMode = False
.Range("A3:K3").AutoFilter
.Range("A3:K3").AutoFilter Field:=5, Criteria1:="none"
.UsedRange.Offset(1, 0).Resize(ActiveSheet.UsedRange.Rows.Count - 1).Rows.Delete
End With
Application.DisplayAlerts = True
End Sub
私はこれをテストしておらず、メモリからのものであるため、微調整が必要になる場合がありますが、数千行をループせずにジョブを完了する必要があります。 UsedRange
が正しいように11月7日を削除するか、.Offset(1,0)
のオフセットを1ではなく2行に変更する必要があります。
一般に、.Delete
を実行する前に、Deleteの代わりに.Select
を使用してマクロを実行し、正しい範囲が削除されることを確認できます。適切な範囲を確認するためにチェックする価値があります削除されています。
これを試して ...
Dim r as Range
Dim x as Integer
For x = 5000 to 4 step -1 '---> or change as you want //Thanx 4 KazJaw
set r = range("E" & format(x))
if ucase(r.Value) = "NONE" then
Rows(x).EntireRow.Delete
end if
Next