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

締切り済みの質問

【エクセル】他のBookの、シート名を抽出したい

ブックA,Bがあって、
ブックAのSheet1に「商品名、シリアル番号、商品サイズ・・・」とい
ったような項目の表があります。また、Sheet1の表を基にして、数値の
違う表がSheet30まであります。


ブックBのSheet1のA列にはブックAのデータに対応するシリアル番号が
ずらっと並べてあります(抜けてたり、多かったりするかもしれません)。

そこで、隣のB列に、A列に書いてあるシリアル番号をブックAから参照
(検索?)して、同じシリアル番号が入力されたセルのあるシートの、
シート名を表示したいです。おねがいします。


VLOOKUPで対応するシリアル番号のセルを探し出して、そのシートを表
示させるようなことを考えていたのだけど、参照するデータの列が左端
ではないし、検索するシートがたくさんあるし、ぜんぜんわかりませ
ん。マクロを使用すれば出来るのでしょうか?


エクセル2003を使用しています。

長文になってしまい、わかりにくいかと思いますが回答お願いします。

投稿日時 - 2008-02-29 15:21:00

QNo.3820313

困ってます

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

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

回答(1)

ANo.1

ベタな方法ですが、ブック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

投稿日時 - 2008-02-29 16:40:37

あなたにオススメの質問