excel - 在电源查询自定义列中引用上面的单元格

标签 excel excel-formula powerquery

我正在将 Excel 进程转换为电源查询自定义列,它当前的工作方式是通过引用上面的单元格来写入当前单元格。

Excel 公式为 =IF(G2<>"", IF(I2<>"",I2,""),H1)
在本例中将在 H2 中输入。它本质上是说,当我的单元格的左侧和右侧有值时,我会将单元格的值写入右侧,直到我看到左侧的单元格没有与单元格上的单元格配对对,回到null。这贯穿几千行,可能会被触发几十次以修补小孔。
最终结果基本上看起来像这样,中心列是我的新数据(为了直观,我使用零而不是“”或 null):

  1. 0 0 0 - Write null
  2. 0 0 0 - Write null
  3. x 1 1 - Write value to the right
  4. 0 1 0 - Write value above
  5. 0 1 0 - Write value above
  6. x 0 0 - Write null
  7. 0 0 0 - Write null


现在我必须在执行查询链之前编写公式,我想将此步骤合并到自定义列中,但我还没有找到解决方案。我是 m 代码和电源查询以及堆栈溢出的完全新手,但到目前为止,我已经能够执行我需要的每个步骤,除了这个。

最佳答案

我的建议是另一种方法:

下面的查询基于具有列 G、H 和 I 的 Table1,它创建了前两个步骤。

下一列 H 被删除。

添加一个新列 H,如果 G 和 I 均为 <> null,则初始值为来自 I 的值,否则如果 G = null 则为空白(稍后将为 null)。

接下来,新的 H 列被填满。

下一个 ""被替换为 null。

最后,这些列被重新排序。

编辑:通过 UI 完成的所有步骤;选择“添加自定义列”后,在公式框中输入了新列的公式(没有“每个”)

let
    Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
    #"Changed Type" = Table.TransformColumnTypes(Source,{{"G", type text}, {"H", type any}, {"I", Int64.Type}}),
    #"Removed Columns" = Table.RemoveColumns(#"Changed Type",{"H"}),
    #"Added Custom" = Table.AddColumn(#"Removed Columns", "H", each if [G] <> null and [I] <> null then [I] else if [G] <> null then "" else null),
    #"Filled Down" = Table.FillDown(#"Added Custom",{"H"}),
    #"Replaced Value" = Table.ReplaceValue(#"Filled Down","",null,Replacer.ReplaceValue,{"H"}),
    #"Reordered Columns" = Table.ReorderColumns(#"Replaced Value",{"G", "H", "I"})
in
    #"Reordered Columns"

关于excel - 在电源查询自定义列中引用上面的单元格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41836348/

相关文章:

excel - 在线存储 Power Query 自定义函数(Github 等..)并调用它

xml - 将简单的 XML 导入 Power BI

powerbi - 电源查询 M IN 运算符

php - Scope - 如何从 laravel excel import 返回错误?

vba - 是否可以获得作为过滤器结果的列的最常见值(字符串)? VBA

Excel 转换和删除空格

Excel 公式 - 2 countif 一个在另一个?

vba - Excel VBA将字符串的特定文本粗体设置到单元格中?

vba - 如何在 Excel 中打开特定版本的 Word 2007/2010

excel - 将货币从一个单元格移动到另一个单元格