【问题标题】:Replace all error values of all columns after importing datas (while keeping the rows)导入数据后替换所有列的所有错误值(同时保留行)
【发布时间】:2016-09-02 19:14:38
【问题描述】:

作为数据源的 Excel 表可能包含错误值(#NA、#DIV/0),这可能会干扰 Power Query 中转换过程中稍后的某些步骤。
根据以下步骤,我们可能不会得到任何输出,但会出现错误。那么如何处理这种情况呢?

我在 Power Query 中找到了两个标准步骤来捕获它们:

  • Remove errors (UI: Home/Remove Rows/Remove Errors) -> 所有出错的行都会被删除
  • Replace error values (UI:转换/替换错误)-> 必须首先选择列来执行此操作。

第一种可能性对我来说不是解决方案,因为我想保留行并只替换错误值。

就我而言,我的数据表会随着时间而改变,这意味着列名可能会改变(例如年份),或者出现新列。所以第二种可能性太固定了,因为我不想每次都更改脚本。

所以我尝试了一种动态的方式来清理所有列,独立于列名(和列数)。它用空值替换错误。

let
    Source = Excel.CurrentWorkbook(){[Name="Tabelle1"]}[Content],

    //Remove errors of all columns of the data source. ColumnName doesn't play any role
    Cols = Table.ColumnNames(Source),
    ColumnListWithParameter = Table.FromColumns({Cols, List.Repeat({""}, List.Count(Cols))}, {"ColName" as text, "ErrorHandling" as text}),
    ParameterList = Table.ToRows(ColumnListWithParameter ),
    ReplaceErrorSource = Table.ReplaceErrorValues(Source, ParameterList)
in
    ReplaceErrorSource

这里是不同的三个查询消息,在我向源添加了两个新列(有错误)之后:

如果有人有其他解决方案来进行这种数据清理,请在此处写下您的帖子。

【问题讨论】:

  • 您能否将产生错误的原始列替换为捕获错误并生成其他默认值的 IfError 函数?

标签: excel powerquery


【解决方案1】:
let
    src = Excel.CurrentWorkbook(){[Name="Tabelle1"]}[Content],
    cols = Table.ColumnNames(src),
    replace = Table.ReplaceErrorValues(src, List.Transform(cols, each {_, "!"}))
in
    replace

【讨论】:

  • 谢谢!你的代码和我的一样干净/简单。
猜你喜欢
  • 2013-05-20
  • 1970-01-01
  • 1970-01-01
  • 2022-12-22
  • 2018-02-21
  • 2022-11-23
  • 2018-10-18
  • 2015-04-26
  • 2018-05-05
相关资源
最近更新 更多