|
頂いた回答を参考に自分なりに作ってみました(未完成)。
Private Sub cmd1_Click()
Dim strIN As String '入力ファイルパス変数
Dim strOUT As String '出力ファイルパス変数
Dim D As String '読み込んだファイルの1行のデータ
Dim Outdata As String 'ファイルに書き込み用データ
Dim Nin As String 'ファイル番号(インプット用)
Dim Nout As String 'ファイル番号(アウトプット用)
Dim Data() As String 'カンマ区切りのデータ
Dim Datapre() As String 'Dataのひとつ前のデータ
'ファイルの入出力のパスを指定
strIN = Application.GetOpenFilename("(*.*),*.*", , "入力ファイル指定")
strOUT = Application.GetSaveAsFilename("", "(*.*),*.*", , "出力ファイル指定")
'未使用のファイル番号を取得
Nin = FreeFile
Open strIN For Input As #Nin
Nout = FreeFile
Open strOUT For Output As #Nout
'行の最後まで繰り返す
While Not EOF(Nin)
'ファイルを1行ずつ読み込む
Line Input #Nin, D
'「,」区切りでデータを区切る
Data() = Split(D, ",")
'配列の設定(初期化)
ReDim Datapre(UBound(Data))
'番号が2桁の場合頭に0を加えて3桁にする。
If Len(Data(0)) = 2 Then
Data(0) = "0" & Data(0)
End If
???????
'番号が同じならアウトデータの最後にカンマを入れ結合
If Data(0) = Datapre(0) Then
Outdata = Outdata & "," & D
End If
'アウトファイルに書き込む
If Data(0) <> Datapre(0) Then
Print #Nout, Outdata
'アウトファイルに書き込んだデータを空にする。
Outdata = ""
End If
'番号の書き換え
Datapre(0) = Data(0)
Wend
Close #Nin
Close #Nout
End Sub
あとちょっとの感じがするんですが、これ以降に苦戦しています。
アドバイスください。
(例)
001,A,ba
001,B,aa
002,fd,gg
003,ee,re
003,t,y
004,t,t
↓
001,A,ba,B,aa
002,fd,gg
003,ee,re,t,y
004,t,t
|
|