回答編集履歴
1
syusei
test
CHANGED
@@ -180,9 +180,7 @@
|
|
180
180
|
|
181
181
|
```
|
182
182
|
|
183
|
-
|
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
|
-
|
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
|
|