- 締切済み
複数シートから検索し、その行から15列下までを抽出したい。
使用しているのはWINDOWS XP EXCEL2000です。 マクロ、VBはあまりよくわかっていません。 ひとつのファイルに6sheetあります。 シートY1~Y6があり、シートY1のB1に入力されたデータと同じものをシートY1~Y6全てから検索し、 その行から15列したまでを抽出するということをしたいのです。 現状は1シートのみからの検索で、A3からA17までMATCH関数とINDEX関数が入っていて抽出しています。 (下記のように関数が入っています。) YIシート A3 → =MATCH(B1,T1_A1!D:D,0) B3 → =INDEX(T1_FMRA!E:E,A3,1) YIシート A4 → =A2+1 B4 → =INDEX(T1_FMRA!E:E,A4,1) ↓ ↓ YIシート A17 → =A16+1 B17 → =INDEX(T1_FMRA!E:E,A17,1) これをA1に入力されたデータを全シートから(Y1~Y6)検索、抽出する方法が知りたいのですが・・・ 説明がわかりづらくすみません。 よろしくお願いいたします。
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- mitarashi
- ベストアンサー率59% (574/965)
ここまで出来たが、ここが分からないという様に質問しないと、回答がつきにくいでしょう。考え方だけ、回答いたします。 Sub test() Dim c As Range Set c = ActiveSheet.Range("a1") End Sub この意味が理解できていないと、実現は難しいと思います。 お分かりなら、マクロの編集画面で、ヘルプから、findを検索して下さい。 findの使用例で、検索したいのはシートあたり1個と割り切って、 余分な処理を切り捨てると、 With Worksheets(1).Range("a1:a500") Set c = .Find(2, lookin:=xlValues) End With これで、2が入ったセルが、cとして取得できます。 cが取得できたら、c.resize(...)を用いれば、cを起点に?行×?列に拡大して取得できます。 c.まで打ち込むと、インテリセンスという機能で、Rangeのメンバーが表示されますが、 この中に、copyがありますので、resizeしたものをcopy してpasteすれば、抽出できますね。(このあたりは、マクロを自動記録したコードを参考にしてください) Worksheets(1)の所の1を変数に変えて、1~6までループすれば、6シートに対して処理ができます。 ご自分のやりたい事が載っている参考書を購入して、手を動かしてみるのがVBA習得の早道だと思います。
お礼
mitarashi様 お礼が遅くなってしまい大変申し訳ございませんでした。 ご指摘のあるように質問が不明瞭でしたことをお詫びいたします。 にもかかわらず、ご回答くださいました本当にありがとうございました。 今回は急ぎの仕事でしたので、現状の検索抽出方法でしのぎました。 これからの事も考えVB、マクロはあまりよくわからないのですが、 mitarashiさんの教えていただいた内容をまずは理解できるよう 勉強していきたいと思います。 本当にありがとうございました。