• ベストアンサー

EXCELでカンマで区切られた文字列を別々のセルに分けたい

はじめまして。 EXCEL初心者のものです。 基本的な質問かも知れませんが分からないので教えてください。 現在、Excelでアンケート結果を集計しようとしております。 アンケートフォームにCSV出力できる機能があり、 CSVファイルにてダウンロードはできたのですが ひとつのセルに複数の回答が入っているためうまく集計ができません。 【例】こんな感じです。 ------------------------------------ 好きな食べ物は   好きな色は ------------------------------------ りんご,みかん    あお,あか,きいろ ------------------------------------ 魚,みかん      紫,みどり ------------------------------------ 以下、たくさん続きます(1,000件ぐらい) 通常、こういったデータの場合はどのように処理すればよいでしょうか? そもそもアンケートフォームの設問設定自体が間違っていたのでしょうか? 困っていますので宜しくお願いいたします。

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

  • ベストアンサー
noname#140971
noname#140971
回答No.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 関数なんて理解しようがしまいがどうでもよいことです。 使えれば問題ないです。 頑張って下さい。

その他の回答 (6)

noname#140971
noname#140971
回答No.6

すみません! 専門家になっていましたが、エクセルは操作したこともない門外漢です。 が、求めに応じて補足します。 <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 関数は、後ほど・・・。

panda_freaks
質問者

お礼

門外漢なんてとんでもない! こんな複雑なコードを書かれているのにビックリしました! しかし拝見しているとかなりレベルが高そうで私では理解できません…。 もう少し勉強してから再度教えていただきたいと思います。 せっかくご丁寧にアドバイスいただいたのに理解不足で申し訳ありません。 ありがとうございました。

  • mshr1962
  • ベストアンサー率39% (7418/18948)
回答No.5

集計はどのようにして計算するつもりなのでしょうか? 上記の内容でも りんごの個数=COUNTIF(A:A,"*りんご*") みかんの個数=COUNTIF(A:A,"*みかん*") 魚の個数=COUNTIF(A:A,"*魚*") で集計自体は可能です。まあ正確には りんごの個数=COUNTIF(A:A,"*りんご*")+COUNTIF(A:A,"*リンゴ*") +COUNTIF(A:A,"*林檎*") のようにしなきゃいけないんでしょうけど... 一応、エクセルの機能で横方向にはバラせます。 右側のセルに展開する形なので、展開用の列を挿入してもらう必要がありますが... 一列のみ範囲選択して、「データ」「区切り位置」で 「カンマやタブなどを...」を選択して次へ 「カンマ」を選択して「次へ」 書式を変更する必要があれば、作業後の列単位に書式を選択して「完了」 これで りんご,みかん → りんご みかん の2セルに分かれます。

noname#140971
noname#140971
回答No.4

好きな食べ物は   好きな色は ------------------------------------ りんご,みかん    あお,あか,きいろ ------------------------------------ 魚,みかん      紫,みどり ------------------------------------ 単に集計するだけであれば、 <Sheet1> りんご みかん 魚 みかん <Sheet2> あお あか きいろ 紫 みどり と、CSVファイルを読み込む際に分ければ・・・。 これを実現することが無理であれば、ファイルを質問数だけコピーしてメモ帳で編集。 60分もあれば余裕で修正出来ると思います。

panda_freaks
質問者

お礼

非常に魅力的な提案をいただいているようですが 私の勉強不足のためどうすればいいのか分かりません…。 もう少し具体的に教えていただけると助かります。 よろしくお願いいたします。

回答No.3

> ------------------------------------ > 好きな食べ物は   好きな色は > ------------------------------------ > りんご,みかん    あお,あか,きいろ > ------------------------------------ これ、どう集計したいんですかね? 「好きな食べ物」は、りんご 1 みかん 1 ですか。りんご,みかん 1 ですか。 > そもそもアンケートフォームの設問設定自体が間違っていたのでしょうか? まったくもって「そのとおり!」です。 私の疑問はとりあえず前者だとして、さらにExcelがお書きになっているイメージからタブ区切りかなんかだと想像して、まずは「好きな食べ物.CSV」と「好きな色.csv」に分けます。 それでもって後はプログラム組める人に泣きつくしかないですね。 これを ------------- 好きな食べ物は ------------- りんご,みかん ------------- 魚,みかん   ------------- こう直してもらいます。 ------------- 好きな食べ物は ------------- りんご ------------- みかん ------------- 魚 ------------- みかん   ------------- 文字列中のカンマ探して以降を次のレコードに切り飛ばす。「できる」人にはプログラム処理は可能です。カンマが全角半角混在してたとか実は「、」もあったとかは早めに教えてあげてください。

  • kaz-5919
  • ベストアンサー率26% (45/170)
