• ベストアンサー

エクセルの1シートの内容を複数のシートに分割したい。

ham_kamoの回答

  • ham_kamo
  • ベストアンサー率55% (659/1197)
回答No.3

マクロでやる方法です。 縦横の改ページの位置から自動的にコピー範囲を取得し、シートを追加してコピーします。したがって、各表の間に改ページがある必要があります。 まずAlt+F11を押すとVBAの画面が開くので、左側のツリーからブック名を選択し、右クリックから「挿入」>「標準モジュール」を選択して、右の画面に以下のマクロをコピーして貼り付けてください。 Sub 表をシートに分割()  Dim V_Page As Integer, H_Page As Integer  Dim V As Integer, H As Integer  Dim Top As Integer, Left As Integer  Dim Bottom As Integer, Right As Integer  Dim NewWS As Worksheet  Dim P_Area As Range  With Worksheets("Sheet1") '元の表があるシート名を指定   H_Page = .HPageBreaks.Count + 1 '行方向のページ数   V_Page = .VPageBreaks.Count + 1 '列方向のページ数   Set P_Area = .Range(.PageSetup.PrintArea) '印刷範囲を取得   For V = 1 To V_Page '列方向のループ    For H = 1 To H_Page '行方向のループ     'コピーする表の左上の行番号を取得     If H = 1 Then      Top = P_Area.Cells(1).Row     Else      Top = .HPageBreaks(H - 1).Location.Row     End If          'コピーする表の左上の列番号を取得     If V = 1 Then      Left = P_Area.Cells(1).Column     Else      Left = .VPageBreaks(V - 1).Location.Column     End If          'コピーする表の右下の行番号を取得     If H < H_Page Then      Bottom = .HPageBreaks(H).Location.Row - 1     Else      Bottom = P_Area.Cells(P_Area.Cells.Count).Row     End If          'コピーする表の右下の列番号を取得     If V < V_Page Then      Right = .VPageBreaks(V).Location.Column - 1     Else      Right = P_Area.Cells(P_Area.Cells.Count).Column     End If          'シートを一番後ろに追加     Set NewWS = Worksheets.Add(after:=Worksheets(Worksheets.Count))     NewWS.Name = "表" & (V - 1) * H_Page + H '表の名前をつける           '表を追加したシートにコピー     .Range(.Cells(Top, Left), .Cells(Bottom, Right)).Copy NewWS.Cells(1, 1)    Next   Next  End With End Sub その画面でF5キーを押すか、Alt+F11でExcelの画面に戻ってAlt+F8からマクロを実行してみてください。「表1」「表2」というシートに各表が分割されます。

nok_nok
質問者

お礼

回答ありがとうございました。 手順がわかりやすくて、大変参考になりました。 F5で実行すると途中で止まってしまうのですが、多分私の入力ミスかと・・・。 いろいろ試してみます。 ありがとうございました。

