Excel 更改csv文件的格式
我有一个csv文件,格式如下:Excel 更改csv文件的格式,excel,csv,excel-formula,Excel,Csv,Excel Formula,我有一个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
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
注意:有些名称有多个条目
提前谢谢
此例程使用脚本.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
Sub-collate_CSV()
变暗rw为长,lr为长,v为长
Dim dRECs作为新的脚本。字典
Dim vKEY作为变型,vITM作为变型,vVALs作为变型
dRECs.CompareMode=文本比较
重拨vVALs(1对1)
附页1’
此例程使用脚本.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
Sub-collate_CSV()
变暗rw为长,lr为长,v为长
Dim dRECs作为新的脚本。字典
Dim vKEY作为变型,vITM作为变型,vVALs作为变型
dRECs.CompareMode=文本比较
重拨vVALs(1对1)
Sheet1’您好,感谢您的评论,这似乎不起作用,但也不会引发错误。我确保账单是正确的Sheet1@SB77-不幸的是,它在提供的样本数据上对我有效。我不清楚如何在看不到更完整的数据集的情况下继续。@SB77-我怀疑您正在双击打开.CSV,并且数据正在进入一个新的工作表,该工作表由逗号拆分为a列和B列。这并不表示您作为示例显示的数据,但这是对问题的合理猜测。您好,感谢您的帮助注释,这似乎不起作用,但也不会抛出错误。我确保账单是正确的Sheet1@SB77-不幸的是,它在提供的样本数据上对我有效。我不清楚如何在看不到更完整的数据集的情况下继续。@SB77-我怀疑您正在双击打开.CSV,并且数据正在进入一个新的工作表,该工作表由逗号拆分为a列和B列。这并不表示您作为示例显示的数据,但这是对问题的合理猜测。