【问题标题】:Excel Power Query inserting column between other columnsExcel Power Query 在其他列之间插入列
【发布时间】:2021-09-15 17:22:32
【问题描述】:

我正在导入一堆列以在 Excel 电源查询中进行一些分析。某些分析列需要在某个列之后插入,但添加列的每个选项只允许我将列附加到最后。为了便于阅读,我想在名为“Total”的列之后插入新列。

【问题讨论】:

  • 您好,您能展示一下您到目前为止所做的尝试吗?

标签: excel excel-formula powerbi powerquery


【解决方案1】:

下面是一个函数,而不是输出重新排列的列名列表。

重新排序列表:

(tableName as table, toBeMovedColumnName as any, optional afterColumnName as text) as list=>
//tableName - the name of the table we want to reorder.
//toBeMovedColumnName - the name of the column you want to change the position. Can be a list of column names.
//columnName - the name of the column you want the toBeMovedColumnName to be positioned after. If omited toBeMovedColumnName will be placed as the first column.

let
    columnNames = Table.ColumnNames(tableName),
    positionOf = if afterColumnName is null or afterColumnName = "" then 0 else List.PositionOf(columnNames, afterColumnName) + 1,
    toBeMovedList = if Value.Is(toBeMovedColumnName, type list) = true then toBeMovedColumnName else {toBeMovedColumnName},
    intermediaryList = List.Combine({List.FirstN(columnNames,positionOf),toBeMovedList}),
    intermediaryList2 = List.RemoveItems(columnNames,intermediaryList),
    reorderList = List.Combine({intermediaryList,intermediaryList2})
in
    reorderList

这样的用法:

let 
Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
#"Added Custom" = Table.AddColumn(Source, "Custom1", each 4),
#"Reordered Columns" = Table.ReorderColumns(#"Added Custom", ReorderList(#"Added Custom","Custom1","Total"))
in 
#"Reordered Columns"

【讨论】:

    【解决方案2】:

    下面的示例。

    let Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
    
    // get baseline column names. Use this before inserting new analysis columns
    Names = Table.ColumnNames(Source),
    TotalSpot = List.PositionOf(Names,"Total"),
    
    // add any code or steps here ; this is random sample. don't use 
    #"Added Custom" = Table.AddColumn(Source, "Custom1", each 4),
    #"Added Custom1" = Table.AddColumn(#"Added Custom", "Custom2", each 5),
    #"Added Custom2" = Table.AddColumn(#"Added Custom1", "Custom3", each 6),
    
    // insert this after all your new columns are added
    // it moves all new columns to the right of the Total column
    //  replace #"Added Custom2" in step below with previous step name
    
    #"Reordered Columns" = Table.ReorderColumns(#"Added Custom2",List.Combine ({List.FirstN(Names,TotalSpot+1),List.RemoveItems(Table.ColumnNames(#"Added Custom2"),Names),List.RemoveFirstN (Names,TotalSpot+1)}))
    in #"Reordered Columns"
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多