我有一个 Power Query,它将同一目录中具有相同表名的多个 Excel 工作簿合并到一个表中,然后将其用作数据透视表的源数据。 或者至少我做到了...
问题在于某些文件的命名表进行了修订,并添加了新列。 基本上它是不断变化的数据文件的混合。 我需要将该列添加到缺少它的文件中。
我花了很多时间用谷歌搜索,终于找到了我在一定程度上理解的youtube视频。 它基本上是说添加一个
IF
语句来检查该列是否存在。 如果确实返回原始表。 否则添加该列。
我的M代码目前是
let
Source = Excel.Workbook(Parameter1, null, true),
Forecast_Table_Table = Source{[Item="Forecast_Table",Kind="Table"]}[Data],
#"Added Custom1" = Table.AddColumn(Forecast_Table_Table, "Missing", each if Table.HasColumns(Navigation,"LOS") then Navigation else Table.Combine({Navigation, Table.FromRows({},{"LOS"})})),
#"Added Custom" = Table.AddColumn(#"Added Custom1", "Custom", each [Project No]&[Task No]&[Office]&[Staff]),
#"Filtered Rows" = Table.SelectRows(#"Added Custom", each [Custom] <> null and [Custom] <> ""),
#"Removed Columns" = Table.RemoveColumns(#"Filtered Rows",{"Custom"})
in
#"Removed Columns"
这是我尝试添加 if 语句的地方,就像他们在视频中所做的那样
但是,当我选择该步骤时,它显示此错误:
如何修复我的
IF
语句,以便添加名为“LOS”的列(如果该列尚不存在)。
我的应用步骤列表如下,绿色步骤是我添加
IF
语句
不确定您期望的输出是什么,但您的问题是,尽管您的应用步骤是
Navigation
,但这并不是上一步的真正名称。 (问MS为什么)。
在 M 代码中,添加此步骤:(假设您想要一个名为
LOS
且内容为空的列)
#"Add LOS" = if Table.HasColumns(Forecast_Table_Table,{"LOS"}) then Forecast_Table_Table
else Table.Combine({Forecast_Table_Table,#table({"LOS"},{})})
如果您想在该栏中了解其他内容,请提供示例。