Здравствуйте. Есть исходный текст входящей накладной, в примере [A1:A3] , в идеале хотелось бы на выходе получить результат как в [B12:H18]. Пока у меня получилось разделить по столбцам в определенном порядке [B7:O9], но это не совсем то, что нужно. Есть одно самое неприятное условие - использовать макросы запрещено. А вот дальше я не знаю куда двигаться и вообще возможно ли это сделать формулами, или наплевать на эту затею?
Здравствуйте. Есть исходный текст входящей накладной, в примере [A1:A3] , в идеале хотелось бы на выходе получить результат как в [B12:H18]. Пока у меня получилось разделить по столбцам в определенном порядке [B7:O9], но это не совсем то, что нужно. Есть одно самое неприятное условие - использовать макросы запрещено. А вот дальше я не знаю куда двигаться и вообще возможно ли это сделать формулами, или наплевать на эту затею?i691198
let lst={"вид","качество","упаковка","маркировка","брутто","выдано","дата выдачи"}, f=(x)=>Text.Split(x,"/"),
from = Excel.CurrentWorkbook(){[Name="TData"]}[Content][Column1], tr = List.Transform(from,f), tm = List.TransformMany(tr,(x)=>List.Split(List.Range(x,5),2),(x,y)=>{x{0},x{2},x{3}}&y), to=Table.FromList(tm,(x)=>x,lst,null) in to
[/vba]
UPD хотя вот так поэффективнее будет: [vba]
Код
let lst={"вид","качество","упаковка","маркировка","брутто","выдано","дата выдачи"}, f=(x)=>Text.Split(x{0},"/"),
from = Excel.CurrentWorkbook(){[Name="TData"]}[Content], tr = Table.ToList(from,f), tm = List.TransformMany(tr,(x)=>List.Split(List.Range(x,5),2),(x,y)=>{x{0},x{2},x{3}}&y), to=Table.FromList(tm,(x)=>x,lst,null) in to
[/vba]
до кучи PQ [vba]
Код
let lst={"вид","качество","упаковка","маркировка","брутто","выдано","дата выдачи"}, f=(x)=>Text.Split(x,"/"),
from = Excel.CurrentWorkbook(){[Name="TData"]}[Content][Column1], tr = List.Transform(from,f), tm = List.TransformMany(tr,(x)=>List.Split(List.Range(x,5),2),(x,y)=>{x{0},x{2},x{3}}&y), to=Table.FromList(tm,(x)=>x,lst,null) in to
[/vba]
UPD хотя вот так поэффективнее будет: [vba]
Код
let lst={"вид","качество","упаковка","маркировка","брутто","выдано","дата выдачи"}, f=(x)=>Text.Split(x{0},"/"),
from = Excel.CurrentWorkbook(){[Name="TData"]}[Content], tr = Table.ToList(from,f), tm = List.TransformMany(tr,(x)=>List.Split(List.Range(x,5),2),(x,y)=>{x{0},x{2},x{3}}&y), to=Table.FromList(tm,(x)=>x,lst,null) in to
прохожий2019, Спасибо, хорошее решение. Правда есть небольшая ошибка, перепутаны местами поля "качество" и "упаковка", но это я и сам могу подправить - в строке tm=... поменять порядок полей {x{0},x{2},x{3} на {x{0},x{3},x{2}. Но у меня есть большие сомнения, что это пригодится. В этой конторе слишком жесткая система компьютерной безопасности, почти все рабочие места отключены от интернета, программное обеспечение только из утвержденного списка, обмен данными только через сервер. В отделе МТС в распоряжении одно старье, в лучшем случае Office 2013 или ещё старше. Если под запрет попали макросы, то не удивлюсь, что и PQ под запретом. Даже если это не так, то все равно вероятность получения разрешение на скачивание и установки надстройки PQ близка к 0. Еще раз спасибо. (Плюсик поставил)
прохожий2019, Спасибо, хорошее решение. Правда есть небольшая ошибка, перепутаны местами поля "качество" и "упаковка", но это я и сам могу подправить - в строке tm=... поменять порядок полей {x{0},x{2},x{3} на {x{0},x{3},x{2}. Но у меня есть большие сомнения, что это пригодится. В этой конторе слишком жесткая система компьютерной безопасности, почти все рабочие места отключены от интернета, программное обеспечение только из утвержденного списка, обмен данными только через сервер. В отделе МТС в распоряжении одно старье, в лучшем случае Office 2013 или ещё старше. Если под запрет попали макросы, то не удивлюсь, что и PQ под запретом. Даже если это не так, то все равно вероятность получения разрешение на скачивание и установки надстройки PQ близка к 0. Еще раз спасибо. (Плюсик поставил)i691198