こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

エクセルで特定の回答者のみ理由を拾う方法に関して

エクセル2010を使っています。

現在、アンケートの集計で次のような表を作っています

  A       B          C             D        E
氏名      質問    「いいえ」の時の理由     性別      年齢
○○○○   いいえ    ○○○○・・・・・・・      男性      30
○○○○   はい                      女性      20
○○○○   はい                      男性      10
○○○○   いいえ    ○○○○・・・・・・・      女性      40
○○○○   いいえ    ○○○○・・・・・・・      男性      20
○○○○   はい                      女性      30
○○○○   いいえ    ○○○○・・・・・・・      男性      10


このうち、表の

【質問】で【いいえ】と回答した人のみ、その【理由】と【性別・年齢などの情報】を
抜き出して【別のシート】にまとめたいのですが、
どうすればいいのでしょうか?


こんな感じで、別のシートにまとめたいのです。


■「いいえ」と回答した人の理由

 A   B      C
30歳 男性  ○○○○・・・・・・・
40歳 女性  ○○○○・・・・・・・
20歳 男性  ○○○○・・・・・・・
10歳 男性  ○○○○・・・・・・・


以上お願いします。

投稿日時 - 2012-12-18 16:34:10

QNo.7850683

すぐに回答ほしいです

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(8)

No.1さん、2さん、5さんの「フィルタ」が、頻繁に使われる初級の基本技です。ご存じなかった場合は、まずはこれを習得されるようお勧めします。フィルタでは、いわゆる「あいまい検索」や行の「並べ替え」の操作も可能です。(並べ替えはフィルタも何も使わなくてもできますが)

投稿日時 - 2012-12-19 10:37:00

ANo.7

 レイアウトは御質問文の例の通りとしたままで、作業列が不要で、[Shft]+[Ctrl]キー操作も不要な方法です。
 但し、アンケートの回答者数が数百人分程度でしたら問題はありませんが、2千人を超えるあたりから、計算処理が重くなるため注意して下さい。

 今仮に、アンケートの回答結果がSheet1に入力されていて、集計結果をSheet2に表示させるものとします。
 まず、Sheet2のA1セルに次の数式を入力して下さい。

=Sheet!1$E$1&""

 次に、Sheet2のB1セルに次の数式を入力して下さい。

=Sheet!1$D$1&""

 次に、Sheet2のC1セルに次の数式を入力して下さい。

=Sheet!1$C$1&""

 次に、Sheet2のA2セルに次の数式を入力して下さい。

=IF(ROWS($1:1)>COUNTIF(Sheet1!$B:$B,"いいえ"),"",INDEX(Sheet1!$A:$E,SUMPRODUCT((COUNTIF(OFFSET(Sheet1!$B$1,1,,ROW(INDEX(Sheet1!$B:$B,MATCH("いいえ",Sheet1!$B:$B,0)):INDEX(Sheet1!$B:$B,MATCH("いいえ",Sheet1!$B:$B)))-ROW(Sheet1!$B$1)),"いいえ")<ROWS(F$2:F2))*1)+MATCH("いいえ",Sheet1!$B:$B,0),MATCH(A$1,Sheet1!$A$1:$E$1,0)))

 次に、Sheet2のA2セルをコピーして、Sheet2のB2~C2の範囲に貼り付けて下さい。
 次に、Sheet2のA2~C2の範囲をコピーして、同じ列の3行目以下に貼り付けて下さい。

 以上です。

投稿日時 - 2012-12-19 05:03:35

ANo.6

 作業列が不要で、[Shft]+[Ctrl]キー操作も不要な方法です。
 今仮に、アンケートの回答結果がSheet1に入力されていて、集計結果をSheet2に表示させるものとします。

 まず、検索の基準とするために氏名欄の左に回答番号欄を設けて次の様なレイアウトとしておきます。

A    B        C           D             E        F
No.  氏名      質問    「いいえ」の時の理由     性別      年齢
1   ○○○○   いいえ    ○○○○・・・・・・・      男性      30
2   ○○○○   はい                       女性      20
3   ○○○○   はい                       男性      10
4   ○○○○   いいえ    ○○○○・・・・・・・      女性      40
5   ○○○○   いいえ    ○○○○・・・・・・・      男性      20
6   ○○○○   はい                       女性      30
7   ○○○○   いいえ    ○○○○・・・・・・・      男性      10

 次に、Sheet2のA1セルに次の数式を入力して下さい。

=Sheet!1$A$1&""

 次に、Sheet2のB1セルに次の数式を入力して下さい。

=Sheet!1$F$1&""

 次に、Sheet2のC1セルに次の数式を入力して下さい。

=Sheet!1$E$1&""

 次に、Sheet2のD1セルに次の数式を入力して下さい。

