更改csv文件的格式

我有一个以下格式的csv文件:

name1 Date,Type 11/06/2015 18:13:42,Red name2 Date,Type 08/06/2015 18:53:38,Blue name3 Date,Type 10/06/2015 17:13:33,Yellow 10/06/2015 17:55:11,Green name4 Date,Type 15/06/2015 11:19:01,Blue 10/06/2015 13:45:05,Orange name5 Date,Type 10/06/2015 15:05:14,Purple 

我需要改变格式到下面? 有人可以推荐一种方法来做到这一点吗?

 name1,11/06/2015 18:13:42,Red name2,08/06/2015 18:53:38,Blue name3,10/06/2015 17:13:33,Yellow name3,10/06/2015 17:55:11,Green name4,15/06/2015 11:19:01,Blue name4,10/06/2015 13:45:05,Orange name5,10/06/2015 15:05:14,Purple 

注意一些名字有超过1个条目。

提前致谢!

此例程使用Scripting.Dictionary 。 您将需要进入VBE的工具►参考,并将Microsoft脚本运行时添加到您的项目,然后才能使用它。

如果你可以打开CSV作为活动工作簿,那么这个简短的例程应该重新组织你的数据。

 Sub collate_CSV() Dim rw As Long, lr As Long, v As Long Dim dRECs As New Scripting.Dictionary Dim vKEY As Variant, vITM As Variant, vVALs As Variant dRECs.CompareMode = TextCompare ReDim vVALs(1 To 1) With Sheet1 '<-CSVs almost always have their single worksheet codename as Sheet1 lr = .Cells(Rows.Count, 1).End(xlUp).Row For rw = lr To 2 Step -1 Select Case LCase(.Cells(rw, 1).Value2) Case vbNullString 'do nothing Case "date,type" ReDim Preserve vVALs(1 To UBound(vVALs) - 1) dRECs.Add Key:=.Cells(rw - 1, 1).Value2, Item:=Join(vVALs, ChrW(8203)) ReDim vVALs(1 To 1) .Cells(rw - 1, 1).Resize(Rows.Count - rw + 1, 1).EntireRow.Delete Case Else vVALs(UBound(vVALs)) = .Cells(rw, 1).Value2 ReDim Preserve vVALs(1 To UBound(vVALs) + 1) End Select Next rw For Each vKEY In dRECs vITM = Split(dRECs.Item(vKEY), ChrW(8203)) For v = LBound(vITM) To UBound(vITM) .Cells(Rows.Count, 1).End(xlUp).Offset(1, 0) = _ vKEY & Chr(44) & vITM(v) Next v Next vKEY .Rows(1).EntireRow.Delete End With End Sub 

您的结果应该类似于以下内容:

将CSV与脚本词典进行整理

结果与原来相反。 这是从数据底部向顶部进展的一个因素,随着工作的进展删除已用logging。