• ベストアンサー

エクセル:シートの分割

お世話になります。 エクセルで、あるシートに任意の行数のファイルがあります。 1~6行目はタイトル行扱いで、7行目からがデータ部分になります。 この7行目からはじまるデータ部分を25行分ずつシート単位で分割したいのです。 1つ目のシートが分割前の本データとすると、2つ目のシートには1~6行目と7~31行目、2つ目のシートは1~6行目と32~56行目… というように。 必ず各シートの先頭は1~6行目部分になります。 1つ目のシートが分割前のシートで、2つ目以降に25行分ごとに分割されたシートがどんどん追加されていくイメージです。A列には必ずデータが入っているので、A列にデータが入っている最終行までが処理の対象になります。 追加するシート名は、分割1、分割2…というようにしたいです。 このような処理を自動化するマクロができれば教えてください。

  • HGK
  • お礼率69% (138/199)

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

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

標準モジュールに以下のマクロをコピーして貼り付けて実行してみてください。途中で出てくる"Sheet1"の部分は、オリジナルのシート名に修正してください。 Sub シート分割()  Dim WS1 As Worksheet  Dim WS2 As Worksheet  Dim i As Integer  Dim Bunkatsu As Integer  Set WS1 = Worksheets("Sheet1") 'コピー元のデータシート  Set WS2 = WS1  Bunkatsu = 1  Application.ScreenUpdating = False  For i = 7 To WS1.Cells(Rows.Count, 1).End(xlUp).Row Step 25   Set WS2 = Worksheets.Add(After:=WS2)   WS2.Name = "分割" & Bunkatsu   WS1.Rows("1:6").Copy WS2.Cells(1, 1)   WS1.Rows(i & ":" & i + 24).Copy WS2.Cells(7, 1)   Bunkatsu = Bunkatsu + 1  Next  Application.ScreenUpdating = True End Sub

HGK
質問者

お礼

完璧にできました。ありがとうございます。

