Добрый день. Помогите пожалуйста решить вот такую задачу: Есть лист в котором много строк в которых много ячеек с текстом и числами. Надо перебирать последовательно ячейки по строке и если есть в ячейке слова Длина или Высота или Ширина - любое из этих трех, то в следующей за последней используемой ячейкой записываются все слова начиная с первого (длина/высота/ширина) через || и так продолжается пока в очередной ячейке не будет написано нет. Как только появилось нет переход на следующую строку. Количество занятых ячеек в строке разный, и может достигать нескольких сотен.
МатросНаЗебре, написал: "Последняя заполненная" имеется в виду справа или внизу?
МатросНаЗебре, приветствую! ) Вы только это не поняли? Я вообще не поняла в каком виде должен быть результат... У меня "за последней используемой ячейкой" - столбец "EJ", а результат такой, как я поняла и большая вероятность, что поняла неправильно...
pq
Код
let
f=(x)=>[lst=Record.ToList(x),
a=List.PositionOfAny(lst,{"Высота","Ширина","Длина"},Occurrence.First,(c,v)=>Text.Contains(Text.Proper(c),v)),
b=if a=-1 then {} else List.Skip(List.FirstN(lst,(w)=>not Text.Contains(Text.Proper(w),"Нет")),a),
c=Text.Combine(b,"||")][c],
from = Excel.CurrentWorkbook(){[Name="data"]}[Content],
tr=Table.TransformColumns(from,{},(x)=>if x=null then "" else f_txtTrim(x)),
add=Table.AddColumn(tr,"Высота/Ширина/Длина",f)
in
add
Добрый день. Прошу прощения, я наверно сильно сложно захотел, да и написал наверно не шибко понятно...
Можно перефразирую: Надо перебирать последовательно ячейки по строке (кроме первого столбца) и если есть в ячейке слова Длина или Высота или Ширина - любое из этих трех, то в следующей за последней используемойПЕРВОЙ ячейке строки (первый столбец) записываются все слова начиная с первого (длина/высота/ширина) через || и так продолжается пока в очередной ячейке не будет написано нет. Как только появилось нет переход на следующую строку. Количество занятых ячеек в строке разный, и может достигать нескольких сотен.
Здравствуйте! Есть большой вопрос к уважаемым знатокам (видимо у меня без проблем не бывает)!!! После того, как файл-пример увидела, обнаружила, что присутствуют кавычки в некоторых ячейках. "≥ 6 и ≤ 8" этот текст в ячейке Excel я вижу в виде ≥ 6 и ≤ 8, т.е. без кавычек. И когда я таблицу с данными загружаю в редактор PQ, я вижу данные в виде ≥ 6 и ≤ 8. Почему исчезают кавычки и как их отобразить в данных при загрузке в редактор PQ (если это для ТС принципиально важно). Столкнулась с этим первый раз и не понимаю что и как??? Скорректировала код, но предупреждаю, что без кавычек. Уважаемые знатоки помогите, пожалуйста, мне понять причину.
pq
Код
let
f=(x)=>[lst=List.Buffer(List.Skip(Record.ToList(x))),num=List.Buffer({"0".."9"}),sp=List.Buffer({"Высота","Ширина","Длина"}),
a=List.PositionOfAny(lst,sp,Occurrence.First,(c,v)=>Text.Contains(Text.Proper(c),v)),
b=if a=-1 then {} else List.Skip(List.FirstN(lst,(w)=>not Text.Contains(Text.Proper(w),"Нет")),a),
b1=List.Transform(b,(x)=>if List.Contains(num,x,(c,v)=>Text.Contains(v,c)) then Text.Combine(Text.Split(x," "),"||") else x),
c=Text.Combine(b1,"||")][c],
from = Excel.CurrentWorkbook(){[Name="data"]}[Content],
tr=Table.TransformColumns(from,{},(x)=>if x=null then "" else f_txtTrim(x)),
add=Table.AddColumn(tr,"Высота/Ширина/Длина",f),
to = Table.ReorderColumns(add,{"Высота/Ширина/Длина"}&Table.ColumnNames(from))
in
to
у Вас сейчас выбирается весь текст сначала строки и такая же проблема, что я описала выше, но по крайней мере я у себя в Excel в русских традициях вижу именно так...
Код
||10-02-01:Противопролежневая подушка полиуретановая||Высота||Неизменяемая заказчиком||≥
6
и
≤
8||
написал: "≥ 6 и ≤ 8" этот текст в ячейке Excel я вижу в виде ≥ 6 и ≤ 8, т.е. без кавычек. И когда я таблицу с данными загружаю в редактор
Это код Unicode " и он в разных прогах и редакторах по разному обрабатывается и показывается. Что с ним делать в Екселе не знаю, а у себя просто игнорирую.
zlout, написал: код Unicode " ... у себя просто игнорирую.
Значит проблемы нет. Но Вы, zlout, меня в тупик поставили с этими кавычками, в текстовом редакторе вижу, в Excel не вижу. Удаляю из ячейки непечатаемые символы - удаляются кавычки в том числе. Не поняла почему кавычки стали непечатаемым символом??? Я не понимала как же добавить эти кавычки в необходимых местах, поэтому и написала, что не знаю, что делать в таких случаях (если только через доп.условие вставлять). Сделала вариант с Table.ToList (для тестирования во второй строке удалила данные "Высота/Ширина/Длина") ,без кавычек...)
pq_ToList
Код
let
f=(x)=>[ls=List.Buffer(List.Skip(x)),
a=List.PositionOfAny(ls,sp,Occurrence.First,(c,v)=>Text.Contains(Text.Lower(c),v)),
b=if a=-1 then {} else List.Skip(List.FirstN(ls,(w)=>not Text.Contains(Text.Lower(w),"нет")),a),
b1=List.Transform(b,(x)=>if List.Contains(num,x,(c,v)=>Text.Contains(v,c)) then Text.Combine(Text.Split(x," "),"||") else x),
c={Text.Combine(b1,"||")}&x][c],
from = Excel.CurrentWorkbook(){[Name="data"]}[Content],
num=List.Buffer({"0".."9"}),sp=List.Buffer({"высота","ширина","длина"}),
tr=Table.TransformColumns(from,{},(x)=>if x=null then "" else f_txtTrim(x)),
to=Table.FromList(Table.ToList(tr,f),(x)=>x,{"Высота/Ширина/Длина"}&Table.ColumnNames(from))
in
to
Наслаждайтесь утренним кофе! Отличного настроения на весь день! )