我有一个Excel模板文件,其中的列数动态表示工作日的日期。一些用户决定在这些列的右侧添加自己的小计列。我需要一种方法来识别第一个空白列,然后截断该列及其后的所有列。
我以前一直使用以下脚本来删除所有以单词“ Column”开头的列:
// Create a list of columns that start with "Column" and remove them.
Removed_ColumnNum_Columns = Table.RemoveColumns(PreviousStepName, List.Select(Table.ColumnNames(PreviousStepName), each Text.StartsWith(_, "Column") )),
基于能够找到第一列XX列,我想删除它及其后的所有列
找到以“ Column”开头的第一列,并删除该列及其后的所有列。这会将XX解析为列索引,因此您需要确保在此步骤之前没有删除列。也就是说,在此步骤中,“ Column35”必须为第35列。
// Find the first ColumnXX column and remove it and all columns to the right.
ColumnXX = List.Select(Table.ColumnNames(#"Promoted Headers"), each Text.StartsWith(_, "Column")){0},
ColumnIndex = Number.FromText(Text.Middle(ColumnXX, 6,4)),
ColumnListToRemove = List.Range(Table.ColumnNames(#"Promoted Headers"),ColumnIndex-1),
RemovedTrailingColumns = Table.RemoveColumns(#"Promoted Headers", ColumnListToRemove),
为了使它更健壮,我希望有一种方法来标识columnXX的列索引而不解析其数字。
您可以使用List.PositionOf
来获取ColumnIndex
而不是解析文本。
我会这样组合:
// [...]
ColumnList = Table.ColumnNames(#"Promoted Headers"),
ColumnXX = List.Select(ColumnList, each Text.StartsWith(_, "Column")){0},
ColumnIndex = List.PositionOf(ColumnList, ColumnXX),
ColumnsToKeep = List.FirstN(ColumnList, ColumnIndex),
FinalTable = Table.SelectColumns(#"Promoted Headers", ColumnsToKeep)