• ベストアンサー

一つの条件に一致する複数の回答を並べて表示したいのですが

よろしくおねがいします。 アンケートというか心理テストのようなものを集計する際に、参考として「あなたが○を付けたのは、(1)・(2)・(3)番です」と表示したいのですが、なにか良い方法はありませんでしょうか。VLOOKだと条件に一致する1番始めの項目しか回答してくれません。 例:こういう表だとして    A     B      C 1  (1)  最近仕事が楽しい  ○ 2  (2)  毎日朝食を摂る    ○ 3  (3)  食事は一人で摂る  ○ 4  (4)  睡眠は充足している × 上記のような場合に、アンケートの欄外に 『あなたが○を付けたのは、(1)・(2)・(3)番です』 と表示したいのです。 勉強不足なのでしょうか。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • ham_kamo
  • ベストアンサー率55% (659/1197)
回答No.6

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列の値が順番に下に表示されます。

MHHM
質問者

お礼

ありがとうございます。 とても参考になりました。 少し勉強して使いこなせるようにがんばってみます。

その他の回答 (6)

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.7

質問の例は回答者1人分の例でしょう。それに質問も4つでなく50も有るとか。 次ぎの回答者のデータはエクセルのシートや行や列を言えば、どう整理(=入力)する予定(または既にしてある)のでしょうか。 既回答では、対応できるかどうか、心配があります。 すなわち質問の表現が不十分だと思う。 >あなたが○を付けたのは、(1)・(2)・(3)番です』 とセルに出たとして、これをどう使うのでしょうか。 例えば上司がみて、理解の足しにするのでしょうか。 回答者に還元するのでしょうか。 例えば個人別に印刷したものを利用するなら、また別の考慮が必要かもしれません。 アンケートは仮の例で、実際は別のものなのでしょうか。 それらを明らかにせず、回答者に答えさせるのはよくない。 質問者は自分の思いついた路線で回答を求めたがる。回答者もその線で回答が多い。しかし他の利用者を巻き込んだ、小規模のシステムといえるものになると、エクセルの関数などでは、関数でできることの制約にぶつかり、なかなか十分にはできない。 まとめると、この質問で (1)複数の回答者のデータはどうなるか (2)質問のことができたとして、何に使うのか 質問者が、見やすいから、そうしたいと言う理由なら、是非はいえないが。 アンケート回答の原書を見たほうが判りやすいなんてならないように。

MHHM
質問者

お礼

確かに質問がわかりにくくては せっかくいただいた回答にまた何か聞く事になってしまいますね。 参考になりました。 ありがとうございます。

  • ham_kamo
  • ベストアンサー率55% (659/1197)
回答No.5

これって例だから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"は、○が入っている列を指定します。(ダブルクォーテーションをつけてください)

MHHM
質問者

お礼

出来ました!! すごいものを作っていただけて感動しました。 が、わたしの能力で応用していけるかしんぱいです。 がんばります。 ありがとうございました!

MHHM
質問者

補足

そうなんです。 だいたいの場合、項目数は50くらいになります。 縦に並べる方法でもかまわないのですが、もしも万が一お手数でなければ、その関数も教えて欲しいです。 すみません。わがままを言って。

回答No.4

例えば下の式をコピーしてください。 ="あなたが○を付けたのは、" & IF(C1="○",A1,"") &IF(AND(C1="○",C2="○"),"・","")&IF(C2="○",A2,"")&IF(AND(C2="○",C3="○"),"・","") &IF(C3="○",A3,"")&IF(AND(C3="○",C4="○"),"・","") &IF(C4="○",A4,"") & "番です" 中点があるため、とても長くなってしまいます。 それと○が一つもない場合は考慮しなくて良いですか?

MHHM
質問者

お礼

なるほど!&でつなげたら良いわけですね。 ただ、質問数が増えるとかなりきつい事に・・? わたしの説明不足ですね。すみません(>_<) ありがとうございます。 しかし、関数を&でつなげるとは考えたことがありませんでした。 とても参考になりました。

  • zap35
  • ベストアンサー率44% (1383/3079)
回答No.3

別シートの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ずつ加算して下さい

MHHM
質問者

お礼

確かに項目数が増えると対応がキツイですね。 シート2をたてて段階を踏む、という考えで、式を参考に作成できそうです。 どうもありがとうございました。

  • redowl
  • ベストアンサー率43% (2140/4926)
回答No.2

="あなたが○を付けたのは,"&IF(C1="○","(1)","")&IF(C2="○","(2)","") にするとか・・・ & で IF( )を連結して  &"番です"  を式のシッポに・・・

MHHM
質問者

お礼

&でIFをつないでいくと言う考えに感動しました。 今後も参考になるとおもいます。 どうもありがとうございました。

  • JAWS55
  • ベストアンサー率38% (176/452)
回答No.1

スマートじゃないけど、 ="あなたが○を付けたのは、"&IF(C1="○",A1,"")&IF(C2="○",A2,"")&IF(C3="○",A3,"")&IF(C4="○",A4,"")&"番です"

MHHM
質問者

お礼

他の方のお礼にも書かせていただいたのですが、&とIFの使い方がド素人であったとわかりました。 確かに出来ますね。 スマートじゃないけどシンプルで自分の目的がよくわかりました。 どうもありがとうございました。

関連するQ&A

専門家に質問してみよう