如何将单个工作表中的多行(在 excel 中)转换为多个 CSV 文件
Posted
技术标签:
【中文标题】如何将单个工作表中的多行(在 excel 中)转换为多个 CSV 文件【英文标题】:How to convert multiple rows (in excel) in single sheet into multiple CSV file 【发布时间】:2014-04-14 13:21:57 【问题描述】:我想将多行(根据组)转换为多个 csv。 我在 excel 中的单张表包含近 3000 行和 5 列。现在我希望我的 excel 表中的每个组都转换为 csv 文件。
例如
1 ali Khan ali.khan@hotmail.com a1
2juliet ibm juliet.ibm@hotmail.com a1
3laura ann lura.ann@hotmail.com b1
4abcd ewqa abcd.ewqa@hotmail.com b1
5annia franics annia.franics@hotmail.com c1
现在我想根据组 (a1,b1,c1...) 将这些行提取到单独的 CSV 中。 每个组创建新的 csv。
只需要解决这个问题。如果您建议任何免费工具或任何代码都没关系。
【问题讨论】:
如果您需要我相信的一步解决方案,您将不得不编写一些 VBA 代码,但我只是按组名排序,然后将其保存为单个 CSV 文件,最后手动创建(复制/粘贴)其他 csv。我知道这不是一个优雅的 IT 解决方案,但它可以完成工作! 您需要持续解决方案还是一次性解决方案。另外,你试过什么? 我认为@elrado 有一个良好的开端,但我建议您(1)将带有FirstName LastName Email Group
的标题行添加到第 1 行,然后(2)使用Excel 的内置 Autofilter
功能可隐藏组的所有非成员,最后 (3) 将每个过滤后的组保存为 CSV
【参考方案1】:
使用此代码,您可以复制并粘贴到另一个工作表中并创建 CSV 文件。
Dim RowSt As Integer
Dim RowLs As Integer
Dim StriI As String
Dim StriL As String
RowSt = 4
RowLs = 4
StriI = Range("F" & RowLs).Value
StriL = Range("F" & RowLs).Value
While Range("F" & RowLs).Value <> ""
StriL = Range("F" & RowLs).Value
If StriL <> StriI Then
Range("B" & RowSt & ":F" & RowLs - 1).Copy
Sheets("Sheet2").Select
Range("A1").Select
ActiveSheet.Paste
Selection.Clear
Sheets("Sheet1").Select
ActiveWorkbook.SaveAs Filename:="E:\0\A\" & StriI & ".csv", FileFormat:=xlCSVMSDOS, CreateBackup:=False
StriI = StriL
RowSt = RowLs
End If
RowLs = RowLs + 1
Wend
Range("B" & RowSt & ":F" & RowLs - 1).Copy
Sheets("Sheet2").Select
Range("A1").Select
ActiveSheet.Paste
Selection.Clear
Sheets("Sheet1").Select
ActiveWorkbook.SaveAs Filename:="E:\0\A\" & StriI & ".csv", FileFormat:=xlCSVMSDOS, CreateBackup:=False
Range("A1").Select
【讨论】:
感谢您的帮助。到目前为止,我是手动完成的,但问题是,随着时间的推移数据在增加,这不是理想的解决方案。所以我必须想办法处理它。我将尝试使用你们发送的代码。以上是关于如何将单个工作表中的多行(在 excel 中)转换为多个 CSV 文件的主要内容,如果未能解决你的问题,请参考以下文章
将许多 Excel 工作簿和工作表中的数据导入单个工作簿/表格