• 締切済み

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

検索後、行を抽出するマクロを使いたいのですが、 非常に近い質問がありましたので、それを基に質問させていただきます。 (まったく違うマクロになっても構いません。) 下記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