アンケートを集計するための生データとして、

5択(複数選択あり)の質問の回答を
'00100'や'10001'など選択したものに
1のフラグが立つという形で生成したものが
ありますが、これをexcelもしくはaccessで
集計する場合、どういった方式がありますか?

回答の条件
  • 1人2回まで
  • 登録:2007/10/09 10:37:48
  • 終了:2007/10/16 10:40:38

回答(6件)

id:gauchon No.1

gauchon回答回数27ベストアンサー獲得回数32007/10/09 10:55:06

ポイント19pt

答えになっていないかもしれませんが,

私は,質問の意味を

「複数回答が0-1で表現されていて,

一つでも1があるならば,1を記す」

というものだと解釈しました.

そう考えると,エクセルでは,

=IF(SUM(B1:F1)>0,1,0)

によって,一つでも1なら1

1がないなら0を返します.

(ただし,複数選択のセルがB1:F1に入力されている場合です)

id:master-3rd No.2

master-3rd回答回数295ベストアンサー獲得回数222007/10/09 11:13:12

ポイント19pt

もし、A1に「10010」のように入っている場合、こんなのはどうでしょうか?(A列は文字列ですよね)

B1=IF(LEFT($A1,1)="1","回答","非回答")

C1=IF(MID($A1,2,1)="1","回答","非回答")

D1=IF(MID($A1,3,1)="1","回答","非回答")

E1=IF(MID($A1,4,1)="1","回答","非回答")

F1=IF(MID($A1,5,1)="1","回答","非回答")

後はどのように集計するかわかりませんが、それぞれの列をSUMで足して、グラフ化とかでしょうか?

id:taknt No.3

きゃづみぃ回答回数13539ベストアンサー獲得回数11982007/10/09 11:46:50

ポイント18pt

COUNTIFで集計できます。

=COUNTIF(A:A,"1????")

とすれば 先頭が 1のものが カウントされます。

以下

=COUNTIF(A:A,"?1???")

=COUNTIF(A:A,"??1??")

とやっていけばいいですよ。

id:fuentebella No.4

fuentebella回答回数269ベストアンサー獲得回数302007/10/09 15:28:17

ポイント18pt

生データがテキストファイルになっていれば、

  • エクセルを起動して、ファイル->開く
  • ファイルの種類を「すべてのファイル(*.*)」にして生データを指定
  • 「固定長フィールドのデータ」にチェック
  • マウスで各フィールド(列)が一文字つづになるように指定(縦線をいれる)
  • 完了

これで 各質問ごとに列が作られますのであとは、SUMなりなんなり関数が簡単に使えると思います。

Accessの場合はファイル->外部データの取り込み->インポートで同様に質問ごとに分けることができます。

id:rikuzai No.5

りくっち回答回数1366ベストアンサー獲得回数1412007/10/09 15:53:53

ポイント18pt

基本的にはExcelにしてもACCESSにしても、

一旦「00000」の形式のデータから

Answer_1~5までのそれぞれの回答結果を抽出・分解する作業が必要だと思います。


Excelの場合、関数で抽出・分解する方法は他の回答者の方の方法で十分だと思います。

その他には、データそのものを分解しても良いなら、

データ列を選択し、「データ」→「区切り位置」をクリック。

「スペースによって・・」にチェックをして次へ。

データのプレビュー画面をクリックすると、区切り位置が矢印で表示されるので、

各数字の間に計4本区切り位置を設定して次へ。

完了をクリックすると、A~E列に各回答が分解されます。

A列(元データが入っていた列)は文字列になっていると思うので、

B列を選択、コピー、A列を選択→形式を選択して貼り付け「書式」で、

A列も数値表示に変わります。

また、この方法は分解時に必要分の列を右方向に上書するので、

右に必要データがある場合は、先に必要分の列挿入が必要です。


Accessの場合は、まずデータの全パターンと

その各回答結果をテーブル化してしまうのがすっきりすると思います。


まず、新規テーブル「ANSWER」を作成して、

項目「Answer_1」をつくり、「0」「1」の2レコードを入力します。


次は新規クエリーを作成して、「ANSWER」テーブルを5回マウントし、

それぞれのテーブルの「Answer_1」項目をドラッグします。

これがAnswer_1~5の結果になります。

「Answer_key」フィールドを追加してAnswer_1~5を連結した式を入力します。

後はテーブル作成クエリにして、結果をテーブルに出力してしまいます。

sqlだとこんな感じです。

SELECT [Answer_1] & [Answer_2] & [Answer_3] & [Answer_4] & [Answer_5] AS Answer_key,
Answer_.Answer_1 AS Answer_1, 
Answer__1.Answer_1 AS Answer_2,
Answer__2.Answer_1 AS Answer_3, 
Answer__3.Answer_1 AS Answer_4, 
Answer__4.Answer_1 AS Answer_5 INTO T_answer_ALL
FROM Answer_, Answer_ AS Answer__1, Answer_ AS Answer__2, Answer_ AS Answer__3, Answer_ AS Answer__4;

↑では「T_answer_ALL」という名前でテーブル出力しています。



これで全Answer_データのパターンと、そのAnswer_の結果を分離したテーブルができました。


後は、元データをACCESSにインポート、もしくはリンクし、

選択クエリでT_answer_ALLの「Answer_key」フィールドと元データのフィールドを結合、

必要なAnswer_のフィールドをドラッグすれば分解表示されますし、

そのまま「集計」すればAnswer_数も計算されます。

元データを「Sheet1」と仮定すると↓のような感じ。

SELECT Sum(T_answer_ALL.Answer_1) AS Answer_1, 
Sum(T_answer_ALL.Answer_2) AS Answer_2, 
Sum(T_answer_ALL.Answer_3) AS Answer_3, 
Sum(T_answer_ALL.Answer_4) AS Answer_4, 
Sum(T_answer_ALL.Answer_5) AS Answer_5
FROM Sheet1 INNER JOIN T_answer_ALL ON Sheet1.Answer_key = T_answer_ALL.Answer_key;

この作業が一回限りでなく、データ量も多いのならば、

ACCESSの方が運用は楽で動作も軽いと思います。

一回限りでデータ数もそんなに多くないのであれば、

関数や区切り位置で分解して、ピボット集計する方が簡単だと思います。


以上ご参考まで。

id:KUROX No.6

KUROX回答回数3542ベストアンサー獲得回数1402007/10/09 17:08:23

ポイント18pt

AccessのクエリとMID関数を使って、

'00100'の1フィールドから、5フィールドに変換。

Mid(フィールド名,1,1)

Mid(フィールド名,2,1)

Mid(フィールド名,3,1)

Mid(フィールド名,4,1)

Mid(フィールド名,5,1)

こんな感じの式をクエリに埋め込めば良いです。

このデータを、Accessのテーブルなり、EXCELに貼り付ける

データを変換してから、集計するのが手早いし、

ミスも少ないと思います。

一気に集計までできますけど、ミスする可能性が高いので、

1回データ変換して、その結果を別に生データとして保存、

その生データを集計するという方法が無難です。

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません