回答編集履歴

1

syusei

2017/02/20 00:33

投稿

jawa
jawa

スコア3013

test CHANGED
@@ -180,9 +180,7 @@
180
180
 
181
181
  ```
182
182
 
183
- Dim iMax As Integer '組み合わせ候補数
183
+ Const iMax As Integer = 20 '組み合わせ候補数
184
-
185
- iMax = 20
186
184
 
187
185
 
188
186
 
@@ -190,19 +188,17 @@
190
188
 
191
189
  Sub test()
192
190
 
193
-
191
+
194
192
 
195
193
  Dim lLoop As Double 'ループカウンタ
196
194
 
197
- Dim strBIN As String '2進数文字列
195
+
198
-
199
-
200
196
 
201
197
  Dim lRow As Long '結果出力行
202
198
 
203
199
  lRow = 1
204
200
 
205
-
201
+
206
202
 
207
203
  '組み合わせ候補数の桁数の2進数全パターンをループ処理(2のiMax乗)
208
204
 
@@ -216,7 +212,7 @@
216
212
 
217
213
  End If
218
214
 
219
-
215
+
220
216
 
221
217
  '2進数文字列の中に"1"が2個以上存在する場合だけ計算する
222
218
 
@@ -224,7 +220,7 @@
224
220
 
225
221
  Dim strShiki As String '結果式
226
222
 
227
-
223
+
228
224
 
229
225
  '計算処理
230
226
 
@@ -234,10 +230,6 @@
234
230
 
235
231
  If strShiki <> "" And lAns = Cells(1, "B").Value Then
236
232
 
237
- '計算式をE列に出力
238
-
239
-
240
-
241
233
  '計算結果をC列に出力
242
234
 
243
235
  Cells(lRow, "C") = lAns
@@ -250,7 +242,7 @@
250
242
 
251
243
  End If
252
244
 
253
-
245
+
254
246
 
255
247
  '(参考情報:2進数文字列を出力) ※Dec2Binが9桁までしか対応していないため。
256
248
 
@@ -268,6 +260,8 @@
268
260
 
269
261
  If strShiki <> "" Then
270
262
 
263
+ '計算式をE列に出力
264
+
271
265
  Cells(lLoop + 1, "E") = strShiki
272
266
 
273
267
  Cells(lLoop + 1, "F") = lAns
@@ -276,15 +270,15 @@
276
270
 
277
271
  End If
278
272
 
279
-
273
+
280
274
 
281
275
  Next
282
276
 
283
-
277
+
284
278
 
285
279
  MsgBox "Finish"
286
280
 
287
-
281
+
288
282
 
289
283
  End Sub
290
284
 
@@ -294,7 +288,7 @@
294
288
 
295
289
  Function fncCalc(vdNumber As Double, vsShiki As String) As Long
296
290
 
297
-
291
+
298
292
 
299
293
  Dim lAns As Long
300
294
 
@@ -302,7 +296,7 @@
302
296
 
303
297
  Dim blnAddFlg As Boolean
304
298
 
305
-
299
+
306
300
 
307
301
  lAns = 0
308
302
 
@@ -310,7 +304,7 @@
310
304
 
311
305
  blnAddFlg = False
312
306
 
313
-
307
+
314
308
 
315
309
  '2進数の桁数分ループ
316
310
 
@@ -320,13 +314,13 @@
320
314
 
321
315
  If vdNumber And 2 ^ iLoop Then
322
316
 
323
-
317
+
324
318
 
325
319
  '"1"の場合、対象行の値を加算
326
320
 
327
321
  lAns = lAns + Cells(iLoop + 1, "A").Value
328
322
 
329
-
323
+
330
324
 
331
325
  '参考情報として式も作成
332
326
 
@@ -344,11 +338,11 @@
344
338
 
345
339
  End If
346
340
 
347
-
341
+
348
342
 
349
343
  Next
350
344
 
351
-
345
+
352
346
 
353
347
  '加算していない場合、0個or1個のみの組み合わせ
354
348
 
@@ -360,11 +354,11 @@
360
354
 
361
355
  End If
362
356
 
363
-
357
+
364
358
 
365
359
  fncCalc = lAns
366
360
 
367
-
361
+
368
362
 
369
363
  End Function
370
364