プロが教えるわが家の防犯対策術!

Excelについて、日報のようなもので1つのファイル内に複数のシート(約30シート/1ファイル)が作成してあります。
これを1ページにまとめるような方法があればご教授ください。
コピー・ペーストで地道にやり始めましたが、操作ミスがあるような気がして、今一つ不安になってしまいます。
項目ごとに集計するのではなく、単純に縦に並べていきたいのです。
よろしくお願いします。

A 回答 (4件)

コピー・ペーストで地道にやり始めましたが、操作ミスがあるような気がして


------------------------------------------------------------
多分末尾へ貼り付けをされているのでは
→貼り付け位置のためのスクロールが大変ですね

下にするシートから順に
コピーしたセル挿入で、貼り付け位置がセルA1と同じになります。
またこうすると張り付けるsheet選択と張り付ける範囲選択以外は同じ流れです

この同じ流れのマクロが次です(Sheet0にコピペする)

Sub コピーしたセル挿入()
Selection.Copy
Sheets("Sheet0").Select
Rows("1:1").Select
Selection.Insert Shift:=xlDown (右方向は =xlRight)
End Sub

ここまで準備して
1.すべてのSheetの有効範囲を選択します
2.コピペするシートを逆順に「Sheetクリック→マクロ実行」
    • good
    • 6

この質問のように、単純なことで、意外と難しいのが面白い!!



すぐ、VBAでと考えますが、やさしい方法はないか考えました。

1ファイルなら、コピベで地道にが、1番。たくさんのファイルなら ↓

No.1さんが勧めるように、そのママ利用するなら、シート見出し左の矢印部分を右クリック

CONCATENATE関数で結合して、区切りウィザードで分離 も考えましたが、試さず

単純に、=で別Sheetのデーターを持ってくる、楽な方法を試してみました。
    1Sheetに1列の日報として
1B1に、Sheet2!Aと入力
2シート数分、右へオートフィル
3そのママ、選択状態で
AをA1に、すべて置換
(検索と置換DLBは閉じない)
4選択状態のママ、ダブル(W)クリックなどで
下へオートフィル
5そのママ、選択状態で
Sを=Sに、すべて置換

複数列の場合は、もう少し考えないといけませんね。

                      鎌倉 曽野蜩
    • good
    • 1
この回答へのお礼

TammyG3さん、ありがとうございます。
本当に単純なことだと思うのですが、こんな操作はあまり
需要がないのでしょうか?
もっと簡単にできると思ったのですが。

お礼日時:2013/03/25 21:49

'ブックの全シートを単純に1枚にまとめる


Option Explicit
Const xName_To = "Combiner"
Const xHeads = 1
Sub CombineSheets()
Dim xLast_From As Long
Dim xLast_To As Long
Dim kk As Long
Application.ScreenUpdating = False
Application.DisplayAlerts = False
For kk = 1 To Worksheets.Count
If (Worksheets(kk).Name = xName_To) Then
Worksheets(kk).Delete
Exit For
End If
Next
'先頭に集合用のワークシートを追加
Worksheets.Add Before:=Worksheets(1)
Worksheets(1).Name = xName_To
For kk = 2 To Worksheets.Count
'元データを選択してコピー
xLast_From = Worksheets(kk).Cells(Rows.Count, "A").End(xlUp).Row
Application.CutCopyMode = False
With Worksheets(xName_To)
'集合先のシートの行数を調べる
xLast_To = .Cells(Rows.Count, "A").End(xlUp).Row
Application.CutCopyMode = False
If (xLast_To = 1) Then
'ヘッダをコピー
Worksheets(kk).Rows("1:" & xHeads).Copy
.Range("A1").PasteSpecial
xLast_To = .Cells(Rows.Count, "A").End(xlUp).Row
Application.CutCopyMode = False
End If
'ヘッダを除いてコピー
Worksheets(kk).Rows(xHeads + 1 & ":" & xLast_From).Copy
.Range("A" & xLast_To + 1).PasteSpecial xlPasteValues
End With
Next kk
Worksheets(1).Select
Application.CutCopyMode = False
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub
    • good
    • 12
この回答へのお礼

JazzCorpさん、ありがとうございます。
試してみたいのですが、ちょっと自分には難しそうなので
時間があるときに頑張ってみたいです。

お礼日時:2013/03/25 21:46

直接の回答にはなりません。


なぜ1シートに纏めたいのでしょうか?
呼び出しがやりにくい?
   
実は知人が地区の管理ファイルを貰いましたが、これもシートが多く呼び出すにも面倒でした。
そこで一番左に新しい目次シートを挿入して、各シートへの呼び出しハイパーリンクを作成しました。
目次シートを表示して、このリンクをクリックすれば簡単に目的シートを呼び出すことができ、かなり楽になったと喜んでいました。
   
求める回答と違っていたらゴメンなさいね。
    • good
    • 3

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


人気Q&Aランキング