Excelの同一フォーマット(アンケート)のシートを別シートにまとめたい。

解決済みの質問

Excelの同一フォーマット(アンケート)のシートを別シートにまとめたい。

Excelで同じフォーマットの日報をまとめたいのです。何件か似たようなご質問もあったように思ったのですが、ちょっとわかりませんでした。
どうぞ教えてください。
できればExcelの機能で出来ればと思っています。
もし他の方法なら、それでも構いません!

○ファイルは一つで、シートが分かれています。
・・・シート1~シート30
○シートのフォーマット
セルD2に「日付」、F2に「場所」
C4、C6、C8、C10、C12に日報の内容が入っています。

○この各シートをシート31に一括まとめたいのです。
集計等は必要ありません。

○まとめるシートのフォーマットイメージ
    日付│場所│C4│C6│C8│C10│C12
シート1 5/2│・・│・・・・
シート2 5/3│・・│・・・・
 ・
 ・
 ・
シート30

すいません。どなたか教えていただけますか。
どうぞよろしくお願いします。  

投稿日時 - 2005-05-11 15:02:27

連想キーワード:

QNo.1381095

すぐに回答ほしいです

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

こんにちは。

indirectワークシート関数を使用します。
下記の手順でやってみましょう。

(1)A2~A31に「シート1」~「シート31」と入力します。必ずシート名と合致させて下さい。
(2)B1~H1に「日付」「場所」「C4」…と入力します。

準備おわり。

(3)B2セルに、下記関数を入力します。
 「=indirect($a2 & "!D2")」
(4)C2セルに、下記関数を入力します。
 「=indirect($a2 & "!F2")」
(5)D2セルに、下記関数を入力します。
 「=indirect($a2 & "!" & B$1)」

一行終わり。

(6)D2セルの内容をE2~H2にコピーします。
(7)B2~H2セルの内容を、下の行にがーっとコピーします。

できあがり。

indirectワークシート関数とは文字列で指定したセルの値を参照する関数です。
(3)では、
 「=indirect($a2 & "!D2")」
→「=indirect("シート1" & "!D2")」
→「=indirect("シート1!D2")」
ということをやっています。

投稿日時 - 2005-05-11 15:28:21

お礼

ありがとうございます!
出来ました。文字列が多いシートであるため、非常に役立ちました。

(3)と(4)の作業を行ない、進めたのですが、

ちなみに (5)の「"!" & B$1」というのは、どういうことを行なっているのでしょうか。

投稿日時 - 2005-05-12 15:56:48

ANo.1

3人が「このQ&Aが役に立った」と投票しています

[  前へ  |  次へ ]

ベストアンサー以外の回答(2件中 1~2件目)

ANo.3

こんばんは。遅くなりました。
すみません。(5)、間違っていましたね(汗
下記に読み替えてください。

(5)D2セルに、下記関数を入力します。
 「=indirect($a2 & "!" & D$1)」

ちなみに(5)では、
 「=indirect($a2 & "!" & D$1)」
→「=indirect("シート1" & "!" & "C4")」
→「=indirect("シート1!C4")」
ということをやっています。

混乱させてしまいましたことをお詫び申し上げます。

投稿日時 - 2005-05-13 02:53:44

お礼

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

投稿日時 - 2005-05-13 14:30:49

ANo.2

動作
日報シート Sheet1 から Sheet数字 まで
集計シート にデータをコピーします

事前設定
 日報シート名 = "*Sheet*#*"
  日報シート名が シート11 なら "*シート*#*" 
        # は数字  * はワイルドカード
 集計先シート を選んでから操作するなら 
  Set 集計先シート = ActiveSheet を有効しておく
 集計先シートの シート名を固定するなら
  'Set 集計先シート = Sheet("集計シート") の'を外す

 見出し =    / 区切りで適当に設定

注意 集計先シート は毎回クリアします

マクロ VBエディタを開き 標準モジュールを追加して
 標準モジュールに貼り付け
  ↓     ↓
Sub 日報シートのデータを集める()
日報シート名 = "*Sheet*#*" '日報シート名に併せて検討 *
Set 集計先シート = ActiveSheet
'Set 集計先シート = Sheet("集計シート")'

With 集計先シート
.Cells.Clear '集計先シートをクリア

見出し = "日付/場所/c4/c6/c8/c10/c12"
見出し = Split(見出し, "/")
データ設定行 = 1
.Range(.Cells(データ設定行, 1), .Cells(データ設定行, 7)) = 見出し

For Each シート In Worksheets
If 集計先シート.Name <> シート.Name Then
If シート.Name Like 日報シート名 Then '集計対象シート名を確認
データ設定行 = データ設定行 + 1
'日報データ読み出し
日報データ = シート.Range("D2").Value & vbTab & _
シート.Range("F2").Value & vbTab & _
シート.Range("C4").Value & vbTab & _
シート.Range("C6").Value & vbTab & _
シート.Range("C8").Value & vbTab & _
シート.Range("C10").Value & vbTab & _
シート.Range("C12").Value
日報データ = Split(日報データ, vbTab)
'データ書き出し
.Range(.Cells(データ設定行, 1), .Cells(データ設定行, 7)) = 日報データ

End If
End If

Next

End With

End Sub

投稿日時 - 2005-05-11 17:28:07

お礼

今回は#1のやり方でさせていただきました。
また必要なときもあると思います。参考にさせていただきます。
ご連絡ありがとうございました。

投稿日時 - 2005-05-12 16:08:25

あわせてチェックしたい
  • Excelの同一フォーマットのシートを別シート(日付順)にまとめたいんです。 ...
  • 同一様式複数シートから集計 ...
  • Excelでアンケート集計 ...
PR
【回答募集中】花粉にひと言、物申す![ 詳細 ]

OKWaveのオススメ

教えて弁護士さん!

お金の悩みQ&A特集はこちら