エクセルVBA 特定の文字を含む行を複数選択したい



エクセルVBAにてお願いします。
A列に特定の文字が入っているのですが、

最終行から検索して、A列にその文字が入っていると、
その行すべてを選択するというマクロをお願いします。


文字は仮に「商品」とします。


いろいろと調べたのですが削除するものは多くみつかりましたが、
複数選択するだけのマクロがなかなか見つかりませんでした。

改造しても、最後の1つだけ選択されしまうものなど。(それはダメです)

複数選択したままの状態になるようなマクロを
どうかよろしくお願いいたします。

※私は全然スキルがないのですが、ある方には楽勝かと思いますので、
早めにできた方2名様までのポイント割り振りとさせていただきます。

回答の条件
  • 1人1回まで
  • 登録:
  • 終了:2018/02/26 06:00:09
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:segavvy No.1

回答回数12ベストアンサー獲得回数5

ポイント150pt

手元のExcel 2013で試してみましたが、次の手順でできそうです。
VBAにする場合は、マクロの記録を使って手順を記録させてください。

1.対象の表全体を選択して、「データ」タブの「フィルター」でフィルターを適用します。

2.A列のフィルターの「▼」を選んで、「テキスト フィルター」の「指定の値を含む…」で条件を「商品」として、A列に商品を含むものだけ表示します。

3.その状態で最初の行を選択し、「Shift」を押しながらと最後の行を選択して、全体を選択します。(この状態でフィルターをクリアしても、見えなくなっている部分が選択されてしまうので次の4の手順が必要です。)

4.「ホーム」タブの「検索と選択」の「条件を選択してジャンプ…」を選び、「可視セル」を選択します。(この4.の操作は「Alt」+「;」でもできます。)

5.A列のフィルターの「▼」を選んで、「"(列A)"からフィルターをクリア」を選びます。

これで該当行だけが選択された状態になるかと思います。

id:segavvy

マクロの記録でVBAにする場合、1箇所修正が必要でした。
仮に表全体がA1:B15だった場合、記録すると次のようなVBAのコードができますが、手順の4に相当する部分だけは修正が必要です。以下の★の部分です。これをやらないと、先頭部分や末尾部分が選択から漏れてしまいますのでご注意ください。

Sub Macro1()
'
' Macro1 Macro
'
    Range("A1:B15").Select
    Selection.AutoFilter
    ActiveSheet.Range("$A$1:$B$15").AutoFilter Field:=1, Criteria1:="=*商品*", _
        Operator:=xlAnd
    Rows("2:15").Select '★先頭行と最終行になるように書き換えてください!
    Selection.SpecialCells(xlCellTypeVisible).Select
    ActiveSheet.Range("$A$1:$B$15").AutoFilter Field:=1
End Sub
2018/02/25 05:35:35
id:naranara19

ありがとうございます!両方の方法まで書いてくださって、感謝いたします!無事動きました!大変助かりました!

2018/02/26 05:59:41

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません