• ベストアンサー

エクセルで50行ごとに区切ったデータをシートに分割したい

エクセルで2000行ほどある一枚のシートを50行ごとに (1-50)(51-100)(101-150)…と分割して、一つずつ 新しいブックで保存する作業があります。 今までは50行ごとにコピーして新しいブックにペーストを 繰り返してましたが、大量にきたもので困ってます。 何か自動化などできないことでしょうか? ご回答お待ちしております。 参考にシートは以下のような形式です。   A  B  C  D 1  a  1   1  1 2  b  1   2  3 3  c  2   3  4 4  d  5   6  7 5  e  7   8  9 6  f  2   3  4  7  h  5   6  7 8  g  8   9  1 9  n  2   3  4 10 n  5   6  7 ・ ・ ・ 50 j  5   6  7

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

  • ベストアンサー
  • KenKen_SP
  • ベストアンサー率62% (785/1258)
回答No.2

> エクセルで50行ごとに区切ったデータをシートに分割したい > …と分割して、一つずつ新しいブックで保存する作業があります。 「ブック」と「シート」のどちらか不明瞭ですが、アクティブシートを50行毎に 新しいブックにコピーするコードです。 アクティブブックと同じフォルダに保存されます。 Option Explicit Sub Sample()      Dim Wb     As Workbook   Dim rngData   As Range   Dim i      As Long   Dim strBasename As String   Dim strFilename As String   Dim lng1stRow  As Long   Dim lngLstRow  As Long      Const STEP_ROWS_COUNT = 50 '50 行      Set rngData = ActiveSheet.UsedRange   strBasename = ActiveWorkbook.FullName       With rngData     lng1stRow = .Row     lngLstRow = Application.Ceiling(.Cells(.Cells.Count).Row, STEP_ROWS_COUNT)   End With   Application.ScreenUpdating = False   For i = lng1stRow To lngLstRow Step STEP_ROWS_COUNT     ' 新規ブック作成     Set Wb = Workbooks.Add     ' STEP_ROWS_COUNT で指定された行ごとに新規ブックの Sheet1 にコピー     rngData.Rows(CStr(i) & ":" & CStr(i + STEP_ROWS_COUNT - 1)).Copy _       Destination:=Wb.Worksheets("Sheet1").Range("A1")     ' 新規ファイル名生成     strFilename = Left$(strBasename, InStrRev(strBasename, ".") - 1) & "(" _           & Format$(i, "0000") & "-" & Format$(i + STEP_ROWS_COUNT - 1, "0000") _           & ").xls"     ' 同一フォルダに保存して閉じる     Wb.SaveAs Filename:=strFilename     Wb.Close     Set Wb = Nothing   Next i   Set rngData = Nothing End Sub

ryouhoku
質問者

お礼

マクロがよく分からないので、悪戦苦闘のうえ、 無事に成功できました。凄いですね! ファイルが番号順の名前で出来てきたときは 驚きと嬉しさでいっぱいでした。 マクロを作っていただき大変助かりました。 ほんとうに有難うございました。

その他の回答 (1)

  • o_chi_chi
  • ベストアンサー率45% (131/287)
回答No.1

以下のようなマクロで可能です。 対象のシートは1枚であると仮定しています。 (あまりテストしてないのでバグがあるかもしれません) --- Sub test() Dim m As Long Dim r As Long Dim n As String n = ActiveWorkbook.Name 'コピー単位 m = 50 '最終行取得 r = Range("A65536").End(xlUp).Row '最終行がコピー単位より大きい間繰り返し Do While r > m 'コピー単位より大きい部分を切り取り Rows(CStr(m + 1) & ":" & CStr(r)).Cut '新しいシートを作成 Sheets.Add After:=Worksheets(Worksheets.Count) '新しいシートに貼り付け Rows("1:1").Insert Shift:=xlDown '最終行を取得 r = Range("A65536").End(xlUp).Row Loop 'シートが1つになるまで繰り返し Do While Worksheets.Count > 1 '最後のシートを新しいブックに移動 Sheets(Worksheets.Count).Move '最初のブックに戻る Windows(n).Activate Loop End Sub

ryouhoku
質問者

お礼

マクロはよく分からないんですが、ちょっとうまく 動いてくれませんでした。途中で止まりました。 どこが悪いかもよく分かりませんが、 お手数かけて 作っていただき有難うございました。

