Excel 中的 Microsoft Query - 使用单元格值定义源

Microsoft Query in Excel - Using a cell value to define a source

我是 Microsoft Query 的新手,所以我的术语可能不标准。

我正在设置一个 Excel 文档作为仪表板。该文档将位于多个用户的共享文件夹中。

我在 Excel 中创建了一个 sheet,其中有一个单元格读取 Excel 文档的路径。

我打算使用 Microsoft Query 来使用位于假设 "Sheet1(A1)" 中的路径来查找此目录中的所有文件并将它们合并。

在 运行 查询中,我可以对其进行设置以使其执行此操作。 然而,我在尝试合并该目录中的文件时遇到了问题。它在我的本地机器上运行,但是当用户尝试在另一台机器上使用他们的凭据时,用于查找输入的路径被硬编码到我的路径。

如何将 "Sheet1(A1)" 值携带到查询/转换中,以允许路径保持动态?

以下是我的工作流程的简要概述:

导入第一部分的 "Source" 读取。其中 "path" 指的是位于 Sheet1(A1) 中的命名单元格:

= Folder.Files(Excel.CurrentWorkbook(){[Name="path"]}[Content]{0}[Column1])

我通过仅过滤文件名中的特定术语(有多个)来精简源代码。

= Table.SelectRows(Source, each Text.StartsWith([Name], "AS") or Text.StartsWith([Name], "As"))

这是硬编码开始的地方,然后我将过滤后的文件展开并将 sheet 合并为一个。

= 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]

正如我所说,查询源有效,但我无法执行该动态文本,或者至少我不精通执行它的查询语法。

对于 Excel 的当前版本,Power Query(在 Excel 2016 年称为 Get 和 Transform)将比 Microsoft Query 做得更好,但从您的代码示例来看,您不是完全使用 Microsoft Query,但您确实在使用 Power Query。

您可以在工作表中使用一个单元格,从打开文件的用户的角度来存储当前文件夹路径。然后,您可以将该路径作为参数提供给 Power Query。

公式

=LEFT(CELL("filename",A1),FIND("[",CELL("filename",A1))-1)

将为您提供当前文件的路径。 (如果不能确保工作簿已保存,而不是新文件)

在 Power Query 中使用单元格值作为参数有几种不同的方法。一种选择是将此公式放在参数 table 中,如 Ken Puls 在他关于 parameter tables for Power Query 的文章中所述,只是您的场景。