Excel 如何转换一组列并将输出保存为CSV
我在列中有一组很长的信息,有时有数百行(这是通过VBA生成的)。我需要转置它,并将其保存为CSV(因为excel将用完列) 附上该表的屏幕截图 任何帮助都将提前得到感谢Excel 如何转换一组列并将输出保存为CSV,excel,vba,csv,Excel,Vba,Csv,我在列中有一组很长的信息,有时有数百行(这是通过VBA生成的)。我需要转置它,并将其保存为CSV(因为excel将用完列) 附上该表的屏幕截图 任何帮助都将提前得到感谢 这个问题有两种不同的答案。我相信这对很多其他人来说都是有价值的 您需要将一些代码导出到CSV,例如从这个答案 只需更改写入文件的顺序。例如,在写行之前先写列 Sub WriteFile() Dim ColNum As Integer Dim Line As String Dim LineValues() As V
这个问题有两种不同的答案。我相信这对很多其他人来说都是有价值的 您需要将一些代码导出到CSV,例如从这个答案 只需更改写入文件的顺序。例如,在写行之前先写列
Sub WriteFile()
Dim ColNum As Integer
Dim Line As String
Dim LineValues() As Variant
Dim OutputFileNum As Integer
Dim PathName As String
Dim RowNum As Integer
Dim SheetValues() As Variant
PathName = Application.ActiveWorkbook.Path
OutputFileNum = FreeFile
Open PathName & "\Test.csv" For Output Lock Write As #OutputFileNum
'Print #OutputFileNum, "Field1" & "," & "Field2"
SheetValues = Sheets("RawData").Range("A1:C249").Value
Dim RowMax
RowMax = UBound(SheetValues)
Dim ColMax
ColMax = 3
ReDim LineValues(1 To RowMax)
For ColNum = 1 To ColMax
For RowNum = 1 To RowMax
LineValues(RowNum) = SheetValues(RowNum, ColNum)
Next
Line = Join(LineValues, ",")
Print #OutputFileNum, Line
Next
Close OutputFileNum
End Sub
希望这是一个足够好的版本,可以让您继续使用。这里有一个较短的版本(我使用Nats代码作为基础)。它应该快得多,因为它不需要循环行
Sub WriteFile()
Dim LR As Long, ColNum As Long, PathName As String, OutputFileNum As String
PathName = Application.ActiveWorkbook.Path
OutputFileNum = FreeFile
Open PathName & "\Test.csv" For Output Lock Write As #OutputFileNum
For ColNum = 1 To Cells(1, Columns.Count).End(xlToLeft).column
LR = Cells(1, ColNum).Offset(Rows.Count - 1, 0).End(xlUp).Row
CSVString = Join(Application.Transpose(Cells(1, ColNum).Resize(LR, 1)), ",")
Print #OutputFileNum, CSVString
Next
Close OutputFileNum
End Sub
谢谢。谢谢,谢谢,谢谢