| 
    
     |  | みなさん本当にありがとうございます。 なんとか完成することができました〜
 
 
 ▼kanabun さん:
 >▼シン さん:
 >>しかし。マッチ関数をどのように使用したら良いか
 >>わかりません。
 >
 >UO3さんからMatch関数について分かりやすい説明がありました。
 >
 >コードに少し説明(コメント)をつけてみました。
 >> 1.移動前
 >> sheet1               sheet2
 >>
 >>   A  B  C  D        A   B   C   D   E
 >> 1 0.8             1 0.8  国  0.81     TN
 >> 2 1.2             2 1.3  数  1.31     BN
 >> 3 1.6             3 1.6  理  1.61     BN
 >> 4 1.7             4 2.0  家  2.01     TN
 >> 5 2.0             5 2.1  図  2.11     BN
 >> .
 >> .
 >> 5 5.5
 >> ---------------------------------------------------------------
 >>
 >> Sub Try1()        'WS2 → WS1
 >  ---------------------------------------- ここから
 >>   Dim WS1 As Worksheet
 >>   Dim WS2 As Worksheet
 >>   Dim r1 As Range, c As Range
 >>   Dim r2 As Range
 >>   Dim r22 As Range
 >>  -------------------------------- ここまでは使用する変数の宣言です
 >
 >  ↓ここから実行部で、
 >   まず 変数WS1,WS2 に具体的なシートをセットしています。
 >   シート名"Sheet1" とか"Sheet2" はブックにより変わることがあります。
 >   コードのあちこちに「実名」でシートを書いておくと、変更があった時
 >   直すのが大変です。最初に一度だけ、変数に代入しておけば、
 >   変更があっても、この一か所を直すだけで済みます。
 >>   Set WS1 = Worksheets("Sheet1")
 >>   Set WS2 = Worksheets("Sheet2")
 >>
 >   ↓同じように、2つのシートのA列の処理対象範囲を変数r1,r2にセットして
 >    おきます。r1 はWS1(転記先シート)のA列範囲、
 >         r2 はWS2(転記元シート)のA列範囲です。
 >    なお、WS1.Cells(WS1.Rows.Count, 1).End(xlUp) は手動操作でいうと、
 >     WS1シートのA列最終行を選択して、そこで Ctrl+[↑]を押したときの
 >     処理に相当します(→A列最後のデータのあるセルが求まります)
 >>   Set r1 = WS1.Range("A1", WS1.Cells(WS1.Rows.Count, 1).End(xlUp))
 >>   Set r2 = WS2.Range("A1", WS2.Cells(WS2.Rows.Count, 1).End(xlUp))
 >
 >  ↓ついでに、コピーするWS2のB〜E列範囲も変数r22 にセットしておきます。
 >    (r2というA列データ範囲を1つ右すなわちB列にシフトした範囲を4列に
 >    拡張したセル範囲、という意味です)
 >>   Set r22 = r2.Offset(, 1).Resize(, 4)
 >
 >
 >  以上で処理対象範囲のセットが終わりましたので、
 >   いよいよWS1のr1範囲の各セルを順にLoopして、各セルの値(数値)が
 >    WS2のA列にも存在するか、Match関数を使って調べることにします。
 >>   Dim m
 >   ↑Match関数で検索した結果をこのmという変数に入れることにします。
 >    m はmatchから名づけた変数です。
 >
 >   ↓処理を実行する前に、転記先の範囲を白紙状態にしておきます。
 >>   r1.Offset(, 1).Resize(, 4).ClearContents
 >
 >   ↓r1 セル範囲のLoopを開始します(r1範囲が具体的に [A1:A15]であれば、
 >    Loop一回目は cに[A1]セルが入り、2回目には[A2]セルが入ります)
 >>   For Each c In r1
 >
 >     ↓セルc の値とマッチするセルが r2範囲にあるか、調べます
 >>     m = Application.Match(c, r2, 0)
 >
 >     ↓ r2範囲に cセルとマッチするセルがあれば、
 >      マッチした行番号が返ります。
 >      ※ マッチするセルがなかったときは「エラー値」が返ります。
 >      ↓したがって、マッチするセルが見つかったかどうかは
 >        mの値が数値であるかどうか(IsNumeric関数)で判定できます
 >        IsNumeric(数値の1) = True ですが、
 >        IsNumeric(Error値) = False というわけです。
 >>     If IsNumeric(m) Then
 >      ↑マッチするセルがあったばあい、
 >       ↓r22範囲のその行を
 >         WS1の検索元セルの右隣にコピーしてやります
 >>       r22.Rows(m).Copy c(1, 2)
 >>     End If
 >>   Next
 >  ↑以上をr1範囲内のすべてのセルに対し順に実行します。
 >>
 >> End Sub
 
 |  |