Mac版Microsoft Excel 365如何用Power Query导入多CSV文件夹?
Mac版Excel 365批量合并多个CSV文件到单个工作表
针对Mac版Excel没有Get Data>From File>From Folder选项的问题,提供两种实用的批量合并方案,适配Cyclistic案例研究的数据预处理需求:
方案一:Power Query批量读取(推荐,无需代码基础)
- 打开Excel,点击数据选项卡 → 从文本/CSV,选择文件夹内任意一个CSV文件,导入到Power Query编辑器。
- 在Power Query编辑器中,点击菜单栏的高级编辑器(位于「视图」或「主页」选项卡下)。
- 将默认的M代码替换为以下代码,注意修改文件夹路径为你桌面的CSV文件夹实际路径:
let Source = Folder.Files("/Users/你的用户名/Desktop/Cyclistic数据文件夹"), FilteredFiles = Table.SelectRows(Source, each [Extension] = ".csv"), AddedCustom = Table.AddColumn(FilteredFiles, "CSV数据", each Table.FromCsv([Content])), CombinedTables = Table.Combine(AddedCustom[CSV数据]) in CombinedTables
- 获取Mac文件夹路径的方法:右键目标文件夹,按住
Option键,选择「复制为路径名称」,粘贴到代码对应位置。
- 点击完成,所有CSV文件会自动合并到单个工作表中,后续可直接在Excel内进行数据清洗。
方案二:VBA宏批量合并
如果习惯用宏操作,可使用以下代码:
- 打开Excel,按
Alt + F11打开VBA编辑器。 - 右键左侧的工作簿名称 → 插入 → 模块,粘贴以下代码:
Sub 批量合并CSV() Dim 文件夹路径 As String, 文件名称 As String Dim 目标工作表 As Worksheet, 当前工作表 As Worksheet Dim 起始行 As Long ' 创建合并结果工作表 Set 目标工作表 = ThisWorkbook.Sheets.Add(After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count)) 目标工作表.Name = "合并结果" ' 选择CSV所在文件夹 With Application.FileDialog(msoFileDialogFolderPicker) .Title = "选择存放CSV的文件夹" If .Show = -1 Then 文件夹路径 = .SelectedItems(1) & "/" Else Exit Sub End If End With 文件名称 = Dir(文件夹路径 & "*.csv") 起始行 = 1 Do While 文件名称 <> "" ' 导入单个CSV到临时工作表 Set 当前工作表 = ThisWorkbook.Sheets.Add With 当前工作表.QueryTables.Add(Connection:="TEXT;" & 文件夹路径 & 文件名称, Destination:=当前工作表.Range("A1")) .TextFileParseType = xlDelimited .TextFileCommaDelimiter = True .Refresh End With ' 复制数据到目标表,跳过重复表头(首个文件保留表头) If 起始行 > 1 Then 当前工作表.Rows("2:" & 当前工作表.Cells(当前工作表.Rows.Count, "A").End(xlUp).Row).Copy _ 目标工作表.Cells(起始行, "A") Else 当前工作表.Rows("1:" & 当前工作表.Cells(当前工作表.Rows.Count, "A").End(xlUp).Row).Copy _ 目标工作表.Cells(起始行, "A") End If ' 更新起始行并删除临时表 起始行 = 目标工作表.Cells(目标工作表.Rows.Count, "A").End(xlUp).Row + 1 Application.DisplayAlerts = False 当前工作表.Delete Application.DisplayAlerts = True 文件名称 = Dir Loop MsgBox "CSV合并完成!" End Sub
- 点击工具栏的「运行」按钮(绿色三角),选择你的CSV文件夹即可完成批量合并。
注意事项
- 确保所有CSV文件的表头结构一致,避免合并后列错位。
- Power Query方案会自动处理重复表头,可在合并后筛选删除多余的表头行。
内容的提问来源于stack exchange,提问作者Nabil Benaissa
相关产品推荐
相关产品推荐