回答No.2

好きな食べ物の1つの質問に複数回答できるんですかね これだときれいな表にするのは今のままだったら難しいと思います CSVを作り変えるか 簡単にまとめれるかわかりませんが 好きな食べ物の列を新しい表にコピーして その列を選択して「データ」の「区切り位置」でやってやれば 一応セル1つに対し1データにはなると思います 説明が下手ですみません。。。

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

そのアンケートフォームは何で作られているのでしょうか? もしCSV出力機能を修正できるなら、 りんご,みかん,あお,あか,きいろ でなく "りんご,みかん","あお,あか,きいろ" のように出力するよう修正するのが手っ取り早いと思うのですが。

panda_freaks
質問者

お礼

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

関連するQ&A

  • エクセルの関数について、質問させて頂きます。

    エクセルの関数について、質問させて頂きます。 現在カウントイフ関数を使ってアンケート集計用のシートを作っています。 そのアンケートの複数回答の設問の集計結果を出す際に、 Aという縦軸の1つのセルに りんご りんご,みかん,ぶどう みかん,ぶどう ぶどう このような形で出てきているデータを りんご2件 みかん2件 ぶどう3件 以上のように集計したく、 =COUNTIF(A2:A50000,AN9) ※AN9にはりんごと入力されています 上記の式で計算をしているのですが、 実際に出てくる結果は りんご2件 みかん1件 ぶどう1件 上記のように、最初の部分だけしか読まれずに 結果が出されてしまいます。 ~~を含むといった形で指定出来ればと思うのですが、 調べても結果が見つからないので、どうかお力をお貸しください。 よろしくお願いいたします。

  • エクセルで、セルの冒頭に文字を追加したいです。

    エクセルで、セルの冒頭に文字を追加したいです。 たとえば、タイトル【美味しいみかん】【美味しいバナナ】【美味しいりんご】があるとして、 【大特価!美味しいみかん】【大特価!美味しいバナナ】【大特価!美味しいりんご】というふうにしたいのですが、なにか、工程をショートカットする方法などはないものでしょうか。 CSVでたくさんの商品を扱っているので、クリック→コピペ、の手間を少しでも減らせないものかと思っております。 是非、お力添えをお願い致します!

  • エクセルの集計

    エクセルの集計で質問します。 A列に「りんご」か「みかん」が入っている行を集計したいと思っています。    A 1 りんご、なし 2 みかん、もも 3 りんご、みかん 4 ぶどう 5 りんご 6 ぶどう、もも 7 みかん という表があると、期待している集計値は「5」なのですが、どのような関数を使えばよいかわかりません。 よろしくお願いします。

  • エクセルの集計について

    エクセルの集計について 項目 単価 数量 合計 りんご 50 3 150 みかん 30 5 150 バナナ 80 4 320 みかん 30 3 90 りんご 50 6 300 りんご 50 2 100 バナナ 80 4 320 みかん 30 7 210 上記のような表で りんご 11 550 バナナ 8 640 というように、0以外のものを集計できますか?

  • Excel 2007で困っています

    Excel 2007で困っています   A    B    C 1【品名】 【区分】 【金額】 2 りんご  運賃   1,200 3 りんご  運賃   1,000 4 りんご  容器    300 5 りんご  容器    200 6 りんご  雑費    900 7 みかん  運賃   1,500 8 みかん  運賃   1,250 9 みかん  容器    200 10 みかん  雑費    800 ・  ・    ・    ・ ・  ・    ・    ・   このようなデータを下記のように        ↓   A    B    C 1【品名】 【区分】 【金額】 2 りんご  運賃   1,200 3 りんご  運賃   1,000       運賃合計  2,200  4 りんご  容器    300 5 りんご  容器    200       容器合計   500 6 りんご  雑費    900       雑費合計  1,400 7 みかん  運賃   1,500 8 みかん  運賃   1,250       運賃合計  2,750 9 みかん  容器    200       容器合計   200 10 みかん  雑費    800       雑費合計  1,000 ・  ・    ・    ・ ・  ・    ・    ・ 区分をキーにして集計指示画面より集計指示をして さらに、手動で【品名】毎に1行を追加して【品名】毎の合計金額をオートSUMボタンだけで自動で 行っていたのですが、Excel 2007 にしてから自動で品名毎の合計を引っ張ってきてくれません そもそも、小計指示後に左上の1,2,3の□ボタンで2□を押して【区分】毎の集計のみ表示させると 金額が0表示になってしまいます。3□を押して全データ表示させると区分集計に集計金額が表示されます Excel2007は、表示から変更が多くて戸惑っています 以前のように、表示させ、オートSUMだけで品名集計金額を出す事はできないでしょうか? 説明が下手ですみませんが、よろしくお願いします。

  • EXCEL セル内の一部文字色を太字にしたい。

    EXCEL2003を使用しています。 アンケートの集計を行っています。 C・D・E列にコメントが入力されています。 その列それぞれのセル内の一部が、赤・青・緑と色分けされているので、その色の付いた文字を太字に変えたいのですが、どうしたらいいのでしょうか? 使用している色は、黒・赤・青・緑です。 VBAで変えられそうですが、全くわかりませんので、ご回答の程、どうぞよろしくお願いいたします。 また、色の数値の出し方も併せて教えてください。

  • エクセルでの集計に関して

    こんにちは。いつもお世話になっております。 例えばですが、以下のようなCVSのデータがあります。 (エクセルで開けます。) 昇順 降順に変更可能です。 これが、何週間分かあり、タブがあって日にちごとに見れますが、 30件ほどの品目の、200件ほどのデータが50件ずつにのみ表示されます。 4/1分データ    品名   売り上げ数   りんご1  100    りんご2  200    みかん1  300    みかん2   400    バナナ1  500             次の50件→ -------------------------------------------- 4/2分データ    品名   売り上げ数   りんご1  1000    りんご2  2000    みかん1  3000    みかん2   4000    バナナ1  5000   バナナ2  6000   アボガド  7000   いちご   8000     次の50件→      ↓続く これを、エクセルで下記のようにしたいのです。 ********************************************** ID  品名    4/1分集計 4/2集計  4/3集計  4/4集計  4/4集計~~ A   りんご1  100   1000    300 B   りんご2  200   2000    400  C   みかん1  300   3000    500 D  みかん2   400   4000    600 E   バナナ1  500    5000    700 D  バナナ2        6000    800 E  アボガド       7000    900 F  いちご       8000    1000 日にちによって当然、新たな項目、アボガドやいちごがあったりします。みなさんでしたら、最速で一番簡単に行う為にどうしますか? ちょっといそいでてお知恵をどなたか下さい! ご教授下さいますようお願い致します。

  • Excelで簡単にデータ集計する方法

    お世話になります。 以下のような形式のCSVデータファイルがあります。  品名,個数,金額(=単価x個数) 例えば、  ミカン,1,80  ミカン,1,75  リンゴ,2,420  ミカン,2,140  リンゴ,10,1900 といった感じです。 これを集計して、品名毎に個数と金額の合計を得たいのですが、 Excelを使用して簡単にできる方法はございますでしょうか? 品名が少なければ、品名でソートして手作業で SUM()を設定するのですが、 今回、品名の種類が多すぎてとても手作業ではできない状況です。 どうぞよろしくお願いいたします。

  • EXCEL 集計の方法

    おせわになります。 EXCELにあるデータを集計したいのですが、「集計」機能では対応できませんので、何か良い方法がありましたらお知らせくださいますようお願いいたします。 ------------------------------------------ A列    B列  C列 ○○会社 りんご 1500円 ○○会社 みかん 1000円 ○○会社 みかん 1000円 △△会社 りんご 1500円 △△会社 みかん 1000円 ------------------------------------------ というデータがあったとします。 今回はB列ごとに集計するのではなく、 A列ごと、B列ごとの集計です。 つまり、 ○○会社 りんご1500円 ○○会社 みかん2000円 と、いうことです。 何かよい方法はありますでしょうか? よろしくおねがいします。    

  • エクセル関数について

    こんにちは。 エクセルで表計算・集計をしているのですが 表1に数値のある項目および数字のみを 表2に表示するためにはどうしたらよいのでしょうか。 例) 表1 りんご 3  みかん 0    表2 りんご 3  みかん←表示しない 0←表示しない  ご回答 よろしくお願いします

専門家に質問してみよう