思われていることと違っていましたらすみませんが、参考までに次のコードをマクロに貼り付けて実行してみてください。
元を壊してはいけないので、Bookをコピーして試してみてください。
下記のコードの(1)にA列のシートのシート名に、(2)にBシートのシート名に、(3)にBシートの型式を表示したい列(B列なら2)にしてください。(合っていたらそのままでよいです。)
メニューバーの「ツール」→「マクロ」→「マクロ」をクリック
↓
マクロのダイアログが表示されたらマクロ名に自由に名前を入力してください。(例:抽出)
↓
名前を入力しましたら、「作成」をクリック
↓
Microsoft Visual Basicの画面が開きますのでSub 抽出()の下に次のコードをコピーして貼り付けてください。
'定義
Dim 検索文字, シート名1, シート名2, HIT文字 As String
Dim 縦カウント, 最初のHIT行, HIT行, HIT列, 表示列 As Long
シート名1 = "Sheet1" '←A列のシートのシート名をセット(1)
シート名2 = "Sheet2" '←Bシートのシート名をセット…(2)
表示列 = 2 '←A列のシートにBシートの型式を表示したい列をセット(B列なら2)…(3)
'B列のクリア
Sheets(シート名1).Columns(表示列).Select
Selection.ClearContents
Sheets(シート名1).Range("A1").Select
検索文字 = InputBox("検索文字を入力してください。", "検索") '検索文字列
縦カウント = 1
'最初のHIT
Sheets(シート名2).Select
Sheets(シート名2).Range("A65536").Select
On Error GoTo exit00
Sheets(シート名2).Cells.Find(What:=検索文字, After:=ActiveCell, LookIn:=xlFormulas, LookAt:= _
xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False _
, MatchByte:=False).Activate
最初のHIT行 = ActiveCell.Row '最初にHITした行
HIT列 = ActiveCell.Column '最初にHITした列
HIT文字 = Sheets(シート名2).Cells(最初のHIT行, HIT列)
Sheets(シート名1).Select
Sheets(シート名1).Cells(縦カウント, 表示列) = HIT文字
縦カウント = 縦カウント + 1
'2件目以降のHIT
Do
Sheets(シート名2).Select
Sheets(シート名2).Cells.Find(What:=検索文字, After:=ActiveCell, LookIn:=xlFormulas, LookAt:= _
xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False _
, MatchByte:=False).Activate
HIT行 = ActiveCell.Row 'HITした行
HIT列 = ActiveCell.Column 'HITした列
If HIT行 <> 最初のHIT行 Then
HIT文字 = Sheets(シート名2).Cells(HIT行, HIT列)
Sheets(シート名1).Select
Sheets(シート名1).Cells(縦カウント, 表示列) = HIT文字
End If
縦カウント = 縦カウント + 1
Loop Until HIT行 = 最初のHIT行
Sheets(シート名1).Select
Sheets(シート名1).Range("A1").Select
MsgBox "抽出しました。 "
Exit Sub
exit00:
Sheets(シート名1).Select
Sheets(シート名1).Range("A1").Select
MsgBox "検索した文字列がありません。"
Exit Sub
'****コピー貼り付けはここまで ****
Microsoft Visual Basicの画面を×で閉じます
↓
Excel画面のメニューバーの「ツール」→「マクロ」→「マクロ」をクリック
↓
先ほど名前を付けたマクロを選択して「実行」をクリック
補足
型式がありすぎまして、その方法だと何時間かかっとるんじゃと 言われ兼ねません。 他の方法は、無いでしょうか?