人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

CSVファイルの分割についてよい方法がありましたらご提案をお願いします。

今、Excelで該当のCSVファイルを開いたとするとCW列に相当する箇所に、
整数の1から81までいずれかが入っています。
※空白のセルはありません
※52が59が存在しないなど、欠番はあり得ます

このようなCSVファイルを、このCW列の数値によってファイルを分割したい
と考えています。例えば
CW列が1であるCSVファイル(ファイル名:1.csv)
CW列が2であるCSVファイル(ファイル名:2.csv)
・・・
CW列が81であるCSVファイル(ファイル名:81.csv)
のような感じです。1つのCSVファイルが最大で81分割されるようなイメージです。

できるだけ簡易に分割できる方法をご教授頂ければ幸いです。
どうぞよろしくお願い致します。

※CSVファイルのレコード数は任意であり、だいたい1?50万です
※CSVファイルのカラムはA列からCW列まですきまなくデータが存在します
※ExcelのVBAを用いた方法でも構いません(Excel2007でもOK)

●質問者: yoshifuku
●カテゴリ:コンピュータ
✍キーワード:CSV CW Excel VBA つの
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● nattow
●40ポイント

VBA で分割。

Excel2003 で確認しています。

Sub exec()
 Dim i,j,k As Integer
 Dim s As String
 
 For i = 1 To 81
 j = 1
 Open CStr(i) & ".csv" For Output As #1
 Do While Cells(j, 1) <> ""
 If Cells(j, 101) = i Then
 s = ""
 For k = 1 To 100
 s = s & Cells(j, k) & ","
 Next k
 Print #1, s & Cells(j, 101)
 End If
 j = j + 1
 Loop
 Close #1
 Next i
End Sub
◎質問者からの返答

ありがとうございます!上手くいきました!活用させて頂きます!


2 ● TransFreeBSD
●40ポイント

wshで書いたので貼っておきます。

使い方は、メモ帳か何かで下記をコピペして、最初の行のファイル名(今はall.csvになってる)を対象のcsvファイルの名前に変えて、csvファイルと同じフォルダに、(好きな名前).vbsという名前で保存。あとは保存したファイルをダブルクリックするだけです。

やってる事はnattowさんとだいたい一緒で、違うのは行末が",1"、",2"で終わってるかどうかで判定してるところです。

Const inputFileName = "all.csv"
Const endOfNumber = 81

Dim fso, sh, ifile, i
Set fso = CreateObject("Scripting.FileSystemObject")
Set sh = CreateObject("WScript.Shell")
Set ifile = fso.GetFile(sh.CurrentDirectory & "\" & inputFileName)

For i = 1 To endOfNumber
 Dim re, itsm, ots
 Set its = ifile.OpenAsTextStream(1) ' ForReading
 Set ots = fso.CreateTextFile(i & ".csv", True)
 Set re = New RegExp
 re.Pattern = "," & i & "$"
 While Not its.AtEndOfStream
 Dim l
 l = its.ReadLine()
 If re.Test(l) Then
 ots.WriteLine(l)
 End If
 Wend
 ots.Close
 its.Close
Next
◎質問者からの返答

ありがとうございます!上手くいきました!活用させて頂きます!


3 ● elephant1974
●20ポイント

EXCELじゃないですが、awk だったらこんなカンジです。

awk自体はhttp://www.vector.co.jp/soft/dos/util/se000208.htmlあたりからダウンロードできます。

 awk -F"," '{print > ( $101 ".csv" )}' INPUT_FILE.csv
◎質問者からの返答

ありがとうございます!上手くいきました!活用させて頂きます!

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