
A 回答 (6件)
- 最新から表示
- 回答順に表示
No.6
- 回答日時:
学校の課題ということなので、何か学習の目的があるんだろうと思うのですが、それは無視して良いですか?また、Excelが前提で良いんですよね?
それで問題なければ・・・、
添付画像のようなシートを作成して、次の動作をVBAで行ってみてはいかがでしょうか?
B1セルの内容で質問を表示し、回答でフィルタをかける。
次にC1セルの内容で質問を・・・を繰り返して、最終的に1行に絞る。
フィルタを掛けていくと質問によっては回答が「はい」または「いいえ」のみになるものが出てくるので、その質問はスキップして次の質問に進む。

No.5
- 回答日時:
こんばんは
単純な、Yes、Noの2分岐でよいのなら、2の倍数で設問の数が増えていくので、設問を並べておいて、選択してゆくようなループにしておけば良いのではないでしょうか?
回答をどうやって算出するおつもりなのか不明ですけれど、同様に1対1で回答を作成しておいてもよいかも。
あるいは、要素が1、2、4・・と増加するような2次元配列で設問を作成しておく方がわかりやすいかも知れませんね。
以下に、前者の考え方での、ごく簡単な一例をご参考までに。
(とりあえず、質問は4回までにしてあります)
Sub Sample()
Dim Questions, AnsWord, Answers(1 To 4)
Dim cnt, QNo, Ans, Q
AnsWord = Array(" Yes", " No")
Questions = Array( _
"first", "Yes", "No", _
"Yes-Yes", "Yes-No", "No-Yes", "No-No", _
"Yes-Yes-Yes", "Yes-Yes-No", "Yes-No-Yes", "Yes-No-No", _
"No-Yes-Yes", "No-Yes-No", "No-No-Yes", "No-No-No")
QNo = 0
For cnt = 1 To 4
Q = "Q." & cnt & vbLf & Questions(QNo) & " Question"
Ans = MsgBox(Q, vbYesNo)
If Ans = vbYes Then Ans = 1 Else Ans = 2
QNo = 2 * QNo + Ans
Answers(cnt) = "Q." & cnt & AnsWord(Ans - 1)
Next cnt
MsgBox "All Answers are" & vbLf & Join(Answers, vbLf)
End Sub
※ 設問や回答のデータは別ファイルなどにしておく方が、わかりやすいかも知れませんね。
※ 全てが2分岐ではなく、共通の設問がいくつかあってから分岐するようなパターンもありそうに思いますけれど・・・
No.4
- 回答日時:
問題を出す順番などは、既に決まっているのでしょうか?
決まっていれば、それをプログラムにするかたちになると思うのですが、
そのイメージが私にはイマイチ掴めないですね。
例えばですが、
最初の質問A 答えがYesなら変数に1、Noなら変数に2を入れる。
変数が1なら質問Bへ
変数が2なら質問Cへ
2番目の質問 答えがYesなら変数×10+1、Noなら変数×10+2を入れる
変数が11なら、質問〇へ 変数を10倍して、+1又は+2をする。
変数が12なら、質問〇へ
変数が21なら、質問〇へ
変数が22なら、質問〇へ
問題数の桁数の数字 10問なら、1111111111~2222222222と、
1と2の組み合わせとか
Do
質問
Select Case 変数
Case 1
’質問B
Case 2
’質問C
Case 11
’
Case 12
Case 21
Case 22
Case 111
Case 112
Case 121
Case 122
・・・・
End Select
変数=変数*10+回答(+1 又は +2)
Loop
No.3
- 回答日時:
No.2の者です。
2択の問題というのは分かりました。
質問は、どれ位の問題数を用意されるのでしょうか?
ある質問をして、次の質問がAになった場合、質問Bは出てこないという事に
なるのでしょうか? それとも、どこかで出て来る?
クラスメイトの人物を特定するのは、PC? それとも、その場にいる人?
問題だけを出す感じ?なのでしょうか? それとも、回答していく内に
絞り込みをしていって、特定の人物をPCで答えを出す?
No.2
- 回答日時:
こんばんは。
ExcelのVBAとの事ですが、やりたい事をもっと具体的に記載されると、
回答が付くかと思います。
アキネーターというものが、どの様なものか分からないので、アドバイスも
できないですが、質問に答えるのが、選択式になるのでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
exeファイルを作ったり改造した...
-
リピート再生が出来ません
-
アセンブリ名とは??
-
CSVデータの"(ダブルクォーテ...
-
PL/Iについて
-
作業工程 SDとMD
-
ノートPCについて 大学・専門へ...
-
C言語を使ったビンゴマシンのプ...
-
曲げセンサー
-
数学、プログラミング、物理、...
-
mp3のファイルフォーマットを探...
-
C言語、C+、C++、C#の違い
-
プログラムに書かれる"%"記号の...
-
C言語とhtmlの違いを どな...
-
HOLONついて教えてください。
-
lispの入門書
-
フリーゲームを解析したい
-
COBOLで文字タイプを数字...
-
C++における継続行
-
VBScriptで引数を省略したい場合
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ノートPCについて 大学・専門へ...
-
数学、プログラミング、物理、...
-
アセンブリ名とは??
-
リピート再生が出来ません
-
Visual Studio Codeについて
-
PLC 命令
-
PL/Iについて
-
Cで本格的なプログラムを作りたい
-
作業工程 SDとMD
-
Pythonでの不均一なサイコロを...
-
OpenGLで円筒つくり
-
Macでプログラミングしている方...
-
H8S 2462のプログラミング方法
-
C言語で常駐ソフトを作成
-
高校生です! プログラミングに...
-
乱数の使いよう(C++)
-
push any key で終了する方法?
-
procってなんですか?
-
CSVデータの"(ダブルクォーテ...
-
三菱製PLC Qシリーズで技術的な...
おすすめ情報
アプリというのは、今回で言うとエクセルでのプログラミングなのですがエクセルのことですかね??
抽象的な説明で申し訳ありません!
具体的に言うと、「その人は運動部ですか?」のような質問にはいいいえで答え、「はい」ならば次の質問A、「いいえ」ならば次の質問B…といったように分岐していく構造を作りたいです。
その中でクラスメイトの特徴が絞られていって、最終的にこの人だ!とわかるものになります。
説明不足でしたら言ってください、申し訳ないです。
問題数はだいたい20個ほどになります。
質問がAになった場合Bはでてきません。
クラスメイトの特徴別に質問を用意しているので、分岐していくと1人に絞り込めるような質問にはなっています。なので、最終的に絞り込めたらメッセージボックスで〇〇さんですね?と表示するところまでプログラムしておきたいです。PCに判断を任せるのではなく、質問のはいいいえに対応して表示する名前を決めておくという感じです。
ですので途中で特徴を絞り終えて、〇〇さんですね?にたどり着くところもあります。分岐の途中で「はい」なら次の質問に進み、「いいえ」なら絞り終えてプログラム終了になるようなところがいくつかできます。すべてのクラスメイトが同じ質問数にはなりません。
言葉足らずなところがあれば言ってください!