関連するQ&A

  • excel マクロで複数シート検索し行をコピー

    excel2010 マクロで下記のようなことをしたいのですが どのようにしたら良いか教えていただけないでしょうか? (1)sheet1のA1を検索用の欄とする (2)sheet2・sheet3・sheet4にはそれぞれデータを入力しておく (A列~H列 まで使用し、行数は多くても500程度) (3)sheet1のA1に検索したい単語を入力することで、sheet2・sheet3・sheet4全てのA列を検索する (4)一致(部分一致)したら、その行をsheet1の10行目以降にコピーする なお複数ヒットすると思われるため、複数ヒットした場合には行を追加しながらコピーしたいです。 マクロでは無理なのでしょうか? どのように書いたらよいか、参考になるHPでも助かりますので、教えていただきたく よろしくお願いします。

  • エクセルのシート間の情報のやりとりについて教えて下さい。

    エクセルのシート間の情報のやりとりについて教えて下さい。 シート1で、以下のように配置し、 B列:年齢 C列:名前 D列:身長 E列:体重 これを30人分(30行)作成して、それぞれの値を記入しました。 シート2で、例えばA1に「20」と記入すると、B1にシート1の20行目のデータが「B1・C1・D1・E1」に記入されるようにしたいのです。 また、シート2のA2やA3も同様に「12」とか「10」とか、任意の値を入れると、シート1のその行数からデータを取得したいと考えています。 更にそのシート2で取得した情報を、シート3の任意のセルで文字列の中に埋め込みたいです。 もし、詳しい方がいましたら教えていただけないでしょうか。 お願いいたします。

  • エクセルでシートの件で・・・

    シートに分れているデータを再度一つのシートにコピーすることは可能ですか?現状として、各シートはほぼ同一で数量が違うものです。できればコピーする際にシート名をA列のコピーする行の先頭に付加したいとおもいます。マクロ含めて可能かどうかわかりますでしょうか?

  • エクセルVBAでデータベースを作成しています。

    エクセルVBAでデータベースを作成しています。 A列には日付データが日付が古い順に上から入っています。 B列以降は出荷数や次回納品日などの付属データが入っています。 A列(日付) B列(出荷数) 7/1     10 7/15      20 7/31     5 8/2     10 8/4     25 8/23    10 8/30    20 9/2     15 9/20    21 9/30     3 出荷データを更新する度に、最終行の次の行に新しいデータが追加されます。 上記データベースは3か月分のデータだけでも行数が3万近くになるため、エクセルの 限界行数に達する前に、何か手を打ちたいのです。 例えば、予め6万行を限界行数に決めておき、データ更新する際に、データベースの限界行数までの残り行数と、追加するデータの行数を比較して、後者が大きいときには、データ、つまりデータベースの行を消去する。というマクロを組みたいと考えています。上記の例で説明すると、10月分のデータを追加しようとして限界行数に達することが分かった場合、7月に該当する行を一括して消去する。という流れです。 限界行数に達したときに、MsgBoxで「1か月分のデータを削除してよろしいですか?」→OKのときに処理を実行するという流れで行いたいのですが、何かよいアイデアがあれば教えてください。

  • エクセル:複数シートの一括処理

    お世話になります。 エクセルで1つのブックに複数のシートがあります。 書式は同じですが行数がそれぞれ違います。 A列で、データが入力されている一番下のセルの次の行から、エクセルの最終行である65536行までの行を全て選択して「削除」をしたいのです。(行の削除)しかも全シート一括で。 A列でデータが入っている一番下のセルがA550だった場合、551行~65536行までを全て選択→削除を行う。 これらの作業をするためのマクロを教えてください。

  • マクロを使用し、EXCELのデータから必要な部分を取り出し2つのsheetに貼り付けたい

    条件 EXCELのデータ A列からL列まで 複数行(行数は、決まっていない) (例) 40行ほどあるデータを見て 1行目から10行目までをsheet1に 12行目から20行目までをsheet2に貼り付けたい場合。 11行目のA列(空白になっている)に手入力で「a」と入力 21行目のA列(空白になっている)に手入力で「b」と入力し、 1行目から「a」のある行までをコピーし、sheet1に貼り付ける 「a」のある行より1行下から「b」のある行までをコピーし、sheet1に貼り付ける 以上のことをマクロで実行する方法を教えて下さい。

  • シート内の一部のセルを別シートにコピー

    Excelのマクロ(VBA)の記載方法について お分かりになる箇所だけでも結構ですので、 どなたかご教授を願い致します。 シートX   A    B   C  1 data1 data2 data3 2 x   data7 data8 3 data4 data5 data6 4 data7 data8 data9 シート Y   A   B   C    D 1 length 3  (任意) (任意) 2 xxxx (任意) (任意) (任意) 3 zzz  (任意) (任意) (任意) 4 (空白)(任意) (任意) (任意) 上記のような2つのシート(同一Excelファイル内)があって、 シートXの一部のセルを次の条件(1~4)でシートYにコピーしたい場合 1.コピー元の列の数は、シートYの "length"と書かれたセルの右となりの数字   とする(上記では3なので、A,B,C列をコピー対象) 2.コピー元の行の数は、シートXの1~4行目までとするが、   シートXのA列のセルが"x"だったら、その行は全てコピーしない。 3.コピー先(Y)の列は、コピー元(X)の列と一つずれてコピー(BならCに、CならDに) 4.コピー先(Y)の行は、シートYのA列で1行からで始めて空白セルになった行からコピー開始。 (上記では、A列で空白セルのある4行目からコピー) 上記条件で、下記のシートYを作成したいのですが、 この場合どようなマクロ(VBA)で実現できますでしょうか。 コピー結果(シートY)  A     B   C   D 1 length  3  (任意) (任意) 2 xxxx  (任意) (任意) (任意) 3 zzz   (任意) (任意) (任意) 4 (空白) data1 data2 data3 5 (任意) data4 data5 data6 6 (任意) data7 data8 data9

  • 【エクセル】シートが分かれているデータを集める

    あるブックにシートが10シートあるとします。 これらのシートの同じ列を、別のシートにまとめたいです。 列には60行くらいのデータがあり、それぞれのシートの行数は同じです。 まとめるシートは、    A列        B列      C列        D列   シート1のA列、シート2のA列、シート3のA列、シート3のA列・・・ のようにしたいです。 関数などを試してみましたが、列設定ではなかなかうまくいかず、 すっきりと持ってくることができません。 知恵をお貸しいただけないでしょうか。 よろしくお願いいたします。

  • エクセル 複数シートのデータを1シートにまとめるマクロ

    エクセルの複数シートにデータがあります。同じ条件の人のデータだけをひとつのシートにまとめたいのですが、マクロを教えていただけますでしょうか。それとも、マクロ以外に良い方法がありますか? エクセル初心者なので、あたりまえのことも知らないかもしれません。。。  【データ】 ●シート1からシート20まで、同じ配列でデータがあります。 ●1行目は見出しです。2行目から1人づつのデータです。(多くても65行までと思っています。) ●A列に到達度、B列に出欠をいれました。 ●C列からM列が氏名、課題、その他のデータです。 ●リストはシート21にあります。  【こんな作業でしょうか?】 ●シート1から20で A列が「C」または「D」ならば その行のA列からM列をコピーして シート21のA列からM列に形式を値にして張り付ける ●シート1から20で B列が「欠」ならば その行のA列からM列をコピーしてシート21のA列からM列に形式を値にして張り付ける (っというのが私の乏しい知識で考えた方法なのですが、これでは不具合がでますか? もちろん、この方法じゃなくもっといいのがあれば、それをやってみたいです。)

  • Excelでシートを分割して印刷

    Excel2002です。 シートを印刷するのですが大きなシートなのでA3で印刷しても 文字が小さくてよく見えません。 それで、左右、半分をそれぞれA3に印刷してあとで、つなげようと 思います。半分ずつの指定は、印刷範囲で行います。 現在、ちょうどシートの中心となる列で重なるような分割方法 で印刷しているのですが、左右のシートの高さが違ってうまく つながりません。行数は同じなのに行高が違うのですね。 これをうまく合わすにはどうすればよいのでしょうか? よろしくお願いします。

専門家に質問してみよう