こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

複数シートから検索し、その行から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)検索、抽出する方法が知りたいのですが・・・
説明がわかりづらくすみません。
よろしくお願いいたします。


 
  

投稿日時 - 2008-06-10 13:26:16

QNo.4089505

すぐに回答ほしいです

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)

ANo.1

ここまで出来たが、ここが分からないという様に質問しないと、回答がつきにくいでしょう。考え方だけ、回答いたします。
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習得の早道だと思います。

投稿日時 - 2008-06-10 21:55:42

お礼

mitarashi様
お礼が遅くなってしまい大変申し訳ございませんでした。
ご指摘のあるように質問が不明瞭でしたことをお詫びいたします。
にもかかわらず、ご回答くださいました本当にありがとうございました。

今回は急ぎの仕事でしたので、現状の検索抽出方法でしのぎました。
これからの事も考えVB、マクロはあまりよくわからないのですが、
mitarashiさんの教えていただいた内容をまずは理解できるよう
勉強していきたいと思います。

本当にありがとうございました。

投稿日時 - 2008-06-13 14:39:01

あなたにオススメの質問