Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 更改csv文件的格式_Excel_Csv_Excel Formula - Fatal编程技术网

Excel 更改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

我有一个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
注意:有些名称有多个条目

提前谢谢

此例程使用脚本.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列。这并不表示您作为示例显示的数据,但这是对问题的合理猜测。