やってほしいことだけを記載した丸投げの質問は推奨されてません。
1行でもいいので、自分で調べてコードを書いてください。
とりあえずヒントだけ。
sheet2のデータの1行目の 発行No でsheet1の発行Noを検索して位置を取得する。
→WorksheetFunction.Match関数
取得した位置に、sheet2の1行目のデータをコピーする、または代入する。
sheet2のデータの2行目に移動して、上記と同じことを繰り返す。
→Do Loop構文 または For Next構文
sheet2のデータがない行にきたら終了する。
上記をヒントにできるとこまでコードを自力で書いてください。
コード例
仕様が不明確の部分があるので、下記のようだと仮定してコーディングしてみました。
Sheet1 Aheet2 とも A1~K1まで項目名、その下の行からデータが入力されている。
Sheet1 は F列からK列までが空欄の行がある。
Sheet2 は空欄はない。
納品書番号(E列)をキーとして同じ行のSheet2のF列からK列までの値をSheet1にコピーする。
コピーするときに、Sheet1が空欄かどうかチェックする必要はないものとする。
vba
1Sub ボタン1_Click()
2 Dim ws1 As Worksheet
3 Dim ws2 As Worksheet
4 Dim ws1Key As Range
5 Dim i As Long
6 Dim r As Long
7
8 Set ws1 = Worksheets("Sheet1")
9 Set ws1Key = ws1.Range("E2", ws1.Cells(Rows.Count, "E").End(xlUp)) '検索範囲
10 Set ws2 = Worksheets("Sheet2")
11
12 For i = 2 To ws2.Cells(Rows.Count, "E").End(xlUp).Row
13 r = WorksheetFunction.Match(ws2.Cells(i, 5).Value, ws1Key, 0) + 1
14 ws1.Range(ws1.Cells(r, 6), ws1.Cells(r, 11)).Value _
15 = ws2.Range(ws2.Cells(i, 6), ws2.Cells(i, 11)).Value
16 Next
17End Sub
18