- ベストアンサー
○と×のパターンを調べたい
例えば、心理テスト等で、6つの(○or×)回答パターンがあったとします。(○○○×××)や(○×○×○×)・・・等、 この6つのパターンのすべての組み合わせ全64通りになると思いますが、これをA1セル~F1から、A63セル~F63まで、VBAで記入させたいです。中々良い方法が思いつかず、困っています。 どなたか、簡単なサンプルやアイデア等、ご教授いただければありがたいです。よろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
○と×、これを1と0の2進数に置き換えて考えてみてください。 0から63までの数字を2進数に置き換え各桁が0なら×、1なら○に置き換え各セルに格納していきます。 Sub SetPattern() Dim R as Integer Dim i as Integer For R = 0 To 63 For i = 0 to 5 If (R And 2 ^ i) <> 0 Then Sheets("Sheet1").Cells(R + 1, 6 - i) = "○" Else Sheets("Sheet1").Cells(R + 1, 6 - i) = "×" End If Next Next End Sub となります。
その他の回答 (2)
- Masa2072
- ベストアンサー率51% (94/182)
ご希望により補足です。 If (R And 2 ^ i) <> 0 Then の部分ですが 例えば5を2進数で表すと101となります。 101と100(2の2乗)の論理積(AND)が100 101と010(2の1乗)の論理積が000 101と001(2の0乗)の論理積が001という風に 2のべき乗の論理積を見ることで各ビットが1、0のどちらになっているかを調べることが出来ます。
お礼
お世話になります。きっと2進数という表現を知らなかった為、理解できないのだと思います。2進数は今勉強中です。すいません、もう少しだけ、お付き合いいただければ非常に助かります。 例えば、上記の例でR=5、i=0とした場合、ステップモードで確認すると、(R And 2 ^ i)=0と表示され、 R=5、i=1なら、=1、R=5、i=2なら、=4となります。 日本語の場合、「5かつ0は0」「5かつ1は1」?? 2進数の場合、「101かつ001は001」「101かつ010は000」?? なぜ001なのか?000なのか?慣れない表現に難しさを感じています。 分らないのは、この( A And B)= cという式自体になります。自分なりに理解しようと色々な数字を代入させてみたのですが、特に規則性が見つからず、cはどのように算出され、なぜcとなるのかを理解したいです。
- izmlz
- ベストアンサー率55% (67/120)
=IF(MID(TEXT(DEC2BIN(ROW(A1)-1),"000000"),COLUMN(A1),1)*1,"×","○") ↑の数式をせるA1に入力して、A1:F64にコピペしてみてください。 なお、↑の数式にはDEC2BIN関数が入っているので、メニュー[ツール]-[アドイン]で[分析ツール]にチェックしておく必要があります。
お礼
即答ありがとうございます。コピペしてみました。すごいです。いとも簡単にできてしまいました。まだ理解できていないのですが、関数1行で可能という事ですね。とても参考になりました。
お礼
即答ありがとうございました。まさに思っていた通りに再現でき、解決する事ができました。とてもうれしいです。しかし恥ずかしながら、VBA初心者で、以下のコードの部分の意味がいまいち理解できません。 If (R And 2 ^ i) <> 0 Then 私はてっきり、 「もしも、Rの値 および 2のi乗の値 が0以外ならば」 と思っていたのですが、違いますね。質問からずれますが、訳してもらえたら幸いです。