プロが教える店舗&オフィスのセキュリティ対策術

2の乗数のテストパターンを作成したいのですが、どのように作成すればいいのか
いまいちわからないので皆さん教えてください。御願いします。

例として2の3乗のパターンを作成したい場合

1パターン目
a=true
b=true
c=true

2パターン目
a=true
b=false
c=false

3パターン目
a=false
b=true
c=false

4パターン目
a=false
b=false
c=true

5パターン目
a=true
b=false
c=true

6パターン目
a=true
b=true
c=false

7パターン目
a=false
b=true
c=true

8パターン目
a=false
b=false
c=false

といった具合に作りたいのですが、for文やif文をどういう具合に使えばいいか
いまいちピンと来ないので、どなたかヒントでもいいので2の乗数のテストパターンの
作成の仕方を教えてくださいよろしく御願いいたいます

A 回答 (4件)

No.2です!


たびたびごめんなさい。

前回のコードでは「乗数」が多い場合は処理時間がかかりすぎますので、
一部訂正してください。

>i = Cells(Rows.Count, j).End(xlUp).Row
>Do Until Cells(Rows.Count, j).End(xlUp).Offset(1, -1) = ""
の2行を入れ替え、

>Do Until Cells(Rows.Count, j).End(xlUp).Offset(1, -1) = ""
>i = Cells(Rows.Count, j).End(xlUp).Row
の順にしてください。

これで少しは時間短縮が出来ると思います。

※ 理論上ではExcel2003以前の場合は「2の16乗」(65536行まで)
Excel2007以降のバージョンでは「2の20乗」(1048576行まで)表示可能なのですが、
コード自体がデータの最終行を行の上方向に向かって検索していますので、
実際は上記「乗数」より一つ少ない数でないと途中でマクロが止まってしまいます。

お役に立ちますかね?m(_ _)m
    • good
    • 0

ちょっとトリッキーですがこんな方法もあります。



Sub test()
n = 3 '乗数
Cells.ClearContents
Range(Cells(1, 1), Cells(1, n)) = True
For i = 2 To 2 ^ n
F = True
For j = 1 To n
Cells(i, j) = F Xor Cells(i - 1, j)
If Not Cells(i, j) Then F = False
Next
Next
End Sub
    • good
    • 0

こんばんは!


外していたらごめんなさい。
Excelだとして・・・

画面左下の操作したいSheet見出し上で右クリック → コードの表示 → VBE画面に
↓のコードをコピー&ペーストしてマクロを実行してみてください。
(Alt+F8キー → マクロ → マクロ実行です。)

Sub test() 'この行から
Dim i, j, k, L As Long
k = Application.InputBox("乗数を入力")
Application.ScreenUpdating = False
Cells.ClearContents
Range(Cells(1, 1), Cells((2 ^ k) / 2, 1)) = "true"
Range(Cells((2 ^ k) / 2 + 1, 1), Cells(2 ^ k, 1)) = "false"
For j = 2 To k
For i = 1 To Cells(Rows.Count, j - 1).End(xlUp).Row Step 2
L = L + 1
Cells(L, j) = Cells(i, j - 1)
Next i
L = 0
Next j
For j = 2 To k
i = Cells(Rows.Count, j).End(xlUp).Row
Do Until Cells(Rows.Count, j).End(xlUp).Offset(1, -1) = ""
Range(Cells(1, j), Cells(i, j)).Copy Destination:= _
Cells(Rows.Count, j).End(xlUp).Offset(1)
Loop
Next j
Application.ScreenUpdating = True
End Sub 'この行まで

こんな感じではどうでしょうか?m(_ _)m
    • good
    • 0

a,b,cとか何をさしているのかわからない。



テストパターンが知りたかったら
実装方式を乗っけてください。

実装方式によってテストパターンかわるんじゃないですか?
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!