有100个excel文件,每个文件有5个结构一样的工作表, 现在整合500个工作表,每个表里 B5是项目名称,如何用power query编辑器里添加一列让其等于各自表里的D5的项目名称呢?
关键
= Excel.Workbook([Content]{0}[Content]){[Name="Sheet1"]}[Item]{[Name="D5"]}[Value]
【以下回答由 GPT 生成】
要实现这个目标,可以按照以下步骤进行操作:
打开一个新的Excel文件,并打开Power Query编辑器。在菜单栏中选择"数据",然后选择"来自文件",再选择"来自文件夹"。
在弹出的对话框中,选择包含这100个Excel文件的文件夹,并点击"确定"。
Power Query将会加载这个文件夹中的所有文件。在这个过程中,它会自动推断每个文件的结构。
在加载完成后,你将看到一个包含所有文件的查询。选择一个工作表,然后在"开始"选项卡中选择"转置表格"。这将把工作表的行转换为列,并将表头放在第一行。
在转置之后,应用你想要的数据转换操作。在这种情况下,我们要添加一列,使其值等于相应表格的D5单元格中的项目名称。
选择表头所在的列,然后在"开始"选项卡中选择"填充下一项",再选择"自定义"。
在弹出的对话框中,输入以下公式:[Table Column]{[Row]}。这个公式将会把每一行的当前表头作为参数,然后返回相应表格中D5单元格的值。
点击"确定"并关闭Power Query编辑器。你将看到新添加的一列,其值等于每个表格中特定单元格的值。
以下是一个示例代码来演示上述步骤:
let
// 设置文件路径
文件夹路径 = "文件夹路径",
// 加载文件夹中的所有文件
文件夹 = Folder.Files(文件夹路径),
源 = Table.FromList(文件夹[Folder Path], Splitter.SplitByNothing(), null, null, ExtraValues.Error),
// 扩展文件夹列
扩展文件夹列 = Table.ExpandRecordColumn(源, "Column1", {"Content"}, {"Content"}),
// 提取Excel文件路径
#"提取Excel文件路径" = Table.AddColumn(扩展文件夹列, "Excel文件路径", each [Content][Folder Path]&[Content][Name]),
// 移除不需要的列
#"移除不需要的列" = Table.SelectColumns(#"提取Excel文件路径", {"Excel文件路径"}),
// 扩展Excel文件路径列
扩展Excel文件路径列 = Table.AddColumn(#"移除不需要的列", "Excel内容", each Excel.Workbook(File.Contents([Excel文件路径]))),
// 打开每个工作簿并转换成表格
#"打开工作表并转换成表格" = Table.AddColumn(扩展Excel文件路径列, "表格", each Table.Combine(List.Transform([Excel内容][Sheets], each Table.TransformColumnTypes([Data], Table.TransformColumnTypes(_, {{"列名", type text}, {"列名", type any}}))))),
// 扩展表格列和表名称列
#"扩展表格列和表名称列" = Table.ExpandTableColumn(#"打开工作表并转换成表格", "表格", List.Combine, {"列名", "列名", "表名称"}, List.Combine),
// 转置表格
转置表格 = Table.Transpose(#"扩展表格列和表名称列"),
// 移除不需要的行
#"移除不需要的行" = Table.SelectRows(转置表格, each ([行标题] <> null)),
// 填充下一项
填充下一项 = Table.FillDown(#"移除不需要的行",{"列名"}),
// 添加一列
添加一列 = Table.AddColumn(填充下一项, "项目名称", each [列名]{[行标题]}),
// 移除行标题列
#"移除行标题列" = Table.RemoveColumns(添加一列,{"行标题"})
in
#"移除行标题列"
请注意,上述代码仅为示例,实际操作中你需要根据你的具体情况自行调整和修改。此外,以上操作基于你提供的信息,如果实际情况有所不同,请提供更详细的信息以便给出更准确的解决方案。如果你有任何问题或需要进一步解释,请随时提问。
【相关推荐】
你这个需求用pandas去做简单得很
要在Power Query编辑器中添加一列,使其等于每个表中特定单元格的值,可以按照以下步骤进行操作:
打开Power Query编辑器,并导入第一个Excel文件。
在Power Query编辑器中,选择要添加列的工作表。
在开始选项卡上,点击"添加自定义列"按钮。
在自定义列对话框中,输入新列的名称(例如"项目名称")。
在自定义列对话框的公式框中输入以下公式:= [#"Table Name"][Column Name]。
将"Table Name"替换为当前工作表的名称,可以在查询设置选项卡找到。
将"Column Name"替换为您想要提取值的单元格的列名和行号(例如"$D$5")。
示例公式:= [#"Sheet1"]["$D$5"]
点击"确定"以添加自定义列。
重复步骤2至步骤6,逐个导入并编辑剩下的Excel文件和工作表。
完成以上步骤后,将为每个工作表添加一个名为"项目名称"的新列,该列的值将等于相应工作表中指定单元格(例如D5)的项目名称。最后,您可以应用和关闭Power Query编辑器,将结果导出或继续进行其他操作
感觉用阿里开源esay exel 做效果更好
要使用Power Query整合100个Excel文件,并添加一列值等于每个表的特定单元格中的值,可以按照以下步骤操作:
打开一个新的Excel工作簿。
在Excel中,选择"数据"标签,然后点击"获取数据",选择"从文件",再选择"从文件夹"。
在弹出的对话框中,选择包含这100个Excel文件的文件夹,并点击"确定"。
Power Query编辑器将会打开,显示文件夹中的文件列表。
在Power Query编辑器中,选择"添加自定义列"。
在公式框中输入以下公式,其中"Source"是指对应的列名(例如B5),你可以根据你的实际情况进行修改:
= Excel.Workbook([Content]){[Item="SheetName",Kind="Sheet"]}[Data][Source]{0}
这个公式将会从每个表的特定单元格中获取值。
注意:请将"SheetName"替换为你所需的工作表名称,将"Source"替换为你所需的单元格引用。
点击"确定",新的列将会添加到你的数据表中,其中的值等于每个表的特定单元格中的值。
通过以上步骤,你可以使用Power Query整合100个Excel文件,并添加一列值等于每个表的特定单元格中的值。最后,你可以将结果导出为一个新的Excel文件或进行进一步的数据处理。
参考gpt:
结合自己分析给你如下建议:
1.在 Excel 中,选择“数据”选项卡,然后选择“从文件夹”获取数据。
2.选择包含你的 100 个 Excel 文件的文件夹,然后点击“确定”。
3.在弹出的对话框中,点击“转换数据”,进入 Power Query 编辑器。
4.在查询编辑器中,选中“内容”列,删除其他列。
5.新建一个自定义列,输入公式 =Excel.Workbook([Content],true) ,这样可以将二进制数据转换为 Excel 工作簿对象。
6.展开自定义列,选择“名称”和“数据”两列,删除其他列。
7.在“名称”列中,筛选出你需要合并的五个工作表的名称。
8.展开“数据”列,选择所有列,删除其他列。
9.新建一个自定义列,输入公式 =[Data]{0}[D5] ,这样可以获取每个工作表中 D5 单元格的值,即项目名称。
10.将新建的自定义列重命名为“项目名称”,并将其移动到第一列的位置。
11.点击“关闭并加载”,将合并后的数据加载到 Excel 中。
该回答引用于chatGPT仅供参考:
要使用Power Query编辑器为整合的工作表添加一列,其中每个表的值等于各自表格中的项目名称(D5单元格),可以按照以下步骤进行操作:
1. 打开一个新的Excel文件,然后选择"数据"选项卡上的"从文件",然后选择"从文件夹"。
2. 在打开的对话框中,选择包含您的100个Excel文件的文件夹,并点击"获取数据"。
3. 在导航窗格中,展开"工作表"文件夹,并选择要整合的工作表所在的文件夹。选择第一个工作表,然后点击"编辑"按钮。
现在您将进入Power Query编辑器。
4. 确保只有第一个工作表处于活动状态。在"主页"选项卡上,选择"添加列",然后选择"自定义列"。
5. 在打开的对话框中,输入以下公式来创建新的列:
= Excel.Workbook(File.Contents([Folder Path]), null, true){[Item= [ItemName],Kind="Sheet"]}[Data]{0}[Column1]
这个公式将使用Folder Path参数中文件夹路径的值,找到指定的工作表(根据ItemName的值)。这样就可以获取每个表的D5单元格的值。
6. 输入列名(例如,"项目名称")并点击"确定"。
现在,您已经将一个新的列添加到第一个工作表。为了将这个更改应用到其他工作表,可以使用Power Query的复制功能。
7. 在"主页"选项卡上,选择"全部加载",然后关闭Power Query编辑器。
此时,Power Query将会自动整合100个Excel文件,并在每个工作表的后面添加一个新列,该列的值等于各自工作表中的D5单元格的值(即项目名称)。
请注意,如果您的工作表和列名略有不同,请根据实际情况进行相应的调整。