=Sheet!1$D$1&""

 次に、Sheet2のA2セルに次の数式を入力して下さい。

=IF(ROWS($1:1)>COUNTIF(Sheet1!$C:$C,"いいえ"),"",INDEX(Sheet1!$A:$A,MATCH("いいえ",INDEX(Sheet1!$C:$C,MATCH(A1,Sheet1!$A:$A,0)+1):INDEX(Sheet1!$C:$C,ROWS(A:A)),0)+MATCH(A1,Sheet1!$A:$A,0)))

 次に、Sheet2のB2セルに次の数式を入力して下さい。

=IF($A2="","",VLOOKUP($A2,Sheet1!$A:$F,MATCH(B$1,Sheet1!$A$1:$F$1,0),FALSE))

 次に、Sheet2のB2セルをコピーして、Sheet2のC2~D2の範囲に貼り付けて下さい。
 次に、Sheet2のB2~D2の範囲をコピーして、同じ列の3行目以下に貼り付けて下さい。

 以上です。

投稿日時 - 2012-12-19 04:07:08

ANo.5

単純にフィルターを使って、コピペで、
別のシートに移してしまうのはダメですか。

投稿日時 - 2012-12-18 18:30:44

ANo.4

データが多くなってもパソコンに負担のかからない方法は作業列を使って対応することです。
シート1に元のデータが入力されているとしてF2セルには次の式を入力して下方にドラッグコピーします。

=IF(B2="いいえ",MAX(F$1:F1)+1,"")

お求めの表はシート2に作るとしてシート2のA2セルには次の式を入力してC2セルまで横にオートフィルドラッグしたのちに下方向にもドラッグコピーします。

=IF(ROW(A1)>MAX(Sheet1!$F:$F),"",INDEX(Sheet1!$A:$E,MATCH(ROW(A1),Sheet1!$F:$F,0),IF(COLUMN(A1)=1,5,IF(COLUMN(A1)=2,4,IF(COLUMN(A1)=3,3,"")))))

シート2のA列のデータに歳を付けるのでしたらA2セルから下方の行を選択したのちに右クリックし、「セルの書式設定」から「表示形式」で種類の窓には 0"歳" と入力してOKします。

投稿日時 - 2012-12-18 17:34:50

ANo.3

こんにちは!
一例です。
↓の画像で左側がSheet1で右側Sheet(Sheet2)に表示するようにしてみました。
Sheet1の「いいえ」は必ず何らかの理由が入っているとします。

とりあえずSheet1の1000行まで対応できる数式ですが、
配列数式を使用していますので、極端にデータ量が多い場合はあまりオススメしません。

Sheet2の1行目項目はSheet1の項目と一緒にしておきます。

Sheet2のA2セルに
=IF(COUNTIF(Sheet1!$B:$B,"いいえ")<ROW(A1),"",INDEX(Sheet1!$A$1:$E$1000,SMALL(IF(Sheet1!$B$1:$B$1000="いいえ",ROW($A$1:$A$1000)),ROW(A1)),MATCH(A$1,Sheet1!$A$1:$E$1,0)))

配列数式ですのでShift+Ctrl+Enterで確定!

この画面からコピー&ペーストする場合はA2セルに貼り付け後、数式バー内で一度クリック!
編集可能になりますので、Shift+Ctrlキーを押しながらEnterキーで確定!

数式の前後に{ }マークが入り配列数式になります。
A2セルを列方向・行方向にオートフィルでコピーすると
画像のような感じになります。

※ 最初に書いたようにデータ量がもっと多い場合は
作業用の列を設ける方法が良いと思います。m(_ _)m

投稿日時 - 2012-12-18 17:09:59

ANo.2

ホームタブ(若しくはデータタブ)のフィルタで「オートフィルタ」を取り付け,質問列の「いいえ」で絞り込み,まとめて選んでふつーにコピー,別シートにぺたっと貼り付けるのが一番簡単です。

例えば下記などを参考に,練習してみて下さい。
http://www4.synapse.ne.jp/yone/excel2010/excel2010_filter1.html

投稿日時 - 2012-12-18 17:01:56

ANo.1

2007で悪いんですが、フィルタオプションで一発の筈。
詳細はここを見て下さい。
http://www.eurus.dti.ne.jp/yoneyama/Excel2007/excel2007-filter2.html

具体的には、「フィルタ」の「詳細設定」で「抽出範囲」を
別の場所に指定してやればオッケーって話です。

この時、カーソルは「抽出範囲」のある位置に置いておく
ことが肝要。ダミーで1件データを作っておかないと、
フィルタが選択できない(筈)なので、その辺がキモかも
しれません。

投稿日時 - 2012-12-18 16:45:34

あなたにオススメの質問