Excel:即使缺少一行,是不是有办法从电源查询更新表格?

Posted

技术标签:

【中文标题】Excel:即使缺少一行,是不是有办法从电源查询更新表格?【英文标题】:Excel: Is there a way to update the table from power query even if a row is missing?Excel:即使缺少一行,是否有办法从电源查询更新表格? 【发布时间】:2020-12-05 15:43:43 【问题描述】:

希望你有一个美好的一天。最近我试图在 Excel 中创建一个报告,并试图从 html 文件中获取所需的数据。 HTML 文件基本上是存储所有问题的网页,然后在小表格中过滤我们当天需要的内容。我没有直接从 Web 获取数据的选项,因为公司不允许加载项登录到站点并从那里获取数据,并且由于数据库的安全性,从 Web 获取数据不起作用弹出并不允许您获取任何内容,因此解决方法是每次我需要制作报告时将页面另存为 HTML,并覆盖连接到 Excel 工作簿的旧页面。

我设法将加载的表格从 HTML 文件创建到 excel 中所需的图表,但我偶然发现了 Power Query 方面的一个问题。我保存 HTML 文件的页面中的表不一样,这意味着有时会丢失一列,因为它没有问题,并且数据库会自动将其从表中隐藏,因此当我刷新查询时它会显示错误“表中缺少 X 列”。我知道它丢失了,但我不想在每次丢失一列时都获取数据并重做所有操作,以便图表正确更新。

有没有办法在 Power Query 高级编辑器中编写代码,这样即使缺少列,表格也会更新,而无需每次都编码/获取数据?我在这里尝试做的是使流程自动化,以便以最少的工作量获取数据,对我来说更好。

提前致谢!

*编辑:这是查询的源M代码:

    let
    Source = Web.Page(File.Contents("D:\AUTO.html")),
    Data1 = Source1[Data],
    #"Changed Type" = Table.TransformColumnTypes(Data1,"Customer Impact", type text, "Yes", Int64.Type, "No", Int64.Type, "WIP", Int64.Type, "T:", Int64.Type)
in
    #"Changed Type"

【问题讨论】:

请分享您的M代码。 编辑问题并添加源代码。抱歉,我一开始忘记添加了。 【参考方案1】:

问题在于#"Changed Type" 步骤,因为它试图转换不存在的列。

最简单的解决方案是完全消除该步骤,让数据通过而不分配类型。也就是说,将您的查询替换为:

let
    Source = Web.Page(File.Contents("D:\AUTO.html")),
    Data1 = Source1[Data]
in
    Data1

如果类型很重要,您可以编写更动态的步骤来分配不会中断的类型。在这种情况下,您需要提供有关该逻辑应如何工作的详细信息(例如,“客户影响”始终存在并且应该是文本,其余部分都应该是整数)。

【讨论】:

试过这个方法,它有点工作,但现在似乎 Excel 给了我一个错误,说“Excel 发现此工作表中的一个或多个公式引用有问题”基本上搞砸了整个图表而不是阅读以任何可能的方式获取数据,即使它是一个数字。因此,打字可能需要很重要。是的,客户影响始终存在,但 YES/NO/WIP 会波动。有时 YES 存在,No 不会存在,WIP 会存在等等。知道如何对其进行编码,以便保持输入,以便图表可以读取吗?非常感谢! 新问题是这样的吗? ***.com/questions/65012241 是的,现在我设法使用 INDIRECT 让它工作,但将来会尝试使用其他东西,因为它似乎 INDIRECT 是不稳定的,如果工作量太大,它可能会在未来某个地方破坏某些东西.谢谢!

以上是关于Excel:即使缺少一行,是不是有办法从电源查询更新表格?的主要内容,如果未能解决你的问题,请参考以下文章

Power Query Excel 中的覆盖/锁定值

脚本任务从 Excel 批量复制到 Sql Server 2008。标题后缺少第一行

即使缺少月份,也会按月计算总计

如何使用sql语句和vba将数据从MS-Access导入excel power查询?

在 excel 电源查询中使用带有参数的 OData 提要

访问查询以包含所有记录,即使一个字段缺少数据(为 Null)