Я думаю, что ваш вопрос был неясен в отношении "шагов", которые вы хотите выполнить над своими данными (то есть точной логики или преобразования, которое необходимо применить).
Основано исключительно на ваших изображенияхи ваш комментарий, я делаю "шаги", чтобы быть:
- Разделить любые идентификаторы клиентов в столбце
valueC
на несколько строк. - Если столбец
valueC
не содержит клиентаИдентификаторы (т. Е. Пустые или содержащие текст идентификатора, не являющегося клиентом), оставьте его без изменений.
В моем ответе вместо VBA используется Power Query.Если вы хотите попробовать это, в Excel попробуйте нажать Data > Get Data > From Other Sources > Blank Query
, затем нажмите Advanced Editor
рядом с верхним левым краем, скопируйте и вставьте приведенный ниже код, затем нажмите Done
.
Возможно, вам понадобитсяизменить имя таблицы в первой строке кода (ниже), как это было для меня "Table1"
, но я полагаю, что ваше имя называется другим.Кроме того, код ниже чувствителен к регистру.Поэтому, если столбца с именем точно valueC
нет, вы получите ошибку.
let
Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
fxProcessSomeText = (textToProcess as any) =>
let
canBeSplit = Text.StartsWith(textToProcess, "### customer id"),
result = if textToProcess is null then null else if canBeSplit then Text.Split(Text.BetweenDelimiters(textToProcess, "### customer id", " ###"), ",") else {textToProcess}
in
result,
invokeFunction = Table.TransformColumns(Source, {{"valueC", fxProcessSomeText}}),
expanded = Table.ExpandListColumn(invokeFunction, "valueC"),
reindex =
let
removeIndex = Table.RemoveColumns(expanded, {"index"}),
addIndex = Table.AddIndexColumn(removeIndex, "index", 1, 1),
moveIndex = Table.ReorderColumns(addIndex, List.Distinct(List.InsertRange(Table.ColumnNames(addIndex), 0, {"index"})))
in
moveIndex
in
reindex
Моя выходная таблица содержит больше строк, чем ваша.Кроме того, значение в столбце valueA
, строка 11 для меня 1415
(в выводе вашего запроса 1234
).Не уверен, является ли это ошибкой в вашем примере, или мне не хватает какой-то логики.