質問: 複数シートから検索し、その行から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)検索、抽出する方法が知りたいのですが・・・ 説明がわかりづらくすみません。 よろしくお願いいたします。
回答: ここまで出来たが、ここが分からないという様に質問しないと、回答がつきにくいでしょう。考え方だけ、回答いたします。 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習得の早道だと思います。