関連するQ&A

  • Excel 微妙に違う2つのシートのデータをリンクさせる

    ある程度 同じデータのブック1とブック2があり、 ブック1は祭日などデータが無い日も日付があり、行が確保されていますが、 ブック2は祭日などデータが無い日は行が抜いてあります。 A列:日付、B列:曜日 C列:データ1、D列:リンクを入れる 04.11.22 月 56  =[ブック2.xls]シート1!H2 04.11.23 火  04.11.24 水 50  =[ブック2.xls]シート1!H3 04.11.25 木 52  =[ブック2.xls]シート1!H4 04.11.26 金 49  =[ブック2.xls]シート1!H5 04.11.29 月      04.11.30 火 A~C列はブック1、2とも同じデータです。(現在ブック1は1400行、ブック2は1300行くらい) D列にブック2のH列のデータを表記したいのですが、ドラッグなどでは行がずれてしまいます。 関数かマクロなど、何か良い方法を教えて下さい。 下記のことにも対応できれば更に便利なのですが・・。 ブック2のH列は時々J列とか他の列(表範囲内)に移動します。 そしてたまにはブック2のシート1もブック1に移動したりブック2に戻したりもします。

  • エクセル 複数シートのデータをまとめたい

    他の質問を参照したのですが、できないのでお願いします。 新しいシート(ブックでもいいです)に次のデータを ひとまとめにしたい。 外国語テストのデータです。 (1)ひとつのブックにシートが十枚ある (2)列a2~h2 行2~29までデータがある。 (3)列a番号(a2が1、a29が28)  列b空欄  列c日本語  列d外国語 この構造を倍にしているのでa~hにデータが並んでいる。 これを、 つまり、8×28のデータが各シートにあるわけですが 【ひとつ】 できればシート1のデータの下 29行目からシート2のデータ、58行目からシート3… というように並べたい。 【ふたつ】 更にできるならa~dの下にe~hを持ってきて 4×56の並びにして 57行目からシート2のデータ…というように並べたい。 データの並びは列a列eの番号順を保持できたらうれしいです。 どうぞよろしくお願い致します。

  • エクセルのシート間引用数式の行単位複写について

    エクセルの行単位複写について質問です 同じブック内の別のシートからデータを引用しています。 単に引用するだけで演算は加えませんが、引数が空白の場合に表示が何も出ないように=IF関数を入れています。 そして難点は、引数のあるシートは1行単位、使用するシートは2行単位の表になっていることです。 引数のシートのデータ構成 A10 A11 A12 B11 B12 C11 C12 D11 D12 A20 A21 A22 B21 B22 C21 C22 D21 D22 ・ ・ ・ A500 A5001 A5002 B5001 B5002 C5001 C5002 D5001 D5002 使用するシートの様式 1行目 A10 A11 B11 C11 D11 2行目 結合 A12 B12 C12 D12 3行目 A20 A21 B21 C21 D21 4行目 結合 A22 B22 C22 D22 A10 A20 は上下セルを結合しています。 このような場合、左クリック+ドラッグで行単位のコピーを行うと、拾ってくるデータが飛び飛びになってしまします。 行数が多く、数式の引用セル位置の数値をいちいち手入力や置換処理で修正していると非常に手間がかかるので、一気に数式を入力する方法はないでしょうか。 よろしくご指導お願いします。

  • EXCELのシート間コピーについて教えてください!

    いつもお世話になります。 また、皆様のお知恵をお貸しください。 ブックにSHEET(1)とSHEET(2)があります。 SHEET(1)のD列の1行目から300行程度まで文字列が入力されております。 下記の作業をSHEET(1)のD列の文字列が終了するまでマクロ等を使って自動化したいです。 1    SHEET(2)のD列の1行目から12行目までの文字列をSHEET(2)のB1,B4,B7,B10,E1,E4,E7,E10,H1,H4,H7,H10の順にコピー 2   印刷 3   SHEET(2)のD列の13行目から24行目までの文字列をSHEET(2)のB1,B4,B7,B10,E1,E4,E7,E10,H1,H4,H7,H10の順にコピー 4   印刷 よろしくお願いします。

  • ひとつのエクセルデータを各シートに分けたい

    エクセルのひとつのシートにまとめてあるデータを 部門ごとにシートへ分けたいのですが、 今現在コピー&ペーストでシートに貼りつけている状態です。 効率よく、シートごとに分ける方法はありませんでしょうか。 例)売上というシートに 1  A  B  C  D・・・ 2  なす 1 3  なす  2 4 かき  5 シート1(なす)に 1  A  B  C  D・・・ 2  なす 1 3  なす  2 なすだけの情報をひっぱる。 シート2(かき)に 1  A  B  C  D・・・ 2  かき 5 かきだけの情報をひっぱる。 以上のように、シートごとで分別したいのですが、 エクセル初心者の為、どのような関数や操作を行えば良いかが わからず困っています。 どなたかお解かりの方、お教え頂けませんでしょうか。 よろしくお願い致します。

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

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

  • エクセル ブック内のシート間での行の参照?

    エクセルの同じブック内のシート間で、セルを参照するのではなく、行参照?させたいのですが・・・。 例えば、、  シート1    A    B    C    D     1行目 りんご みかん いちご ぶどう     2行目 赤    オレンジ  赤   紫 と入力すると同じようにシート2にも入力されるようにしたいのと、1行目と2行目の間に行を挿入しても同じようにシート2にも挿入されたり、 さらにはA列・B列のみ入力されたりするようにしたいのですが、(C列D列には別々のデータを入力したい)どのような方法がありますでしょうか?説明がわかりにくく申し訳ないのですが、宜しくお願いします。

  • エクセルのセル抽出でチェックシート

    複数ブックの同じシートの特定セルの内容を抽出し、1つのチェックシート用のエクセルに貼り付けたいのですが、可能でしょうか。 複数ブックは1つのフォルダの中に入れます。特定セルは複数のシートにまたがっています。 Book1 Sheet1:A5, B10, D20/Sheet3:C1, H4/Sheet5:F7 Book2 Sheet1:A5, B10, D20/Sheet3:C1, H4/Sheet5:F7 Book3 Sheet1:A5, B10, D20/Sheet3:C1, H4/Sheet5:F7  ・  ・

  • エクセル 複数シートのデータを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  複数行をまとめる 一括変換

    データ整理で困っております。 皆様のお知恵を拝借したくお願いいたします。 EXCELシートで次のようなデータがあります。   A B C D E F G H I J K 1 1 あ い 2  う え 3  お か 4  き く 5  け こ 列はA,B,Cのみにデータがあります。 行は1~5にあります。 A1は連番で数字があります。 この5行のデータが400近くあります。(約2,000行) このシートが10ほど存在します。 これらのシートを次のように1行に変換したいのです。   A B C D E F G H I J K 1 1 あ い う え お か き く け こ 2  3  4  5  行2~5はブランクのままでもかまいません。 何卒よろしくお願いいたします。

専門家に質問してみよう