VBAを初めて使用していて、ウェブサイトの列セルに単語none
が含まれているすべての行を削除する方法を考え出しています。テーブルには5000以上のレコードが含まれているため、時間が大幅に節約できます。セルに文字列が含まれている場合は、行全体を削除します。X
私は何か提案をいただきありがとうございます。事前に多くの感謝!
http://i39.tinypic.com/5ano1d.png
VBAを初めて使用していて、ウェブサイトの列セルに単語none
が含まれているすべての行を削除する方法を考え出しています。テーブルには5000以上のレコードが含まれているため、時間が大幅に節約できます。セルに文字列が含まれている場合は、行全体を削除します。X
私は何か提案をいただきありがとうございます。事前に多くの感謝!
http://i39.tinypic.com/5ano1d.png
これはVBAタスクではありません。この特定のタスクは、自動フィルタで最も簡単に解決されます。
1.Insertオートフィルター(エクセルホーム - 2010クリック>(編集)ソート&フィルターで - >フィルター)「ウェブサイトの」列
3.マーク「なし」と削除に
2.フィルターそれら
4絞り込みを解除
これを試してみてください...
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
これは、別のコメントで示唆したましたが、あなたはこのような何かを試みることができます。
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
を実行する前に、適切な範囲が削除されていることを確認するためにチェックする価値がある正しい範囲が削除されることを確認できる方法で、代わりに.Select
でマクロを実行します。
[OK]を私はVBAのためにこれを知っていますが、一度一括オフ削除するためにこれを行う必要がある場合は、次のExcel機能を使用することができます。http://blog.contextures.com/archives/2010/06/21/fast-way-to-find-and-delete-excel-rows/希望これは誰
例が見て助け文字列 "paper"の場合:
鮮やか!私はこれを一括して行うことができる唯一の方法(VBAを使用しない)です。 – Holf
これは受け入れられたはずの答えです。フィルターを使用すると、行数が50,000以上の場合は実行できません。 –
FYI:これはWindows専用のソリューションであり、OSX Excel unfortunatleyでは機能しません。 –
[開発者]タブで[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:現在のファイルが持っている行の数を入れてください。
で数「5」第五(E)欄
VBAを使用して行を削除する方法については、このサイトでは非常に多くの例がありますが、そうでない場合は、連続した範囲をソートして削除することを検討しました。とにかく非常に速くなりますか? – pnuts
お探しの答えがほぼ正確です。オートフィルタの基準を変更するだけで済みます。 [効率的な方法は、行全体を削除する場合...](http://stackoverflow.com/a/16901714/138938) –