Удалить все столбцы справа от определенного столбца - PullRequest
1 голос
/ 18 октября 2019

У меня есть файл шаблона Excel с динамическим числом столбцов, которые представляют даты рабочей недели. Некоторые пользователи решили добавить свои собственные столбцы промежуточных итогов справа от этих столбцов. Мне нужен способ идентифицировать первый пустой столбец, а затем обрезать этот столбец и все столбцы, следующие за ним.

Ранее я использовал следующий сценарий для удаления всех столбцов, начинающихся со слова «Столбец»:

// 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") )),

Исходя из возможности найти первый столбец ColumnXX, я хочу удалить его и все столбцы после него

enter image description here

Ответы [ 2 ]

1 голос
/ 18 октября 2019

Вы можете использовать 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)
0 голосов
/ 18 октября 2019

Удалить столбцы после ColumnXX

Найдите первый столбец, который начинается с имени «Столбец», и удалите этот столбец и все столбцы, следующие за ним. Это анализирует 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 без разборацифры от него.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...