• ベストアンサー

エクセルにてデータを数ごとに区切る

30000件のデータが1つのファイルの 中にあります。 これを100件ずつに小分けに して、それぞれファイル名を つけてファイルを分けることは できるでしょうか? 一個一個手作業でするのではなく 自動で動くようにするにはです。 一個一個やっていると ミスもありそうなので。 よろしくお願いします。

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

  • ベストアンサー
noname#27115
noname#27115
回答No.4

Sub Test() 'ファイル名は0001.xls, 0101.xls, 0201.xls ・・・・ です。 '列数は10 '行数は1000 'ここは適当にかえてください。 '一度に30000行までやると時間がかかるので、hの値は区切って行った方がいいかもしれません。 '一応、動作は見ていますが、EXCELは慣れていないので文法間違いはあるかもしれません。 'オリジナルファイルはバックアップしておいてください。 Dim h, i, j, k As Long Dim myExcel As Object Dim myBook As Object Dim Row, Col As Long Dim wkFolder As String wkFolder = "C:\XLS\" 'XLSの作成されるフォルダ For h = 1 To 1000 Step 100 '行数 Set myExcel = CreateObject("Excel.Application") myExcel.Visible = True Set myBook = myExcel.Workbooks.Add ScreenUpdating = False For i = h To (h + 99) k = k + 1 For j = 1 To 10 '列数 myExcel.Cells(k, j).Value = Sheet1.Cells(i, j).Value Next j Next i ChDir wkFolder myBook.SaveAs Filename:=wkFolder & Format(h, "0000") & ".xls" myExcel.Quit k = 0 Next h End Sub

syousyou
質問者

補足

大変ありがとうございました。 解決することが できました。 またよろしくお願いします。

その他の回答 (4)

noname#27115
noname#27115
回答No.5

>myBook.SaveAs Filename:=wkFolder & Format(h, "0000") & ".xls" myBook.SaveAs Filename:=wkFolder & Format(h, "00000") & ".xls" 一桁、たりませんでした。 なお、保存する時に、同じファイル名のものが先に存在すると、確認のためにダイアログでるかもしれません。

回答No.3

#2です。 下のマクロは自身のPCで正常に動作するのは確認していますが、貴殿のファイルできちんと正常に動作するかどうかはわからないので、動作させる前にファイルのバックアップなどを取ってから試してください。 データの消失に関しては責任を負えませんのであしからず。。

回答No.2

こんばんわ。 あんまり自信がないのですが・・・。 以下のマクロを実行してみて下さい。 Sheets("Sheet2").Select Rows("1:100").Select Selection.Cut Workbooks.Add Rows("1:100").Select ActiveSheet.Paste Range("A1").Select ActiveWindow.ActivateNext Selection.Delete Shift:=xlUp Range("A1").Select ActiveWindow.ActivateNext ActiveWorkbook.SaveAs FileName:=Workbooks("book1").Sheets("sheet1").Range("a1").Value ActiveWindow.Close 補足しますと・・・。 まずデータが入ってるファイルのデータが入ってるシートをSheet2とし マクロを実行するシートをSheet1としています。 そのマクロを実行するシートのA1に入れた名前がファイル名となり保存される仕組みです。 もし、そこまで必要ないのであれば、 Rows("1:100").Select Selection.Cut Workbooks.Add Rows("1:100").Select ActiveSheet.Paste Range("A1").Select ActiveWindow.ActivateNext Selection.Delete Shift:=xlUp Range("A1").Select このマクロをデータのあるシート上で実行すれば100個のデータが移動したものがbook1として出来ているはずですので名前をつけて任意の場所に保存してください。

syousyou
質問者

お礼

大変ありがとうございました。 解決することが できました。 またよろしくお願いします。

回答No.1

VBAなどで、可能だと思うのですが、 ちなみにどんなデータでしょうか? 住所録ですか? なら一例を示すと回答がつきやすいと 思います。 例えば・・・・  A列  B列  C列  住所 氏名  電話番号 のようにデータがありますなど。

syousyou
質問者

補足

アドバイスありがとうございます。 一例を示させていただきます。 A列・・・すべて100と入れます B列・・・すべて0と入力 C列・・・A-B-11222 (ここにはそのそれぞれの商品番号を入れます) D列・・・ここは空白です。 E列・・・空白 F列・・・111と入力 G列・・・222と入力 H/I/J列・・・空白 K列・・・商品名 L列・・・詳細 M列・・・その他の情報 N列・・・その他の情報 O/P/・・・空白 Q列・・・値段 R列・・・その他の情報 S列・・・1と入力 といった表になっております。 それを特に並び替えたりするのではなく とりあえず100件づつに 分けたいのです。 足りない点がありましたら ご指摘ください。

関連するQ&A