• 締切済み

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

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

みんなの回答

  • end-u
  • ベストアンサー率79% (496/625)
回答No.1

ちょっと面倒そうなので >(まったく違うマクロになっても構いません。) のセンで。 【前提条件】 1)Sheet1のA:I列を検索し、Sheet2のA:I列に抽出するとします。 2)検索対象はとりあえず数値ではなく文字列とします。 3)Sheet2はマクロを実行する度に使用範囲をクリアして抽出し直すものとします。 4)Sheet1のK2:L2を作業エリアとして使います。  (使えない場合は数式とマクロのアドレスを変更すれば良いです) 【準備】 1)Sheet1のK2に検索したい文字列を入力しておきます。  部分一致検索をしたい場合は  *文字列*  のように*で囲んでください。 2)Sheet1のL2に検索条件用に数式を入力しておきます。  =COUNTIF(A2:I2,$K$2)>0 【マクロ】 'Excel基本機能の[フィルタオプション]を利用したマクロです。 Sub Macro1()   Sheets("Sheet2").UsedRange.Clear   With Sheets("Sheet1")     .Range("A1").CurrentRegion.Resize(, 9) _         .AdvancedFilter Action:=xlFilterCopy, _                 CriteriaRange:=.Range("L1:L2"), _                 CopyToRange:=Sheets("Sheet2").Range("A1"), _                 Unique:=False   End With End Sub 【参考】 [XL2002]複雑な検索条件を使用してリストデータを抽出する方法(「II. 計算検索条件」) http://support.microsoft.com/kb/402757/ja 【※】 作業エリアを例えばX2:Y2に変更したい場合 X2に検索文字列を入力して Y2の数式を =COUNTIF(A2:I2,$X$2)>0 とし、 マクロの以下の箇所を変更です。 >CriteriaRange:=.Range("L1:L2"), _ CriteriaRange:=.Range("Y1:Y2"), _

chabouz
質問者

お礼

end-u様 ありがとうございます。 データが会社にありますので、明日会社に出勤してから 試してみます。 再度、ご報告致しますので、少し時間をください。 取り急ぎ、お礼まで。

chabouz
質問者

補足

end-u様 あぁぁぁぁりがとうございます。 バッチリ、出来ました!!! 返事が遅くなってしまい、申し訳ありませんでした。 思っていた通りの表示がされ、大満足です。 本当にありがとうございました。

関連するQ&A

  • 検索値から、その行の抽出。

    検索値から、その行の抽出。 シート1のデータがあります。 シート2のA1に検索値を置き、“あああ”の行をシート2に抽出。 シート2のA列に任意の番号を振った後、その番号順での表示(ピンク部分)を希望。 自分でいろいろと調べて試行錯誤したのですが、 思うようにいかず、ご質問させていただきます。 ご回答よろしくおねがいします。

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

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

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

    いつもこのサイトの皆様にはお世話になっております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

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

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

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

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

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

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

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

    はじめまして。マクロ初心者です。 エクセルで抽出結果を別シートにコピーしたいのですが、 抽出条件が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です。 本やホームページを参考に試行錯誤したのですが、うまくいきません…。 どなたかご回答よろしくお願いいたします。  

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

    はじめまして マクロ初心者です、自分で出来ませんのでやりたいことに合うマクロをネットで探してやっておりますが、どうにもなりませんどなたかご教授お願いします。 下記のマクロで結果はOKなのですが、インプットボックスでは無く特定のセル(”A1”)の値から検索したいのです、また、結果の出る("Sheet2") を1回全てクリアにしてから結果が出る様にしたいのですが、どなたかご教授お願いします。 >Sub test01() >Dim ws1 As Worksheet, ws2 As Worksheet >Dim rng As Range Dim myStr, ra, rr myStr = InputBox("検索する文字", " (´^∇^)σ 入力してください", "") If myStr = "" Then MsgBox "検索文字未指定", vbCritical, " Σ( ̄ロ ̄lll)" 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.EntireRow.Copy Destination:=ws2.Cells(rr, 1) '行のコピペ Set rng = .FindNext(rng) '連続検索 Loop While rng.Address <> ra '繰り返し Set rng = Nothing End If End With MsgBox rr & "件をSheet2に抽出しました。", vbInformation, " ( ̄ー ̄)v" Set ws1 = Nothing Set ws2 = Nothing End Sub

  • マクロ 抽出してコピー貼り付けしたい

     以下のような、サイトでコードをみつけました。今ひとつ、分からないことがあります。お教え下さいませんか。 やりたい元のデーターと抽出先について sheet1の元データーはA列~G列のデーターです。sheet1のA列・B列・D列・E列・G列だけを抽出して、sheet2に表示させたいのです。なお、sheet1には、関数が入っています。 以下はサイトからのものです。 実行結果(1列目と3列目を抽出) Sub 列抽出() Dim データ範囲 As Range Dim 抽出列 As Variant Dim i As Long Set データ範囲 = ActiveSheet.Range("A1").CurrentRegion  抽出列 = Array(1, 3)  Sheets.Add.Name = "抽出" For i = 0 To UBound(抽出列)  データ範囲.Columns(抽出列(i)).Copy Sheets("抽出").Range("A1").Offset(0, i) Next i End Sub

  • エクセルの検索・抽出マクロについて教えて下さい。

    急遽、会社のマクロ使用可のパソコン(ヴィスタ)で、 検索・抽出のデータ作業をすることになりました。 オートフィルタの貼り付けでは、時間がかかりすぎるということで、 職場の少ない知恵を出し合って考えていますが、なかなか上手くいかず、こちらにも お尋ねさせていただきます。 シート1に、3列(番号、文字、英字)の 『参照データ』があります。 シート2の 『検索する番号』 に番号を入れ、 『検索開始』ボタンを押すと、 シート1の『参照データ』から抽出されたデータが、 シート2に 『検索後のデータ』として表になって出てくるような関数(の場合はボタンなし)か、マクロをつくりたいのですが・・ 更には シート2の『検索する番号』を、番号ではなく 表の真ん中の列の『文字』でも検索できるように(番号でも文字でも、どちらでも検索できるように・・)は出来ないでしょうか・・・ ご回答を、心から お待ちしております! よろしく お願いします (u_u)

専門家に質問してみよう