- ベストアンサー
一つの条件に一致する複数の回答を並べて表示したいのですが
よろしくおねがいします。 アンケートというか心理テストのようなものを集計する際に、参考として「あなたが○を付けたのは、(1)・(2)・(3)番です」と表示したいのですが、なにか良い方法はありませんでしょうか。VLOOKだと条件に一致する1番始めの項目しか回答してくれません。 例:こういう表だとして A B C 1 (1) 最近仕事が楽しい ○ 2 (2) 毎日朝食を摂る ○ 3 (3) 食事は一人で摂る ○ 4 (4) 睡眠は充足している × 上記のような場合に、アンケートの欄外に 『あなたが○を付けたのは、(1)・(2)・(3)番です』 と表示したいのです。 勉強不足なのでしょうか。 よろしくお願いします。
- みんなの回答 (7)
- 専門家の回答
質問者が選んだベストアンサー
No.5です。 セルに縦に並べる方法ですが、任意のセルに、 =IF(ROW(A1)>COUNTIF($C$1:$C$100,"○"),"",INDEX($A$1:$A$100,SMALL(IF($C$1:$C$100="○",ROW($A$1:$A$100)),ROW(A1)))) を入力し、Ctrl+Shift+Enterで入力します。(配列数式なので) そのセルを下にドラッグしてコピーすると、C列に○がついた行のA列の値が順番に下に表示されます。
その他の回答 (6)
- imogasi
- ベストアンサー率27% (4737/17069)
質問の例は回答者1人分の例でしょう。それに質問も4つでなく50も有るとか。 次ぎの回答者のデータはエクセルのシートや行や列を言えば、どう整理(=入力)する予定(または既にしてある)のでしょうか。 既回答では、対応できるかどうか、心配があります。 すなわち質問の表現が不十分だと思う。 >あなたが○を付けたのは、(1)・(2)・(3)番です』 とセルに出たとして、これをどう使うのでしょうか。 例えば上司がみて、理解の足しにするのでしょうか。 回答者に還元するのでしょうか。 例えば個人別に印刷したものを利用するなら、また別の考慮が必要かもしれません。 アンケートは仮の例で、実際は別のものなのでしょうか。 それらを明らかにせず、回答者に答えさせるのはよくない。 質問者は自分の思いついた路線で回答を求めたがる。回答者もその線で回答が多い。しかし他の利用者を巻き込んだ、小規模のシステムといえるものになると、エクセルの関数などでは、関数でできることの制約にぶつかり、なかなか十分にはできない。 まとめると、この質問で (1)複数の回答者のデータはどうなるか (2)質問のことができたとして、何に使うのか 質問者が、見やすいから、そうしたいと言う理由なら、是非はいえないが。 アンケート回答の原書を見たほうが判りやすいなんてならないように。
お礼
確かに質問がわかりにくくては せっかくいただいた回答にまた何か聞く事になってしまいますね。 参考になりました。 ありがとうございます。
- ham_kamo
- ベストアンサー率55% (659/1197)
これって例だから4つだけど、実際はもっと項目の数は多いのでしょうか。 ○をつけた番号を縦に並べることは関数の組み合わせでできるのですが、横に並べるとなると、関数でやると項目数が多いと大変な気がします。 ユーザ定義関数を作ってみました。 Alt+F11でVBAの画面を開き、「挿入」>「標準モジュール」を選択し、以下のマクロをコピーして貼り付けてください。 Function Bikou(NumRng As Range, MarkCol As String) As String Dim R As Range Dim S As String Application.Volatile For Each R In NumRng If Cells(R.Row, MarkCol) = "○" Then S = S & R.Value & "・" End If Next If Len(S) = 0 Then Bikou = "あなたが○をつけた番号はありません。" Else Bikou = "あなたが○をつけたのは" & Left(S, Len(S) - 1) & "番です。" End If End Function 次に、Alt+F11でエクセルの画面に戻り、メッセージを表示したいセルに、 =Bikou(A1:A4,"C") と入力します。A1:A4の部分は、番号が入力されている範囲を指定し、"C"は、○が入っている列を指定します。(ダブルクォーテーションをつけてください)
お礼
出来ました!! すごいものを作っていただけて感動しました。 が、わたしの能力で応用していけるかしんぱいです。 がんばります。 ありがとうございました!
補足
そうなんです。 だいたいの場合、項目数は50くらいになります。 縦に並べる方法でもかまわないのですが、もしも万が一お手数でなければ、その関数も教えて欲しいです。 すみません。わがままを言って。
- GreatDragon
- ベストアンサー率46% (186/402)
例えば下の式をコピーしてください。 ="あなたが○を付けたのは、" & IF(C1="○",A1,"") &IF(AND(C1="○",C2="○"),"・","")&IF(C2="○",A2,"")&IF(AND(C2="○",C3="○"),"・","") &IF(C3="○",A3,"")&IF(AND(C3="○",C4="○"),"・","") &IF(C4="○",A4,"") & "番です" 中点があるため、とても長くなってしまいます。 それと○が一つもない場合は考慮しなくて良いですか?
お礼
なるほど!&でつなげたら良いわけですね。 ただ、質問数が増えるとかなりきつい事に・・? わたしの説明不足ですね。すみません(>_<) ありがとうございます。 しかし、関数を&でつなげるとは考えたことがありませんでした。 とても参考になりました。
- zap35
- ベストアンサー率44% (1383/3079)
別シートのA1に以下の式を貼り付けて下にコピーします(Sheet2とします) =IF(ROW()-0<=COUNTIF(Sheet1!C1:C4,"○"),INDEX(Sheet1!$A$1:$A$4,SUMPRODUCT(LARGE((Sheet1!$C$1:$C$4="○")*ROW(Sheet1!$C$1:$C$4),COUNTIF(Sheet1!C1:C4,"○")-ROW()+1+0))),"") アンケートシートには ="あなたが○を付けたのは、" & Sheet2!A1 & Sheet2!A2 & Sheet2!A3 &Sheet2!A4 & "です" と入力すればよいです。 でもアンケートの設問が複数有ると式を見直さなければならないので、少ししんどいかもしれません。Sheet2の表示開始行が2行目ならば式中の「-0」、「+0」の箇所は「-1」、「+1」に変更します。3行目以降は1ずつ加算して下さい
お礼
確かに項目数が増えると対応がキツイですね。 シート2をたてて段階を踏む、という考えで、式を参考に作成できそうです。 どうもありがとうございました。
- redowl
- ベストアンサー率43% (2140/4926)
="あなたが○を付けたのは,"&IF(C1="○","(1)","")&IF(C2="○","(2)","") にするとか・・・ & で IF( )を連結して &"番です" を式のシッポに・・・
お礼
&でIFをつないでいくと言う考えに感動しました。 今後も参考になるとおもいます。 どうもありがとうございました。
- JAWS55
- ベストアンサー率38% (176/452)
スマートじゃないけど、 ="あなたが○を付けたのは、"&IF(C1="○",A1,"")&IF(C2="○",A2,"")&IF(C3="○",A3,"")&IF(C4="○",A4,"")&"番です"
お礼
他の方のお礼にも書かせていただいたのですが、&とIFの使い方がド素人であったとわかりました。 確かに出来ますね。 スマートじゃないけどシンプルで自分の目的がよくわかりました。 どうもありがとうございました。
お礼
ありがとうございます。 とても参考になりました。 少し勉強して使いこなせるようにがんばってみます。