Power Query,刷新时保持输出表相同大小

Posted

技术标签:

【中文标题】Power Query,刷新时保持输出表相同大小【英文标题】:Power Query, keep output table same size while refreshing 【发布时间】:2020-11-25 20:26:56 【问题描述】:

我正在使用此代码从 .txt 文件中过滤掉一些文本。然后在另一张表中,我使用单元格引用来构建我的自定义表格。

一切正常,除非源文件为空,Power Query 会调整输出表的大小,以便第二张表中的引用被破坏。

=cellref!$C4

如何防止电源查询调整他表中的范围?或者,以某种方式,保持相同数量的行/列,以免破坏我的引用?

    let
    Source = Table.FromColumns(Lines.FromBinary(File.Contents("C:\Users\ceusebio\OneDrive - Hypertec\RESULTS\LogHoudini.txt"), null, null, 1252)),
    #"Split Column by Delimiter" = Table.SplitColumn(Source, "Column1", Splitter.SplitTextByDelimiter("Generating Image: /home/ciara/Documents/RESULTS/Houdini/images/img.jpg (", QuoteStyle.Csv), "Column1.1", "Column1.2"),
    #"Split Column by Delimiter1" = Table.SplitColumn(#"Split Column by Delimiter", "Column1.1", Splitter.SplitTextByDelimiter("SampleFilter: ", QuoteStyle.Csv), "Column1.1.1", "Column1.1.2"),
    #"Split Column by Delimiter2" = Table.SplitColumn(#"Split Column by Delimiter1", "Column1.1.1", Splitter.SplitTextByDelimiter("Thread Count: ", QuoteStyle.Csv), "Column1.1.1.1", "Column1.1.1.2", "Column1.1.1.3", "Column1.1.1.4", "Column1.1.1.5", "Column1.1.1.6", "Column1.1.1.7"),
    #"Split Column by Delimiter3" = Table.SplitColumn(#"Split Column by Delimiter2", "Column1.1.1.1", Splitter.SplitTextByDelimiter("] Frame Wall Clock Time: ", QuoteStyle.Csv), "Column1.1.1.1.1", "Column1.1.1.1.2"),
    #"Extracted Text Before Delimiter" = Table.TransformColumns(#"Split Column by Delimiter3", "Column1.1.1.1.1", each Text.BeforeDelimiter(_, " dop1"), type text),
    #"Extracted Text Before Delimiter1" = Table.TransformColumns(#"Extracted Text Before Delimiter", "Column1.2", each Text.BeforeDelimiter(_, ")"), type text),
    #"Split Column by Delimiter4" = Table.SplitColumn(#"Extracted Text Before Delimiter1", "Column1.2", Splitter.SplitTextByDelimiter("x", QuoteStyle.Csv), "Column1.2.1", "Column1.2.2"),
    #"Removed Other Columns" = Table.SelectColumns(#"Split Column by Delimiter4","Column1.1.1.1.1", "Column1.1.1.1.2", "Column1.1.1.2", "Column1.1.2", "Column1.2.1", "Column1.2.2"),
    #"Changed Type" = Table.TransformColumnTypes(#"Removed Other Columns","Column1.1.1.1.1", type time)
in
    #"Changed Type"

【问题讨论】:

你的公式是什么样的? (产生#REF!的那些。) 看起来像这样=Houdini!$C4 【参考方案1】:

Excel 似乎将缩小的表格视为删除了这些列。

这不是一个很好的解决方案,但您可以将单元格引用包装在 INDIRECT 中作为一种解决方法,因为这会将 Houdini!$C4 视为常量文本值,而不是直接的单元格引用。

=INDIRECT("Houdini!$C4")

【讨论】:

它看起来可以正常工作,谢谢。顺便说一句,你为什么说这不是一个很好的解决方案?可以改进吗? 它是一个不稳定的函数,可能会阻塞电子表格(参见here)。如果您的工作簿不是太复杂,应该没问题。

以上是关于Power Query,刷新时保持输出表相同大小的主要内容,如果未能解决你的问题,请参考以下文章

Excel Power Query 和相邻公式

Power Query Excel 中的覆盖/锁定值

刷新 CSV 导入时 Power Query 无法添加列

Power BI:多个表作为 Power Query 中 Python 的输出

来自 Power Query 的 Power BI Desktop 增量表更新

power query展开表时动态获取要展开的列