電子書籍の厳選無料作品が豊富!

はじめまして。
EXCEL初心者のものです。
基本的な質問かも知れませんが分からないので教えてください。
現在、Excelでアンケート結果を集計しようとしております。

アンケートフォームにCSV出力できる機能があり、
CSVファイルにてダウンロードはできたのですが
ひとつのセルに複数の回答が入っているためうまく集計ができません。

【例】こんな感じです。
------------------------------------
好きな食べ物は   好きな色は
------------------------------------
りんご,みかん    あお,あか,きいろ
------------------------------------
魚,みかん      紫,みどり
------------------------------------
以下、たくさん続きます(1,000件ぐらい)

通常、こういったデータの場合はどのように処理すればよいでしょうか?
そもそもアンケートフォームの設問設定自体が間違っていたのでしょうか?
困っていますので宜しくお願いいたします。

A 回答 (7件)

そろそろ大掃除も終ってお開きのようです。


ですから補足の補足を。

FileReadArray 関数の登録要領。

1、シートタグを右クリックし[コードの表示(V)]をクリック。
2、挿入(I)-標準モジュール(M) をクリック。
3、左の[標準モジュール]-[Module1]をクリック。
4、以下のコードをコピペ。
5、ツール(T)-参照設定(R) で Microsoft Scriting Runtime にレ点。

これで、先の回答をコマンドボタンのクリックイベントにコピペすれば動作します。

Public Function FileReadArray(ByVal FileName As String) As String()
On Error GoTo Err_FileReadArray
   Dim fso    As FileSystemObject
   Dim strTexts() As String
  
   Set fso = New FileSystemObject
   strTexts() = Split(fso.OpenTextFile(FileName).ReadAll, vbCrLf)
Exit_FileReadArray:
   FileReadArray = strTexts()
   Exit Function
Err_FileReadArray:
   MsgBox Err.Description & "(FileReadArray)", vbExclamation, " 関数エラーメッセージ"
   strTexts() = Split("")
   Resume Exit_FileReadArray
End Function

まあ、決して、不可能な挑戦ではないでしょう。
FileReadArray 関数なんて理解しようがしまいがどうでもよいことです。
使えれば問題ないです。
頑張って下さい。
    • good
    • 0

すみません!


専門家になっていましたが、エクセルは操作したこともない門外漢です。
が、求めに応じて補足します。

<Answer.csv>
好きな食べ物は 好きな色は
りんご,みかん あお,あか,きいろ
魚,みかん 紫,みどり

仮に、このような Answer.csv があるとします。

<Sheet1>
好きな食べ物は
りんご
みかん

みかん

<Sheet2>
好きな色は
あお
あか
きいろ

みどり

これは、実際にCSVを読み込んだ Excel のコピーです。

Private Sub CommandButton1_Click()
  Dim I       As Integer
  Dim J       As Integer
  Dim K       As Integer
  Dim N       As Integer
  Dim M       As Integer
  Dim L       As Integer
  Dim intIndex(1)  As Integer
  Dim strDatas()   As String
  Dim strAnswers()  As String
  Dim strAnswers_A() As String
  Dim strAnswers_B() As String
  
  strDatas() = FileReadArray("C:\Temp\Answer.csv")
  N = UBound(strDatas())
  For I = 0 To N
    strAnswers() = Split(strDatas(I), " ")
    M = UBound(strAnswers())
    If M = 1 Then
      '
      ' 答え1
      '
      strAnswers_A() = Split(strAnswers(0), ",")
      L = UBound(strAnswers_A())
      For K = 0 To L
        intIndex(0) = intIndex(0) + 1
        Sheet1.Cells(intIndex(0), 1) = strAnswers_A(K)
      Next K
      '
      ' 答え2
      '
      strAnswers_B() = Split(strAnswers(1), ",")
      L = UBound(strAnswers_B())
      For K = 0 To L
        intIndex(1) = intIndex(1) + 1
        Sheet2.Cells(intIndex(1), 1) = strAnswers_B(K)
      Next K
    End If
  Next I
End Sub

これが読み込むために書いたコードです。

Microsoft Scripting Runtime を参照する必要があります。
こういう回答で宜しければ、FileReadArray 関数は、後ほど・・・。
    • good
    • 0
