| 
    
     |  | 興味深いので、作成してみました。 Yukiさんのは、必要なデータのみコピーする方式ですが、
 質問者さんは Sheet2をそのままコピーして、あとから削除する方式。
 私もYukiさん方式を採用するだろうが、一応、質問者さん方式で作成しました。
 
 また、質問の最初にあるように結合セルをあえて対象にしています。
 
 ■問題の説明(改めて)
 
 <<Sheet1>>
 A  B   C
 1 No. 名前  性別
 2 A01 梅尾  女
 3 A02 福田  男
 4 B01 石川  女
 5 B02 森田  男
 
 <<Sheet2>>
 A  B   C    D   E
 1
 2 タイトル
 3 番号 No. 住所 年齢 特徴
 4
 5 1  A01  東京  19歳 国語が得意
 20 2  A02  鹿児島 19歳 国語、国語、英語、数学、運動が得意
 35 3  A03  米国  19歳 数学が得意
 (なお、3〜4行目はセル結合されている。
 5〜19,20〜34,35〜49行のA〜D列は、セル結合されています。
 
 ------------------------------
 やりたいことは、
 ・Sheet2をコピーした Resultシートを作成し、
 ・以下のように、
 B列とC列の間に、(No.に対応してSheet1で得られる)名前を挿入することです。
 
 <<Result>>
 A  B   C    D    E   F
 1
 2 タイトル
 3 番号 No. 名前  住所  年齢 特徴
 4
 5 1  A01  梅尾  東京  19歳 国語が得意
 20 2  A02  福田  鹿児島 19歳 国語、国語、英語、数学、運動が得意
 
 (なお、セル結合はSheet2と同じ。1データが15行に渡って結合されている。)
 
 -------------
 手順:
 
 1. Sheet2をコピーして Resultシートを作成
 2. ResultシートのB列をC列に挿入コピー(それより右の列は右側に移動)
 3. Resultシートについて以下の作業を行う。
 (1)B列のデータあり最終行を求める。
 (2)その行から、5行目までについて、15行おきに下から、以下の作業を繰り返す。
 (2)そのセルのNo.がSheet1にあれば、それに対応する「名前」をC列に上書き。
 (3)そのセルのNo.がSheet1になければ、そのセルの行から始まる15行を削除する。
 
 -------------
 参考コード(あえてDictionaryを使わない方式)
 
 Sub test2()
 Dim resWS As Worksheet
 Dim k As Long
 Dim lastRow As Long
 Dim s As String
 Dim v
 
 Worksheets("Sheet2").Copy after:=Worksheets("Sheet2")
 Set resWS = ActiveSheet
 resWS.Name = "RESULT"
 
 With resWS
 .Columns("B").Copy
 .Columns("C").Insert Shift:=xlToRight
 .Range("C3").Value = "名前"
 lastRow = .Cells(.Rows.Count, 2).End(xlUp).Row
 
 For k = lastRow To 5 Step -15
 s = .Cells(k, 2).Value
 
 v = Application.VLookup(s, Worksheets("Sheet1").Range("A:C"), _
 2, False)
 If Not IsError(v) Then
 .Cells(k, 3).Value = v
 Else
 .Cells(k, 1).Resize(15, 1).EntireRow.Delete
 End If
 Next
 End With
 End Sub
 
 なお、セル結合は、ソートしたくても簡単にはできないし、
 データ部分をセル結合するのは避けた方が得だと思う。
 
 -------------
 それから、
 > しかし、今回の場合、本を見ても、そのまま使える例が無く、また応用も出来ませんでした。
 > どうやれば、このようなコードが書けるようになるのでしょうか?
 > もっと例題の多い本やネットのサイト等があるのでしょうか?
 についてひとこと。
 
 そのまま写せば済むようなら誰も苦労しません。現実はそれなりに複雑です。
 そう難しくもないだろうが、舐めてかかってできるものでもない。
 ネットのどこかに答えが書いてあるわけでもありません。
 面倒でも、ひとつひとつのケースを深掘りして経験を蓄積していくしかありません。
 
 他人とのやりとりも一字一句を正確に記述する、
 そのような、ある意味で辛気くさいことを実行する覚悟がないと、簡単には行きません。
 しかし、掛けた労力は必ずきちんと返って来るはずです。
 
 |  |