• ベストアンサー

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/17068)
回答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/17068)
回答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/17068)
回答No.1

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

rirakkuma1852
質問者

補足

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

関連するQ&A

  • エクセルで結合したセルにおいて,結合したすべてのセルをカウント対象としたい

    エクセル2003にて,宿泊予約のリストを作成しております. ワークシートに添付画像のような表を作成し,動かしております. 各部屋番号の行を2行ずつとし,上段にチェックイン/アウトの日を記入,下段に宿泊者名を記入します.宿泊日が連泊となる場合は,宿泊者名のセルを宿泊期間分だけ結合させて使用しております. また,最終行に該当日のチェックイン数,チェックアウト数をカウントさせ,集計しております. ここはCOUNTIF関数にて解決しております.本来は該当セルのみとしたいのですが,範囲指定のため,宿泊者名のセルも含んでおります. ここでさらに発展させるため,当日の宿泊者総数(チェックアウトも含む)を算出させようと思うのですが,COUNTA関数の場合,結合セルについては,入力したセルのみを有効として計算するため,他の結合された部分については,空白として算出されてしまいます. 空白と扱われるセルについても,有効となるようにカウントするには,どのようにしたらよろしいでしょうか? また,別法でも可能でしたら,あわせて教えていただけるとありがたいです. よろしくおねがいします.

  • エクセル/指定範囲のセル数を返すワークシート関数は?

    エクセル2000です。 たとえば、A1:A100の範囲に、空白か否かを問わずセルがいくつあるかを返すワークシート関数はないでしょうか? 空白以外の数+空白の数で求められるかと思いましたが、 =COUNTA(A1:A100)+COUNTBLANK(A1:A100) では、計算の結果 ="" になっているセルが両方にカウントされてだめです。 VBAなら Range("A1:A100").Count で一発なのですが・・・・。

  • エクセル2007の使い方について

    エクセル2007を使用しています。項目ごとに集計できる演算式を入れ、必要な都度、行を挿入して使っていました。ところが、急に「データの流失を防ぐため、空白でないセルをワークシートの外に移動することはできません。新しいセルを挿入する別の場所を選択するか、ワークシートの末尾からデータを削除してください。」というメッセージが出て、挿入ができなくなってしまいました。 なんのことやら意味がわかりません。解決方法を教えてください。

  • EXCELの特定セルの合計

    EXCELで複数シートの特定セルだけ(例えばJ60ばかり)を集計したいのですが、どうしたらよいでしょうか。

  • 《エクセル2000》ごく単純に、セルの数を数えたいのですが

    こんにちは。 数字・テキスト・空白(ブランク)が混在しているシートがあり、その任意の範囲のセルの数を出したいのです。 COUNTBLANK+COUNTAで出るのはわかるのですが、これを一発で出す関数はありますか?

  • エクセルでセルの装飾毎に集計する方法は?

    エクセルでセルの装飾がありますが、 その装飾毎に集計する方法はないでしょうか? 入力されたセルの数を集計するには、COUNTAですが、 これを装飾毎に集計したいのです。 たとえば、横線は横線ごとに、赤色を付けたセルは赤色を付けたセルごとに その範囲にいくつあるのかを集計したいのです。 詳しい方、よろしくお願いします。

  • excel 記入行空白セルの集計

    よろしくお願いします。 アンケート集計で未記入の空白セルをカウントしたいと思っています。 アンケート結果をどんどん足していく形なので、countbrankでやろうとすると範囲指定がうまくいかず困っています。 例 記入シート 行列 A B  1 aaa bbb 2 ccc 3 ddd eee 4 fff   5 ggg bbb 6  7  ※6以降は今後追加していく※ 集計シート bbb 2 eee 1 未記入 2 記入してある者についてはcountifで作れました。 記入行のみの空白セルの集計方法のご教授お願いします!!!

  • Excel VBA 空白セル以外のセルを罫線で囲む

    Excel VBA 空白セル以外のセルを罫線で囲む ここの質問箱をよく利用させて頂いている者ですが、また質問させていただきます。 あるシート(例:”Sheet1”)の全セル内のうち、ランダムな文字が全セル内のどこかに記入されています。 また、記入される位置は常に変化します。 つまり、ある時は「A1」に入力されていても、次ははそうでないということです。 この様な場合、文字が入力されているセルのみに罫線を引く処理を行いたいのですが、実現は可能でしょうか? また、可能であれば、どの様なコードになるのでしょうか。教えてください。

  • エクセルVBAにて選択したセルが空白の場合任意のシートに飛ばした

    エクセルVBAにて選択したセル(A1とします)が空白の場合任意のシート(Sheet2とします)の任意のセル(B1とします)を選択させる場合どのようにしたらよいでしょうか?

  • エクセルのシートからの特定セルのコピー

    質問致します。教えて下さい。 エクセルファイルに月次のシートを作成していきます。 シートの見出しは”1月”、”2月”・・”12月”になります。 そうやって作成してきた月次のシートの特定セルをまとめて一覧にする集計シートがあります。 集計シートのD3セルに1月のL10セルを参照(='1月'!L10)してあるとして、その隣のE3セルに2月のL10セルを参照したいのですが、D3セルのコピー&ペーストをすると(='1月'!M10)となりシート名やセルのズレを手打ちで直しています。 E3セルの手打ち修正をしなくて済むようなコピー方法はないでしょうか。 宜しくお願い致します。

専門家に質問してみよう