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

エクセルで質問です同一ブック内に100シートあります。
そのシート全てにB22からS33までに表があります。

上記の100個の表を1シートに縦に順番に並べたいです。

コピペするにはちょっとめんどくさいので良い方法はありませんでしょうか?

A 回答 (7件)

    • good
    • 0

こんにちは。



この程度でよいのではないでしょうか。
あまり後先のことを考えずに、コピー目的だけを主に考えました。
別の新規のブックを開いて、順序は左から順に、シートの数の最後までそこにコピーしました。

標準モジュール等に貼り付けて実行すればよいです。残った不要のマクロは、捨ててしまってください。


'//
Sub SheetsCopy()
 Dim i As Long, j As Long
 Dim num As Long
 Dim Rng As Range
 Dim sh As Worksheet
 num = Worksheets.Count 'シートの数、100?
 Workbooks.Add '新規ブック
 Set sh = ActiveSheet '新規ブックを開いた時のシート
 ThisWorkbook.Activate '元のデータのブックに戻り実行
 j = 1
 Application.ScreenUpdating = False
 For i = 1 To num
  Worksheets(i).Range("B22:S33").Copy sh.Cells(j, 2) 'B列にコピー
  j = j + 11 + 1  'この中の11は、B22:S33の11行
 Next i
 Application.ScreenUpdating = True
End Sub
    • good
    • 0

んー…。


ここで回答を待っている間にコピペしたほうが早いような気がしなくもない。

・・・本題・・・
 =シート名+!+セル番地
の参照方法で別シートを参照できるので、
シート名の一覧を作って、12行ずつ参照するシートを切り替えるようにすれば良いと思います。
INDIRECT関数で文字列を範囲に置き換えることができますので、
A1セルからA100セルまでにシート名一覧を作成し、
B列には
 =INDIRECT(INDEX(A1:A100,INT(ROW(A1)+11)/12)&"!B"&(22+MOD((ROW(A1)-1),12)))
のようにして、必要な行までコピーするとか、範囲を指定してコピーするとかして複製です。

※この数式は未検証ですので動作の保証はありません。
 なお、数式内でやっていることは察してください。
 解説面倒(´・ω・`)
    • good
    • 0

まずは、各シートをブックに分解(変換)します。

以下、ご参照。
http://hamachan4.exblog.jp/11903116/

分解された*.xlsファイルを一つのフォルダーにまとめます。

次は、コマンドプロンプトの出番です。そのフォルダーに移動して、
拡張子[.xls]を[.csv](テキストファイル)に一括変換します。
ren *.xls *.csv
次に、これを一つのテキストファイルに結合します。
copy *.csv all.csv
これで、連結された「all.csv」をエクセルで開けばよいです。

なお、元excelファイル内にある、計算式やexcel設定は、
テキストファイルを経由するので、すべて無効になります。念のため。
    • good
    • 0

各シートはsheet1~sheet100ですか?


それとも個別名前を付けてますか?
(式で表せるものでないならシート名の一覧表を作る必要があります)

具体的にどのようにまとめたいのですか?
シート名を仮にsheet1~sheet100として、
B1~S12にsheet1の表を、B13~S24にsheet2の表を、という具合でしょうか?
(シート順に表をまとめて縦並び)
B1~S1にsheet1のB22~S22を、B2~S2にsheet2のB22~S22を、という具合でしょうか?
(シート順に行毎にまとめて縦並び)
B1~S12にsheet1の表を、T1~AK12にsheet2の表を、という具合でしょうか?
(シート順に表をまとめて横並び)
表示させたい位置、順番が分からないと式の立てようがありませんよ。

やり方としては、ROWあるいはCOLUMNによって表示させるセルの位置を把握し、
対応するシート番号(あるいはシート名一覧表での位置)を計算、
そのシート内の表示させたいセルの位置を計算、
INDIRECT(場合によってはADDRESSも使用)によってそのセルのデータを取得。
といった流れになるかと思います。
    • good
    • 0

マクロ(VBA)を使えば簡単に出来ます。

よろしいですか?
    • good
    • 0

1シートに縦にどのセルからならべたいのですか?


最初の1つ目はB22からS33
次の2目はB23からS44
のように並べればよいのですか。

100個並べるシートは、そのブック内に新規につくればよいのですか。
    • good
    • 0

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