如何将Excel文件转换为单列格式的CSV文件?
解决Excel转CSV时多列合并为单列的问题
直接将Excel另存为CSV只会保留原有列结构,无法自动合并多列。以下是几种高效的解决方法:
方法一:公式合并后导出
- 在Excel空白列(例如D列)输入合并公式,按需选择分隔符拼接多列内容:
=A1&","&B1&","&C1 // 用逗号分隔,可替换为分号、空格等 - 下拉填充公式到所有数据行,确保每一行多列内容合并为单个单元格
- 选中合并后的列,右键选择「粘贴为值」,清除公式仅保留文本
- 复制该列内容,粘贴到记事本中,保存为后缀为
.csv的文件
方法二:Power Query批量合并
- 选中需要合并的所有列,点击顶部菜单栏「数据」→「从表格/区域」(若提示创建表,勾选「我的表格有标题」)
- 在Power Query编辑器中,选中所有目标列,点击「转换」→「合并列」
- 在弹出窗口选择分隔符,设置合并后的列名,点击确定
- 点击「关闭并上载」,将合并后的表格导出为CSV格式(「文件」→「另存为」→ 选择CSV格式)
方法三:VBA脚本一键生成CSV
- 按下
Alt+F11打开VBA编辑器,右键当前工作簿→「插入」→「模块」 - 粘贴以下代码(可根据实际列数调整
For j = 1 To 3中的数字):Sub MergeColumnsToCSV() Dim ws As Worksheet, newWs As Worksheet Dim lastRow As Long, outputRow As Integer Dim i As Integer, j As Integer Set ws = ActiveSheet lastRow = ws.Cells(Rows.Count, 1).End(xlUp).Row Set newWs = Sheets.Add(After:=ws) newWs.Name = "MergedResult" outputRow = 1 For i = 1 To lastRow Dim mergedContent As String mergedContent = "" ' 合并第1至第3列,可修改列数范围 For j = 1 To 3 If j > 1 Then mergedContent = mergedContent & "," mergedContent = mergedContent & ws.Cells(i, j).Value Next j newWs.Cells(outputRow, 1).Value = mergedContent outputRow = outputRow + 1 Next i ' 自动保存为CSV newWs.SaveAs Filename:=ThisWorkbook.Path & "\合并结果.csv", FileFormat:=xlCSV End Sub - 点击运行按钮(绿色三角),脚本会自动生成合并后的CSV文件存放在当前工作簿目录下
注意事项
- 如果合并内容本身包含逗号,建议使用分号
;作为分隔符,或者给内容添加双引号(例如=CHAR(34)&A1&CHAR(34)&","&CHAR(34)&B1&CHAR(34)),避免CSV解析时出现列错乱 - 若导出后出现编码问题,可在记事本打开CSV文件,选择「另存为」时设置编码为UTF-8
内容的提问来源于stack exchange,提问作者user9889520
相关产品推荐
相关产品推荐

