• ベストアンサー

Excelで特定セルの書き込みを検索・まとめたい

欲張ったタイトルですみません。 アンケートをExcelで集計しています。 選択肢の中からいくつかを選ぶ質問と、 「ご自由にご記入ください」の質問があります。 Excelワークシートで配布し、回答をもらいました。 すべてのワークシート(70枚前後)ひとつのブックにまとめて集計しています。 選択問題については、COUNTAで集計したのですが、 自由記入問題をどうしようか考えています。 やりたい方法は次の通り。 1.この質問は答えている場合と空白の場合があるので、 その回答部分のセルが「空白になっていない」シートを検索したい。 2.できれば、そのセルに記入されている回答をひとつのセルに自動的にまとめたい。(文字列での回答です) 2は無理かもしれませんが、できれば1だけでも実現できないかと思います。 OSはwindows2000、ソフトはExcel2002です。 その他質問で不足があれば補足します。 よろしくお願いいたします。

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

  • ベストアンサー
  • chirop
  • ベストアンサー率50% (1/2)
回答No.7

再びNO.2の者です。昨日は時間がなかったので、中途半端な回答ですいませんでした。(NO.3) NO.5の方のシート名変更の方法はとても参考になりました。使わせていただきます! マクロを使わない方法であれば、下記もおすすめです。 まずは複数シートを1つのデータベースにまとめた方が何かと扱いやすいと思います。 前提として、シート名に何らかの通し番号がついている方が手間が少なくて済みます。 (回答1,回答2やsheet1,sheet2のように。なっていなければNO.5のマクロで変更できますね。) 【回答用シートのイメージ】シート名:sheet1  |  A  -------------- 1|<問1:設問~> 2|○ 3|<問2:設問~> 4|あああ ↑イメージ合ってますか? (レイアウトがうまく表示されていなかったらごめんなさい) 【集計用データベースのイメージ】これを作成する。  | A   | B | C --------------------------- 1|シート名|問1|問2 2|sheet1 |○ |あああ 3|sheet2 |× |いいい 【集計用データベース作成手順】 1.集計用シートを新規で作成。 2.1行目は項目名を入力。 3.回答シートのシート名をA2以降に入力。(連番であればオートフィルで一発コピー) 4.下記の計算式を入力。 B2セル:=INDIRECT($A2&"!A2") C2セル:=INDIRECT($A2&"!A4") ※$A2は集計用シートで回答用シート名が入力されているセル名。 ※&以降は回答用シートからひっぱってきたい回答欄のセル名を入力。 ※D2セル以降も同様に入力していく。 5.2行目の計算式を下までコピー。 以上の手順で複数シートを1つのデータベースにまとめることが出来ます。 要望の解釈さえ合っていれば、この手の作業にいつも使用している方法なので大丈夫だと思います。 データベースになってしまいさえすれば、あとはどんな集計でも自由自在です!

rirakkuma1852
質問者

お礼

ありがとうございました。 この方法はまだ試していないのですが、やってみたいと思います。 みなさま、具体的な例を挙げた丁寧な回答を頂き、本当にありがとうございました。勉強になりました。

その他の回答 (6)

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

#4です。 #4でアンケートのシートの例示の確認を頂けなかったので下記を仮定して、(VBAを使わない)集計方法を例示します。ご参考に。 ANQ1 満足ですか(1)はい(2)いいえ(3)不明 ANQ1回答 2 ANQ2 欲しいですか(1)欲しい(2)いいえ(3) 安ければ ANQ2回答 3 ANQ3 そう思いますか(1)思う(2)思わない(3)思うときもある ANQ3回答 1 以下12セットある。 ここで回答数字を、数字に応じて場所(セル、列)の「1」に置き変える。C2,D2,E2・・を考えて左からの位置に1を入れる。この1を全シートのクシ刺し加算すると、その選択肢に何人選択したたか判る仕組みに組みたて直すわけです。 例えばB2に回答1とあれば、C2に1 B2に2とあれば、D2に1 B2に3とあれば、E2に1と入れる。 それをやるには、関数式はC2に=IF($B2=COLUMN()-2,1,"")といれ右方向へ式を選択肢数だけ複写する。 A3は第2質問文で、飛ばして、 B4(第2質問の回答)に付いてはC4:E4にC2:E2を複写する。 これを70人分行う(ちょっとつらいが1時間で終るでしょう。 そして集計シートにC2:E2,C4:F2、C6:E6 ・・(セルは1かスペース)を3D集計する。 それで回答状況がわかる。 3D集計は=SUM(Sheet1:Sheet3!C2)のようにシートについて、「から」「まで」を指定できるのでそれを使う。

rirakkuma1852
質問者

お礼

ありがとうございました。 この方法はまだ試していないのですが、やってみようと思います。

  • tascany
  • ベストアンサー率48% (15/31)
回答No.5

