回答編集履歴

2

コード例の追記

2018/07/01 08:56

投稿

hatena19
hatena19

スコア33715

test CHANGED
@@ -29,3 +29,65 @@
29
29
 
30
30
 
31
31
  上記をヒントにできるとこまでコードを自力で書いてください。
32
+
33
+
34
+
35
+ コード例
36
+
37
+ ---
38
+
39
+ 仕様が不明確の部分があるので、下記のようだと仮定してコーディングしてみました。
40
+
41
+
42
+
43
+ Sheet1 Aheet2 とも A1~K1まで項目名、その下の行からデータが入力されている。
44
+
45
+ Sheet1 は F列からK列までが空欄の行がある。
46
+
47
+ Sheet2 は空欄はない。
48
+
49
+ 納品書番号(E列)をキーとして同じ行のSheet2のF列からK列までの値をSheet1にコピーする。
50
+
51
+ コピーするときに、Sheet1が空欄かどうかチェックする必要はないものとする。
52
+
53
+
54
+
55
+ ```vba
56
+
57
+ Sub ボタン1_Click()
58
+
59
+ Dim ws1 As Worksheet
60
+
61
+ Dim ws2 As Worksheet
62
+
63
+ Dim ws1Key As Range
64
+
65
+ Dim i As Long
66
+
67
+ Dim r As Long
68
+
69
+
70
+
71
+ Set ws1 = Worksheets("Sheet1")
72
+
73
+ Set ws1Key = ws1.Range("E2", ws1.Cells(Rows.Count, "E").End(xlUp)) '検索範囲
74
+
75
+ Set ws2 = Worksheets("Sheet2")
76
+
77
+
78
+
79
+ For i = 2 To ws2.Cells(Rows.Count, "E").End(xlUp).Row
80
+
81
+ r = WorksheetFunction.Match(ws2.Cells(i, 5).Value, ws1Key, 0) + 1
82
+
83
+ ws1.Range(ws1.Cells(r, 6), ws1.Cells(r, 11)).Value _
84
+
85
+ = ws2.Range(ws2.Cells(i, 6), ws2.Cells(i, 11)).Value
86
+
87
+ Next
88
+
89
+ End Sub
90
+
91
+
92
+
93
+ ```

1

間違いの修正

2018/07/01 08:56

投稿

hatena19
hatena19

スコア33715

test CHANGED
@@ -10,7 +10,7 @@
10
10
 
11
11
  sheet2のデータの1行目の 発行No でsheet1の発行Noを検索して位置を取得する。
12
12
 
13
- →WorksheetFunction.Index関数
13
+ →WorksheetFunction.Match関数
14
14
 
15
15
 
16
16