- 締切済み
【エクセル】他のBookの、シート名を抽出したい
ブックA,Bがあって、 ブックAのSheet1に「商品名、シリアル番号、商品サイズ・・・」とい ったような項目の表があります。また、Sheet1の表を基にして、数値の 違う表がSheet30まであります。 ブックBのSheet1のA列にはブックAのデータに対応するシリアル番号が ずらっと並べてあります(抜けてたり、多かったりするかもしれません)。 そこで、隣のB列に、A列に書いてあるシリアル番号をブックAから参照 (検索?)して、同じシリアル番号が入力されたセルのあるシートの、 シート名を表示したいです。おねがいします。 VLOOKUPで対応するシリアル番号のセルを探し出して、そのシートを表 示させるようなことを考えていたのだけど、参照するデータの列が左端 ではないし、検索するシートがたくさんあるし、ぜんぜんわかりませ ん。マクロを使用すれば出来るのでしょうか? エクセル2003を使用しています。 長文になってしまい、わかりにくいかと思いますが回答お願いします。
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- kigoshi
- ベストアンサー率46% (120/260)
ベタな方法ですが、ブックBのSheet1に下記コードでいかがでしょうか。 1行目のrUpとrDwnにブックBの検索する行の範囲を指定して下さい。 下記コードですと、1行目~100行目について検索します。 なお、ひとつ見つかるとそれ以降の検索は打ち切りますので複数該当しても 最初のシートしか表示しません。 Sub sample() Const rUp As Long = 1: Const rDwn As Long = 100 Dim shIdx As Integer Dim rIdxA, rIdxB As Long Dim htFlg As Boolean For rIdxA = rUp To rDwn If Cells(rIdxA, 1).Value <> "" Then htFlg = False For shIdx = 1 To Workbooks("ブックA.xls").Sheets.Count For rIdxB = 1 To Range("B65536").End(xlUp).Row If Workbooks("ブックA.xls").Sheets(shIdx).Cells(rIdxB, 2).Value = Cells(rIdxA, 1).Value Then Cells(rIdxA, 2).Value = Workbooks("ブックA.xls").Sheets(shIdx).Name htFlg = True Exit For End If Next If htFlg Then Exit For Next If Not htFlg Then Cells(rIdxA, 2).Value = "見つかりません" End If Next End Sub