この回答へのお礼

門外漢なんてとんでもない!
こんな複雑なコードを書かれているのにビックリしました!

しかし拝見しているとかなりレベルが高そうで私では理解できません…。
もう少し勉強してから再度教えていただきたいと思います。
せっかくご丁寧にアドバイスいただいたのに理解不足で申し訳ありません。
ありがとうございました。

お礼日時:2006/12/28 15:21

集計はどのようにして計算するつもりなのでしょうか?


上記の内容でも
りんごの個数=COUNTIF(A:A,"*りんご*")
みかんの個数=COUNTIF(A:A,"*みかん*")
魚の個数=COUNTIF(A:A,"*魚*")
で集計自体は可能です。まあ正確には
りんごの個数=COUNTIF(A:A,"*りんご*")+COUNTIF(A:A,"*リンゴ*")
+COUNTIF(A:A,"*林檎*")
のようにしなきゃいけないんでしょうけど...

一応、エクセルの機能で横方向にはバラせます。
右側のセルに展開する形なので、展開用の列を挿入してもらう必要がありますが...
一列のみ範囲選択して、「データ」「区切り位置」で
「カンマやタブなどを...」を選択して次へ
「カンマ」を選択して「次へ」
書式を変更する必要があれば、作業後の列単位に書式を選択して「完了」
これで
りんご,みかん → りんご みかん の2セルに分かれます。
    • good
    • 0

好きな食べ物は   好きな色は


------------------------------------
りんご,みかん    あお,あか,きいろ
------------------------------------
魚,みかん      紫,みどり
------------------------------------

単に集計するだけであれば、

<Sheet1>

りんご
みかん

みかん

<Sheet2>
あお
あか
きいろ

みどり

と、CSVファイルを読み込む際に分ければ・・・。

これを実現することが無理であれば、ファイルを質問数だけコピーしてメモ帳で編集。
60分もあれば余裕で修正出来ると思います。
    • good
    • 0
この回答へのお礼

非常に魅力的な提案をいただいているようですが
私の勉強不足のためどうすればいいのか分かりません…。

もう少し具体的に教えていただけると助かります。
よろしくお願いいたします。

お礼日時:2006/12/28 14:24

> ------------------------------------


> 好きな食べ物は   好きな色は
> ------------------------------------
> りんご,みかん    あお,あか,きいろ
> ------------------------------------

これ、どう集計したいんですかね? 「好きな食べ物」は、りんご 1 みかん 1 ですか。りんご,みかん 1 ですか。

> そもそもアンケートフォームの設問設定自体が間違っていたのでしょうか?

まったくもって「そのとおり!」です。

私の疑問はとりあえず前者だとして、さらにExcelがお書きになっているイメージからタブ区切りかなんかだと想像して、まずは「好きな食べ物.CSV」と「好きな色.csv」に分けます。

それでもって後はプログラム組める人に泣きつくしかないですね。

これを
-------------
好きな食べ物は
-------------
りんご,みかん
-------------
魚,みかん  
-------------

こう直してもらいます。
-------------
好きな食べ物は
-------------
りんご
-------------
みかん
-------------

-------------
みかん  
-------------

文字列中のカンマ探して以降を次のレコードに切り飛ばす。「できる」人にはプログラム処理は可能です。カンマが全角半角混在してたとか実は「、」もあったとかは早めに教えてあげてください。
    • good
    • 0

好きな食べ物の1つの質問に複数回答できるんですかね



これだときれいな表にするのは今のままだったら難しいと思います
CSVを作り変えるか

簡単にまとめれるかわかりませんが
好きな食べ物の列を新しい表にコピーして
その列を選択して「データ」の「区切り位置」でやってやれば
一応セル1つに対し1データにはなると思います

説明が下手ですみません。。。
    • good
    • 0

そのアンケートフォームは何で作られているのでしょうか?


もしCSV出力機能を修正できるなら、
りんご,みかん,あお,あか,きいろ
でなく
"りんご,みかん","あお,あか,きいろ"
のように出力するよう修正するのが手っ取り早いと思うのですが。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。

使っているのは「X-Form」というレンタルフォームです。
ざっと見た感じCSV出力機能の修正はなさそうでした…。

お礼日時:2006/12/28 13:04

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!