我创建了一个 Excel 工作表,使用 powerquery 从本地文件中提取数据。该工作表在我同事的机器上不起作用。我们不确定原因。
它的工作原理如下:
- 将路径粘贴到名为文件路径
- 单击数据选项卡中的“刷新全部”
建立联系获取文件路径使用以下表达式获取文件路径:
= (rangeName) => Excel.CurrentWorkbook(){[Name="FilePath"]}[Content]{0}[Column1]
查询将该文件加载到具有以下来源的工作表中:
= Csv.Document(File.Contents(GetFilePath("FilePath")),[Delimiter="#(tab)", Columns=4, Encoding=65001, QuoteStyle=QuoteStyle.None])
我的同事遇到的错误显然是在步骤 3 中。单击刷新时会出现以下错误:
[Expression.Error] We couldn't find an Excel table name 'FilePath'.
我们已经验证该表在他们的机器上名为 FilePath,与我的相同。
我注意到我的机器和我同事的机器之间的一个区别:
在功能区、数据选项卡、查询和连接部分中,我有一个按钮,上面写着“查询和连接”。对于我的同事,同一个按钮只显示“连接”。
当我点击按钮时,我得到了查询和连接侧边栏。当我的同事点击他们的连接按钮时,他们得到了一个与侧边栏看起来完全不同的弹出窗口。
任何意见都值得赞赏。
答案1
这显然是因为我拥有适用于 Office 365 的 Excel 而我的同事拥有 Excel 2016。
这两个版本处理自定义表格名称/单元格引用的方式似乎不同。以下是我为修复此问题所做的更改:
原文表达:
= (rangeName) =>
Excel.CurrentWorkbook(){[Name="FilePath"]}[Content]{0}[Column1]
其中“FilePath”是自定义表名,“Column1”是某些默认值(不是表中的实际列名)。
固定表达:
= (rangeName) =>
Excel.CurrentWorkbook(){[Name="Table3"]}[Content]{0}[File Path]
其中“Table3”是 Excel 为表指定的默认名称,“文件路径”是单元格中实际显示的列名。
进行这些更改后,该工作表现在可以在 Excel 2016 和 Excel 365 中使用。
我不太明白为什么自定义表格名称会破坏 Excel 2016。它似乎没有将以该名称引用的单元格识别为表格。如果有人知道到底出了什么问题,我很乐意听听。