List.PositionOf в действии

#АнатомияФункций – List.PositionOf



Всем привет!

Завершаем разбор задачи по поиску ключевых слов/фрагментов.

В чате был представлен отличный вариант:

let

f=(x)=>[z1=List.PositionOf(search,x,Occurrence.First,(c,v)=>Text.Contains(v,c)),

z2=if z1<>-1 then res{z1} else null][z2],



dict=Excel.CurrentWorkbook(){[Name="Таблица3"]}[Content],

search = List.Buffer(dict[Назначение платежа]),

res = List.Buffer(dict[Статья расходов]),



from = Table.PromoteHeaders(Excel.CurrentWorkbook(){[Name="data"]}[Content])[[Дата проведения],[Сумма в валюте счёта],[Назначение платежа]],

tr = Table.TransformColumns(from,{"Назначение платежа",Text.Lower}),

to = Table.TransformColumns(tr,{"Назначение платежа",f})

in

to




Но я предлагаю другой:

let

f=(x)=>((a)=>res{List.PositionOf(search,a,Occurrence.First,(c,v)=>Text.Contains(v,c))})(Text.Lower(x)),



dict=Excel.CurrentWorkbook(){[Name="Таблица3"]}[Content],

search = List.Buffer(dict[Назначение платежа]&{""}),

res = List.Buffer(dict[Статья расходов]&{null}),



from = Table.PromoteHeaders(Excel.CurrentWorkbook(){[Name="data"]}[Content])[[Дата проведения],[Сумма в валюте счёта],[Назначение платежа]],

to = Table.TransformColumns(from,{"Назначение платежа",f})

in

to




И вот как оно так и почему быстрее смотрим на дзене -

Исходники лежат на sponsr

А с ютубчиком увы… впн-ить админку, чтобы туда что-то залить – это уже перебор. (поправочка, если всё-таки зальётся, то будет тут)



Лайки, комменты, подписки приветствуются )))



Надеюсь, было полезно.

Всех благ!

@buchlotnik