• ベストアンサー

検索後、削除や抽出するマクロ

エクセルのシート1、A列の1~1500のセルにテキストが入力されており ある特定のテキストを含むセルを全て シート2のA列に抽出したいのですが、検索してみましたがうまくできません。 作業の流れとしては シート1のA列を範囲指定し、編集-検索、検索する文字列を入力し、すべてを検索をクリック 検索結果をコピーし、シート2のA列に貼り付ける もうひとつはシート1、A列の1~1500のセルにテキストが入力されており テキスト1またはテキスト2を含むセルを全て削除するというマクロを作成したいです。 ご指導のほどよろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.4

> ある特定のテキストを含むセル 含むということは、完全一致ではなく部分一致検索なのですね? ではとりあえず検索してSheet2に転記する一例を Sub test01() Dim ws1 As Worksheet, ws2 As Worksheet Dim rng As Range Dim myStr, ra, rr myStr = InputBox("検索する文字", "入力してください", "") If myStr = "" Then MsgBox "検索文字未指定", vbCritical, "" Exit Sub End If Set ws1 = Sheets("Sheet1") '検索 シート Set ws2 = Sheets("Sheet2") '貼付先シート With ws1.Columns("A") '部分一致でシートの頭から検索(A列) Set rng = .Find(What:=myStr, LookAt:=xlPart, After:=.Cells(.Cells.Count)) If rng Is Nothing Then MsgBox "ありません", vbCritical, myStr Else ra = rng.Address '最初に見つかったセルアドレス Do rr = rr + 1 rng.Copy Destination:=ws2.Cells(rr, 1) Set rng = .FindNext(rng) '連続検索 Loop While rng.Address <> ra Set rng = Nothing End If End With Set ws1 = Nothing Set ws2 = Nothing End Sub

o00o811
質問者

お礼

そのまま登録してみましたらできました!! 感謝いたします。 まことにありがとうございました。

その他の回答 (3)

  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.3

私なら、 Excel(エクセル) VBA入門:オートフィルタ(AutoFilter)でのデータ抽出 http://www.eurus.dti.ne.jp/~yoneyama/Excel/vba/vba_autofilter.html を使用します。 必要なデータを抽出して、別シートに貼付け。 或いは抽出された”可視セル”に対して、データの消去・空白行の上詰め を行なうでしょうか。 ご参考程度に。

o00o811
質問者

お礼

オートフィルタでデータ抽出をマクロで行なうんですね。 こちらも参考し、作ってみたいと思います。 ありがとうございました!

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.2

編集ー検索の操作をして、マクロの記録をとってみましたか。 特定の文字列を含む行がA列に複数有るようだから、1つ見つかった後、次々と検索する必要がある。 最初から見つからない場合はどうなるか研究。 (行番号管理法) そしてプログラムでは、FindNextのクリックを、最初に見つかった行に回帰したとき、検索は一巡したとして、検索処理を止める。 ということは最初に見つかった行を変数に記憶しておく必要が有るということ。 (オブジェクトのNothing管理法) 他にNothingになるとやめる方法もある。 ーー 質問は ●マクロの記録をまずとる ●Googleで「エクセル VBA Find FinNext」で照会し、よさそうなもの2,3をよく読んで、それでも行き詰った点を質問すること。 ーー 後半は前半質問が出来ることが基礎になるが、検索する文字列が2つ有るということなので。検索語1つずつ2回実行するのが易しいかと思う。

o00o811
質問者

補足

マクロの記録はやってみたんですが、「すべて検索~結果をコピーする」ができませんでした。 エクセル 検索マクロ などで検索し昨日中調べましたがわかりませんでした。 よろしくお願い致します。

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.1

編集ー検索の操作をして、マクロの記録をとってみましたか。 特定の文字列を含む行がA列に複数有るようだから、1つ見つかった後、次々と検索する必要がある。 最初から見つからない場合はどうなるか研究。 そしてプログラムでは、FindNextのクリックを、最初に見つかった行に回帰したとき、検索は一巡したとして、検索処理を止める。 ということは最初に見つかった行を変数に記憶しておく必要が有るということ。 他にNothingになるとやめる方法もある。 ●マクロの記録をまずとる ●Googleで「エクセル VBA Find FinNext」で照会し、よさそうなもの2,3をよく読んで、それで行き詰った点を質問すること。 ーー 後半は前半質問が出来ることが基礎になるが、検索する文字列が2つ有るということなので。検索語1つずつ2回実行するのが易しいかと思う。