関連するQ&A

  • エクセル2007 各シートの内容を集約したい

    お世話になります。 職場で使用しているエクセルの表から、 各シートの内容をひとつにまとめて一度保存し、開こうとしたら壊れてしまい開けません。 添付した画像のように、シート「父」「母」「子」・・で家計簿的なものを入力している表です。 (シート名などはさし障りがあるため、変更しています。) 【やりたいこと】 シート「父」「母」「子」の「列1→列5」の箇所を1つのシートにまとめたい。 コピーペーストして一度1シートにまとめてみたのですが、 壊れて開けなくなってしまいました。 このシートの表は前任者から引き継いでおり(前任者は退職のため聞けず)、 表の設定のためか?と表上部のフィルタは外せたのですが、 下のフィルタは外せませんでした。 (プルダウンで「なし」「平均」等と表示されている箇所です) またこのデータはUSBで職場から家に持ち帰ってきて加工しています。 エクセルのバージョン(2007)は同じなのですが、それも問題があるのでしょうか。 補足の必要があればいたします。 よろしくお願いいたします。

  • エクセルのシート

    エクセルのシート エクセルで作った表をコピーして、同じファイル内で、 シートを新しくしてペーストしたいのですが、 セルの幅と高さの情報は反映されません。 そっくり同じものをコピー&ペーストするには、 どういう手順を踏めばよろしいのでしょうか? こちらの環境は、Mac10.5.8、EXCEL Mac2008です。 よろしくお願いいたします。

    • ベストアンサー
    • Mac
  • エクセルの複数シートpdf印刷が2分割される

    使用 EXCEL2007 ・ Adobe Acrobat 8 STANDARD エクセルで10シートを選択し、印刷プレビューを見ますとページ数は10ページとなっており、プリンタなどで印刷すると正常に10枚印刷されます。 問題はプリンタ選択でadobe PDFを指定し印刷をすると5ページでファイルの保存先を聞いてきます。それを終了させると残りの5ページ分も同じようになります。 結果5ページづつの2ファイルとなってしまします。どのようにすれば10ページ1ファイルでPDFが作成できるのでしょうか? よろしくお願いします。

  • 1シート内にまとめられているデータを分割してコピーし、それを別の複数の

    1シート内にまとめられているデータを分割してコピーし、それを別の複数のシートにペーストする方法があれば、教えて下さい。 例えば、学校の成績を、教科ごとに表示するシートから、生徒ごとに表示するシートへとデータをコピーする、なんていう場合を想定して下さい。 <教科のシート> シート1:国語のテストの点数表(生徒1~3の点数の一覧) シート2:数学のテストの点数表(生徒1~3の点数の一覧) シート3:英語のテストの点数表(生徒1~3の点数の一覧) <生徒のシート> シート101:生徒1の英数国の点数 シート102:生徒2の英数国の点数 シート103:生徒3の英数国の点数 という場合、 シート1から、生徒1の国語の点数をコピーし、シート101へペースト。 シート1から、生徒2の国語の点数をコピーし、シート102へペースト。 シート1から、生徒3の国語の点数をコピーし、シート103へペースト。 シート2から、生徒1の数学のテンスをコピーし、シート101へペースト。 シート2から、生徒2の数学の点数をコピーし、シート102へペースト。 シート2から、生徒3の数学の点数をコピーし、シート103へペースト。 シート3から、生徒1の英語の点数をコピーし、シート101へペースト。 シート3から、生徒2の英語の点数をコピーし、シート102へペースト。 シート3から、生徒3の英語の点数をコピーし、シート103へペースト。 という具合に、コピー・ペーストを『自動化』して、行いたいのですが、 このようなことは可能でしょうか? (実際のデータは、教科数も生徒数も、もっと沢山あります。) 方法としては、マクロ(VBA)を利用したものでも結構です。 どなたかお詳しい方、お力をお貸し下さい。 必ずお返事致します。(ポイント付与も確実に行います。)

  • エクセルで複数シートを参照

    お世話になります。 タイトルが曖昧で申し訳ありません。 エクセル初心者なのですが、操作でひとつ解決しない点があるのでご教示いただければ幸いです。 現在、勤務表のエクセルデータがあります。 「勤務表.xls」ファイルは、月ごとにシートを増やして同じ雛形で勤務表を作成しています。 そのため、シート数が非常に膨大なものになっています。 あまりの膨大さに、過去の勤務表を参照するときに不便が生じています。 そこで考えたのが、Sheet1にリストのようなものを作成し、リスト内の項目を選択するとSheet1のリストの直下に選択した項目のデータが表示されるというものです。 項目は各シートと連動しており、要は参照したい月を選択するだけで、Sheet1にデータが表示されるという仕組みです。 と、データを参照するための方法は考えたのですが、何分初心者なので、やり方がわかりません。 色々と書籍を参照したりしたのですが、見つからずにこの場をお借りしました。 質問も的を得てなくて分かりづらいと思いますが、このような方法は可能なのか、ご教示ください。 よろしくお願いします。

  • エクセルVBA複数ファイルのデータを1つのシートに

    (1)サーバー上にある圧縮ファイルをダウンロード (URLはエクセルの一覧表をクリック)※図A (2)ダウンロードした圧縮ファイル(ZIP形式)を解凍する (3)エクセルファイルを開いて範囲を指定してコピー (コピーする範囲はB2:C101の100行2列のデータ)※図B (4)コピーしたデータを別ファイルのエクセルシートにペースト (シートは1枚、下に下に続けてペースト) 表にあるURL一覧の最後まで(1)~(4)を繰り返す (パソコン環境) Windows10 Google Chrome Excel2010

  • Excelのシートを1枚にまとめる方法について

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

  • エクセルで複数のシートにあるものをひとつに

    お世話になっております。 似たような質問を検索してみましたが、いまいち要領がつかめませんので教えて下さい。 ブックに複数のシートがあり、それをを同じブックまたは、別のブックでもいいので一つのシートにまとめたいのですが何かいい方法はありますでしょうか? ブックにより、シート枚数が違います(多いものは30シート以上)。 同じブックでの各シートの列のタイトルは同じで、行はデータ量により違います。(多いものは1000行以上) イメージとしては、シートを全コピーして、新しいシートにペースト。 次のシートを全コピーしてそれを、今ペーストした下の行にペースト。 現在はこのコピー&ペーストで地道に作業しております。 かなり時間を取られております。 XPでオフィスは2007を使用しております。

  • エクセル上の縦長の表を特定の範囲で複数のシートに分ける方法を教えて下さ

    エクセル上の縦長の表を特定の範囲で複数のシートに分ける方法を教えて下さい。 当方、下請けの仕事でエクセルの資料をお借りしたのですが 同じ表(A4サイズの印刷設定有り)が縦に並んでおり 1シートに10ページから25ページの表があります。 ファイルも7ブックあり、1ブックに2シートのものや、4シート、5シートのブックもあります。 普段は下請けも少なく自社のデータで仕事しているのですが 仕事上、データを更新するのに1日に3、4ページ分の表しか更新しませんし 更新作業の入力も外注に発注しているので、データの確認や 必要な表のページ数を指定して印刷など、非常に手間が掛かってしまいます。 ひとつひとつ切り取り、貼り付けをしていましたがこれも手間が掛かってしまいました。 マクロの知識がないのですが、マクロで解決できないでしょうか。 使用しているのはExcel2003です。 借りた資料の表は1ページが 「9列・31行」のA4縦サイズが縦に繋がって並んでいます。 宜しくお願い致します。

  • エクセル、複数枚のシートを一枚にまとめるには

    エクセルで、一つのファイルに10枚以上ののシートがあったとします。 これを、一枚のシートにまとめたいのですが・・。 マクロは、まったくわかりません。 コピーで持ってくる方法はあるのですが もっと簡単に出来る方法はありますか。 あれば、教えてください、よろしくお願いします。