回答編集履歴

1

追記

2020/04/08 04:46

投稿

mattuwan
mattuwan

スコア2163

test CHANGED
@@ -25,3 +25,173 @@
25
25
 
26
26
 
27
27
  その辺から始めてみてはいかがでしょうか?
28
+
29
+
30
+
31
+ ---
32
+
33
+
34
+
35
+
36
+
37
+ ```ExcelVBA
38
+
39
+ Sub test()
40
+
41
+ Dim rng検索語 As Range '検索語のセル
42
+
43
+ Dim rng検索範囲 As Range '検索範囲
44
+
45
+ Dim c As Range '範囲を構成する各各のセル
46
+
47
+
48
+
49
+ '1)検索語となる値が入っているセルは例えばどれ?
50
+
51
+ Set rng検索語 = Workbooks("元ファイル").Worksheets("リスト").Range("C10").Cells
52
+
53
+ '2)それに対して、参照する一覧表のセル範囲はどれ?
54
+
55
+ Set rng検索範囲 = Workbooks("参照ファイル").Worksheets("注文リスト").Range("G15:G50000").Cells
56
+
57
+ '3)一覧表のセル範囲を上から一づつみていき、
58
+
59
+ For Each c In rng検索範囲
60
+
61
+ '4)もし値の同じものがあったら、
62
+
63
+ If rng検索語.Value = c.Value Then
64
+
65
+ '5)検索語の9列右の値と、見ているセルの8列右の値が同じなら
66
+
67
+ If rng検索語.Offset(, 9).Value = c.Offset(, 8).Value Then
68
+
69
+ '6)値の転記
70
+
71
+ rng検索語.Offset(, 13).Value = c.Offset(, 3).Value
72
+
73
+ Exit For 'ループを抜ける
74
+
75
+ '7)もし、空白なら
76
+
77
+ ElseIf IsEmpty(rng検索語.Offset(, 9).Value) = True Then
78
+
79
+ '9)フォントを赤にする
80
+
81
+ c.Offset(, 8).Font.Color = vbRed
82
+
83
+ Exit For 'ループを抜ける
84
+
85
+ End If
86
+
87
+ End If
88
+
89
+ Next
90
+
91
+ End Sub
92
+
93
+ ```
94
+
95
+ > 以下のように作成して見ましたが、上手くできているのか良くわかりません。
96
+
97
+ > ものすごく時間がかかっています。
98
+
99
+ > 複数の条件は、理解できないので。一つの条件から始めてみました。
100
+
101
+
102
+
103
+ ですから、一度にいろいろなことをせずに、
104
+
105
+ とりあえず1つのデータに対して考えてみます。
106
+
107
+ 1つが出来れば、コンピューターは繰り返すのは得意ですので。
108
+
109
+ あと、処理に時間が掛かろうが、まずは「自分で出来るようになる」ことが肝要かと。
110
+
111
+
112
+
113
+ 例えば、自転車とか、目標としては大会に出て優勝したいという目標があったとしても、
114
+
115
+ まだ、ろくに乗れてない状態で、「速く走れない」と嘆いているようなものです。
116
+
117
+ まずは補助なしで走れないと、その先はないかと思います。
118
+
119
+
120
+
121
+ それから、セルは、「このセル」って指示したときは、
122
+
123
+ どのブックのどのシートという情報も暗に含めて「この」と表現していますよね?
124
+
125
+ そのセルから相対位置で(例えば何列右等)示すことが可能です。
126
+
127
+ そういう表現方法を学ぶといいと思います。
128
+
129
+
130
+
131
+ ```ExcelVBA
132
+
133
+ Sub test()
134
+
135
+ Dim rng検索語 As Range '検索語のセル
136
+
137
+ Dim rng検索範囲 As Range '検索範囲
138
+
139
+ Dim c As Range '範囲を構成する各各のセル
140
+
141
+
142
+
143
+ '1)検索語となる値が入っているセルは例えばどれ?
144
+
145
+ Set rng検索語 = Workbooks("元ファイル").Worksheets("リスト").Range("C10").Cells
146
+
147
+ '2)それに対して、参照する一覧表のセル範囲はどれ?
148
+
149
+ Set rng検索範囲 = Workbooks("参照ファイル").Worksheets("注文リスト").Range("G15:G50000").Cells
150
+
151
+ '3)一覧表のセル範囲を上から一づつみていき、
152
+
153
+ For Each c In rng検索範囲
154
+
155
+ '4)もし値の同じものがあったら、
156
+
157
+ If rng検索語.Value = c.Value Then
158
+
159
+ '5)検索語の9列右の値と、見ているセルの8列右の値が同じなら
160
+
161
+ If rng検索語.Offset(, 9).Value = c.Offset(, 8).Value Then
162
+
163
+ '6)値の転記
164
+
165
+ rng検索語.Offset(, 13).Value = c.Offset(, 3).Value
166
+
167
+ Exit For 'ループを抜ける
168
+
169
+ '7)もし、空白なら
170
+
171
+ ElseIf IsEmpty(rng検索語.Offset(, 9).Value) = True Then
172
+
173
+ '9)フォントを赤にする
174
+
175
+ c.Offset(, 8).Font.Color = vbRed
176
+
177
+ Exit For 'ループを抜ける
178
+
179
+ End If
180
+
181
+ End If
182
+
183
+ Next
184
+
185
+ End Sub
186
+
187
+ ```
188
+
189
+
190
+
191
+ まずはここまで、理解できますか?
192
+
193
+ 参考URL>>
194
+
195
+
196
+
197
+ [セル範囲の指定方法](http://www.eurus.dti.ne.jp/~yoneyama/Excel/vba/vba_cell.html)