関連するQ&A

  • エクセルのVBAマクロで検索と結果表示(抽出)

    エクセルのVBAマクロで検索と結果表示(抽出)を行いたいです。 業務で使用している膨大なリストデータから、特定のキーワードで情報の絞り込みを行いたいのですが、上手くマクロが組めません。 機能としては、シート1で特定のキーワード(テキストボックスに)を入力し検索ボタンを押下すると、 シート2のリストデータから検索に引っかかったセルの"行"を、シート1にリストアップ(貼り付け)していくようなマクロを作りたいのです。 シート2にはB列~AH列xn行のリストデータがあり、シート2のK列のセル内から「シート1のテキストボックスで入力したキーワードを含む」検索を行い、 HITした行をシート1のA9の行から結果として表示を行いたいんです。 簡単に言えばオートフィルタ機能の部分一致版を作りたいのですが・・・。 (オートフィルタでは完全一致でしか抽出が出来ないので) そして、検索ボタンを押下すると前回結果はクリアしたいです。 ネット上のサンプル等も参考にしながらやってみたのですが上手く行きません。。。 どなたか上記のマクロ文をご教授願えないでしょうか。 必要な情報(シート2の特定の列)のみ表示させたいとも思いましたが、むずかしくて断念・・・。 もし可能でしたらこちらもお願い致します。 よろしくお願いいたします。

  • 検索後、行を抽出するマクロ

    エクセルのシート1、A列からE列まで1~800のセルにテキストが入力されいます A列を検索(部分一致)し、ヒット(複数)した行をシート2へコピーしていのですが出来ません。 因みに、A列は文字列で「赤エンピツ、黄エンピツ」などでエンピツと検索してら両方抽出したいです。 初心者で何も判らず本等を読んでも訳判りません、どなたか御教授よろしくお願いします。

  • マクロの検索と抽出について

    いつもこのサイトの皆様にはお世話になっておりますm(_ _)m この度、マクロの検索と抽出について教えていただきたいのですが、 シート1(シート名:住所録)のB9からE30に取引会社の住所録を入力しております。 B列は1~30までの数字、C列には会社名、D列には住所、E列には郵便番号をそれぞれ入力しております。 会社名をキーワードに検索をかけて、検索結果をシート2(シート名:抽出結果)に出力されるようなマクロを作りました。下記を参考にしていただきたいのですが、質問としましては、検索を何回か繰り返し行いたく、そしてその結果を抽出結果のシートに反映させる際に、前回の出力されたセルの下に反映されるようにしたいのです。 質問にまとまりがなくて伝わりづらかったとは思いますが どなたか教えていただけないでしょうか。 よろしくお願いいたします。 Private Sub CommandButton1_Click() '#### 最初に、テキストボックスの条件を住所録シートに転記しておく。 If OptionButton1 = True Then '部分一致にチェックが入っていたら '部分一致検索は、検索条件を「*」で囲む Worksheets("住所録").Cells(4, "C").Value = "*" & TextBox1.Text & "*" ElseIf OptionButton2 = True Then '完全一致にチェックが入っている場合 '完全一致検索は、検索条件の先頭に「'=」をつける Worksheets("住所録").Cells(4, "C").Value = "'=" & TextBox1.Text End If '####  検索を実行 Sheets("抽出結果").Select '抽出結果を表示するシートを選択しておく。 Cells.Select '前回の抽出結果を消しておく Selection.Clear Range("A2").Select Sheets("住所録").Range("B9:E109").AdvancedFilter Action:=xlFilterCopy, _ CriteriaRange:=Sheets("住所録").Range("C3:C4"), _ CopyToRange:=Sheets("抽出結果").Range("A1"), _ Unique:=False End Sub Private Sub CommandButton2_Click() On Error Resume Next Worksheets("住所録").ShowAllData End Sub Private Sub CommandButton3_Click() TextBox1.Text = "" End Sub Private Sub UserForm_Initialize() OptionButton1 = True 'あいまいにチェックを入れておく End Sub

  • エクセル 抽出マクロについて

    はじめまして。マクロ初心者です。 エクセルで抽出結果を別シートにコピーしたいのですが、 抽出条件が2列にわたっています。 A     B      C      D 日付   タイトル   分類(あ)  分類(い) 11/22   テレビ    3      2 12/15   ラジオ    1      4 11/18   雑誌     2      5 …というような感じです。 例えば分類が「2」のものを抽出したい時に、 ●シート1のあるセルに「2」と入力してマクロを実行。  ↓ ●シート2に以下のように結果をコピーして表示。 A       B 日付     タイトル 11/22     テレビ 11/18     雑誌 という具合にしたいのです。(C列、D列は表示しない) データはシート3に入力されていて、今後どんどん増えていく予定です。 エクセルは2007です。 本やホームページを参考に試行錯誤したのですが、うまくいきません…。 どなたかご回答よろしくお願いいたします。  

  • Excelで全シートから検索し列で抽出する方法

    現在Excel2010で作成している表をマクロで検索・抽出したいのですが、 素人のため中々思うように出来なくて困っています。 Sheet2~Sheet4まで作成した表があります。 Sheet1には検索ボタンを作成し、検索ボタンを押すと検索フォーム(ユーザーフォーム)が出てきます。 検索フォームはTextBox1とCommandButton1があります。 ------ここまでは作成済みです-------- ・検索フォームのTextBox1に入力した文字(半角全角英数関係なく)をCommandButton1で検索を行う。 ・そしてその検索結果をSheet1の検索ボタン(セル A~B・1~2)を避けて表からコピーして抽出(複数ある場合は複数抽出)。 ・抽出内容は、検索でヒットしたセルの列全てを抽出(複数ある場合は複数の列が抽出される)。 ・同列に検索した文字が2つある場合も、抽出する列は1つ。 少しややこしいかもしれませんが、上記のようなマクロを作成したいのですが私では力が足りませんでした。 わかりやすく教えていただけると嬉しいです。

  • マクロを使ってテキストを抽出したい?

    エクセルのマクロを使ってテキストを抽出したい? ある1つのCSVデータがあります。エクセルで開いてみるとA列からU列までデータがびっちり入っています。 F列の各セルにはテキストを含むhtmlタグや%%NL%%やスペースなどあります。 質問なのですがF列をテキストだけに変換(抽出)したいです。 そのようなマクロを教えていただけないでしょうか?

  • 検索・抽出・貼り付けのマクロ

    シート1のデータをオートフィルターかけて検索し抽出したものを、A列、B列、D列、F列をシート2の、A列、B列、C列、D列に貼り付けるマクロを教えて頂けますでしょうか? 一週間位悩んでいます。

  • 検索後、行を抽出するマクロ←を発展させたい

    検索後、行を抽出するマクロを使いたいのですが、 非常に近い質問がありましたので、それを基に質問させていただきます。 (まったく違うマクロになっても構いません。) 下記URLの【merlionXX様】の回答されたマクロを使用しますと、 A列のみを検索対象としています。 http://okwave.jp/qa4730673.html 私が検索したい範囲がA列からI列まであります。 その中で、任意の語句を検索すると、 sheet2(←検索結果と名前のシートにしたい)のA2から、 検索結果を表示したいのですが、どのように記述を変えたらできますか。 なぜ、A2からの表示にしたいかと言うと、 A1からI1までは、各項目名を入力しておきたいからです。 どうか皆様の知恵を貸していただけないでしょうか。 宜しくお願い申し上げます。

  • ▲▲検索欄を設置し該当する列を抽出する▲▲

    いつもお世話になっております。 マクロを学び始め、調べに調べたのですが、行き当たりました。 ご教授頂ければ幸いです。 タイトル通りで御座います。sheet1にフォームを作成し それをsheet2に引っ張ることはできました。 続いて検索をさせたいのですが、それがうまくいきません。 写真を添付しているのですが、B2に検索したい文字を入力 ※B2についてはセルでは無理かと思いますので、テキストボックスになるかと思います。 D2~D4のボタンを押すことで特定の部分から検索を行い 列を抽出しB10配下に該当するものを抽出したいのですが、全くうまくいきません。 ご教授頂ければ幸いです。

  • マクロを使って抽出する

    マクロを使った抽出について教えてください。 A列  B列  C列  D列 番号  区分  氏名  年齢  *区分はA~Pが入ります。  *リスト範囲:A1:D200 セル[F1]に区分(A~P)を入力して実行すると35歳以上を抽出する。 オートフィルタの設定を使わずマクロで実行したいのですが、どのようなマクロを書けばよいのかわかりません。 マクロ初心者で申し訳ありませんが、よろしくご教授ください。

専門家に質問してみよう