我是Microsoft Query的新手,所以我的术语可能不标准。
我正在设置一个Excel文档来操作仪表板。该文档将位于多个用户的共享文件夹中。
我在Excel中创建了一个工作表,其中有一个单元格,用于读取Excel文档的路径。
我计划使用Microsoft Query来使用位于"Sheet1(A1)"
的路径来查找此目录中的所有文件并将它们合并。
在运行查询时,我可以将其设置为执行此操作。 但是,在尝试合并此目录中的文件时,我遇到了问题。它可以在我的本地计算机上运行,但是当用户使用其凭据尝试使用其他计算机时,用于查找输入的路径将硬编码到我的路径中。
如何将"Sheet1(A1)"
值带入查询/转换,以使路径保持动态?
以下是我的工作流程的简要概述:
"来源"对于导入的第一部分读取。在哪里"路径"指的是位于Sheet1(A1)中的命名单元格:
= Folder.Files(Excel.CurrentWorkbook(){[Name="path"]}[Content]{0}[Column1])
我通过仅过滤文件名中的特定术语来稀释源(有多个)。
= Table.SelectRows(Source, each Text.StartsWith([Name], "AS") or Text.StartsWith([Name], "As"))
这是硬编码开始的地方,然后我将过滤文件并展开并合并为一个。
= Table.AddColumn(#"Filtered Rows", "Transform File from Query1 (2)", each #"Transform File from Query1 (2)"([Content]))
这是路径硬编码的地方,我想使用单元格A1中的值。
= #"Filtered Rows"{[#"Folder Path"="**C:\Users\User\Path\**",Name="As_Test.xlsx"]}[Content]
正如我所说,查询的来源有效,但我无法通过动态文本,或者至少我不熟悉查询语法来实现它。
答案 0 :(得分:1)
使用当前版本的Excel,Power Query(在Excel 2016中称为Get and Transform)将比Microsoft Query做得好得多,但从您的代码示例来看,您根本不使用Microsoft Query,但您确实使用Power Query。
您可以在工作表中使用一个单元格,该单元格从打开文件的用户的角度来存储当前文件夹路径。然后,您可以将该路径作为参数提供给Power Query。
公式
=LEFT(CELL("filename",A1),FIND("[",CELL("filename",A1))-1)
将为您提供当前文件的路径。 (如果它没有确保保存工作簿,而不是新文件)
有几种不同的方法可以将单元格值用作Power Query中的参数。一种选择是在参数表中使用这个公式,正如Ken Puls在他关于parameter tables for Power Query的文章中描述的那样,只是你的情景。