2はNo.2の回答を支持します。1については、全シート書式が同じなら、簡単なマクロでかなりの部分を自動化できると思います。 1)70枚のシートの一番左端に集計用のシートを用意する(書式は他のシートと同じで)。 2)集計用シートで自由記入問題1の問題が入ったセルをA1とすると、A2からA71まで空白セルを挿入する。 3)A2をアクティブにしたうえで、下のマクロを実行する(バックアップをとっておくことをお忘れなく・・・)。※ビジュアルベーシックエディタの標準モジュールにそのまま貼り付けたら使えます。 Sub 集計() For counter = 2 To 71 ActiveCell = "=Sheet" + CStr(counter) + "!$A$2" ActiveCell.Offset(1, 0).Select Next End Sub 4)集計用シートで問題2のセル(A72)をアクティブにする。 5)他の70枚のシート上、問題2の回答はA4にあるはずなので、うえの"!$A$2"の部分を"!$A$4"に書き替える。 6)以下、問題12まで同様に。縦に長くなりすぎるのがいやなら、問題2の問題セルをB1に移動させても、先のマクロは使えます(空白以外のセルの抽出については、No.2の回答参照)。 7)ただし、うえのマクロを使うには、左から二番目のシートから順にSheet2、Sheet3・・・というふうに並んでなければだめです。ですので、もしそうなってないなら、下のマクロを実行しておいてください。 Sub シート名変更() For counter = 2 To 71 Sheets(counter).Select ActiveSheet.Name = "Sheet" + CStr(counter) Sheets(counter + 1).Select Next End Sub マクロについては、いちおうテストしてますが、実行のさいは、とくにシートの枚数に注意してください。不足してたらエラーになりますので。

rirakkuma1852
質問者

お礼

ありがとうございます! できました!すごいすごい! 勉強になりました。

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

#1です。補足有難うございました。 エクセルで、数十人数百人のアンケート集計や集約をするのは難しいことだと思いますよ。アンケートを回答者に出す前に、返ってきてから後のことを良く考えるべきだった。 まとめの1ブックに、回答者別に70シートあり(各ブックより手作業でコピーした?ご苦労さん)。 各シートは ANQ1 XXXXX(文章?) ANQ1回答 YY(数字?) ANQ2 XXXXX ANQ2回答 YY ・・・・ ・・・12セット らしい。 最終形として、エクセルは2次元(縦横)の表なので、どういう形にしたいのでしょうか?縦方向に何を並べ、横方向に何を並べるのか。 アンケートはいわば3次元(縦横のシートを70枚積み上げたイメージ)を2次元に変えるって難しそう。 エクセルの関数はこう言うのが苦手で、VBAでも使わないと無理ではないかなと思います。 最終形の前に、出来れば1シートにまとめるのが定石でしょうか。

rirakkuma1852
質問者

お礼

ありがとうございました。 VBA・・ちょっと難しそうですね。 >エクセルで、数十人数百人のアンケート集計や集約をするのは難しいことだと思いますよ。アンケートを回答者に出す前に、返ってきてから後のことを良く考えるべきだった。 そうなんですね。 Accessとかのほうがいいんでしょうか。 お薦めのソフトがあれば教えていただけますか。

  • chirop
  • ベストアンサー率50% (1/2)
回答No.3

NO.2の者です。 補足を拝見したら、シートが複数にまたがっているようで、やはり内容が少し違っていましたね。すいません。 まず複数のシートからindirect関数で1つのシートにデータベース化した方が何かと加工しやすいと思うので、その作業をしてから、NO.2の作業を行えば可能だと思います。 もっと効率的な方法があれば別の方アドバイス願います。

rirakkuma1852
質問者

お礼

ありがとうございました。

  • chirop
  • ベストアンサー率50% (1/2)
回答No.2

ある程度想像で解釈した内容に対して回答しますので、要望と違っていたらすいません。 1.については、単純にオートフィルタ(データ/フィルタ/オートフィルタ)をかけて「空白以外のセル」で抽出すれば出来ると思います。 2.については裏技的ですが、下記の手順で出来ると思います。 ・1で抽出したデータの該当列の可視セルだけ選択(編集/ジャンプ/セル選択/可視セル)し、コピー。 ・一旦、Word等の文書にテキストで貼付。 ・一旦貼り付けたテキストを再度コピー。 ・貼り付けたいセルをクリックし、上部の文字入力欄に貼付。(そのまま貼り付けると複数セルにまたがってしまう) ※上記のやり方であれば、1つ1つの回答で改行されるので見やすいと思います。(但し、あまりにデータが多いと途中で切れてしまう可能性があります。) ※改行したくなければ、セルの値を結合すればいいと思うのですが、&やconcatenate関数では件数が多いと指定が面倒です。 ⇒他にいい結合方法(複数セルを,等で区切って1つのセルに結合する方法)があれば、私も知りたいので、どなたかアドバイス願います。

rirakkuma1852
質問者

お礼

ありがとうございました。 オートフィルタというワザを忘れていました。

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

>アンケート 質問は沢山ありましたか(例えば問1-問10までとか) >Excelワークシートで配布し、回答をもらいました 70ブック(中身のあるのは1シートのみ)あるということですよね。 >ワークシート(70枚前後)ひとつのブックにまとめて集計しています。 70ブックを1ブックにどのような方法でまとめましたか? 現在ブックやシートの状態はどうなっていますか。シートの数は? 凡その、列・行のレイアウトは。

rirakkuma1852
質問者

補足

(1)質問数は全部で12問です。 (2)まとめは、それぞれのブックから回答されたワークシートをひとつのブックに移動してまとめました。 ひとつのブックに70枚のシートが入ってる状況です。 (3)列・行のレイアウトは、質問の入ったセルの下に解答欄が入ったセルがあり・・の繰り返しです。 選択問題は選択肢をひとつずつ縦に並べています。 ・・・補足になっているでしょうか(汗)

関連するQ&A