電子書籍の厳選無料作品が豊富!

エクセル VBAで50個以上の特定文字を含まない行を削除

シート2のA列に50個以上の特定文字
シート1のB列に5万件あります。
5万件を特定文字を含まない行を削除したいのですが教えてください。

補足
シート1のB列以外は色々と情報が記載してある為、行で削除となります。

A 回答 (1件)

こんにちは



若干時間が掛かっても良ければ、計算をエクセルにやらせるのが簡単そうですね。

シート1のどこかに作業列を設けて、その列のセル範囲に
Range.FormulaArray = "SUMPRODUCT(IFERROR(SEARCH(シート2!A$1:A$50,B1),0)*1)"
のようにすることで、削除対象の行だけが0表示になります。
(ただし、シート2!A$1:A$50に空白セルを含まないことが条件)

あとは、作業列で0の値の行をまとめて削除し、その後、作業列をクリアすれば宜しいかと。


※ この方法であれば、関数式のセットと、行の削除程度の処理で済みますので、コード化は比較的簡単ではないかと思います。
※ 一方で、50×5万の配列計算になるので、関数とは言えそれなりの時間が掛かるものと想像します。
  まったく同じ処理を、VBAでループしながら比較すると、さらに時間が掛かる可能性はありますが、実際には、「含む」がわかった時点でその行の調査をスキップできるので、これにより計算量はかなり減ると思われるため、(多分)最終的にはそちらの方が速いのではないかと想像します。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!