Всем доброго времени суток!!! Помогите формулой, а то голова лопнет Есть колонка D в ней данные согласно базе пропусков Есть колонка A и B в ней данные, которые определила камера на въезде (сами понимаете что камера может ошибиться... то грязь... то снег....) Мне нужно что бы в любом столбике формула (не макрос) номера подбивал или исправлял опираясь на базу пропусков Заранее спасибо.
Всем доброго времени суток!!! Помогите формулой, а то голова лопнет Есть колонка D в ней данные согласно базе пропусков Есть колонка A и B в ней данные, которые определила камера на въезде (сами понимаете что камера может ошибиться... то грязь... то снег....) Мне нужно что бы в любом столбике формула (не макрос) номера подбивал или исправлял опираясь на базу пропусков Заранее спасибо.Ocharovashka666
я думала что можно что то типо сравнить столбик А с D и если на 95% сходиться, то с помощью ВПР подставить... Надеюсь ход моих мыслей смогла правильно преподнести..
я думала что можно что то типо сравнить столбик А с D и если на 95% сходиться, то с помощью ВПР подставить... Надеюсь ход моих мыслей смогла правильно преподнести..Ocharovashka666
Я смотрю камера нормально не косячит с раскладкой, всюду кириллица (не знаю что будет если вдруг приедет иностранная машина ), так что я бы просто с помощью например той же ВПР проверял есть номер в базе или нет, ну и ставил где-то рядом метку. Ну а там уже вручную смотреть - букву спутало например С с О, или цифру 3 с 8.
Я смотрю камера нормально не косячит с раскладкой, всюду кириллица (не знаю что будет если вдруг приедет иностранная машина ), так что я бы просто с помощью например той же ВПР проверял есть номер в базе или нет, ну и ставил где-то рядом метку. Ну а там уже вручную смотреть - букву спутало например С с О, или цифру 3 с 8.Hugo
руководство ввело новый отчет, а в нем и номер пропуска надо заполнить и организацию... это я с помощью ВПР уже сделала... а вот транзакций доходит до 2000 в день... и все по номера не реально целый день исправлять... тем более есть и другие отчеты.... помогите пожалуйста.... каждый день буду очень хорошими словами Вас вспоминать и благодарить
руководство ввело новый отчет, а в нем и номер пропуска надо заполнить и организацию... это я с помощью ВПР уже сделала... а вот транзакций доходит до 2000 в день... и все по номера не реально целый день исправлять... тем более есть и другие отчеты.... помогите пожалуйста.... каждый день буду очень хорошими словами Вас вспоминать и благодаритьOcharovashka666
иностранные не сверяем с базой пропусков... сверяем только тех, кто прошел через код 112... подрядчики... соответственно эти номера обязаны быть в базе пропусков
иностранные не сверяем с базой пропусков... сверяем только тех, кто прошел через код 112... подрядчики... соответственно эти номера обязаны быть в базе пропусковOcharovashka666
правильные номера уже ВПР делает свое дело... а не правильных штук по 200 как минимум (особенно в ночное время).. боюсь зимы... когда практически все номера будут с косяками...
правильные номера уже ВПР делает свое дело... а не правильных штук по 200 как минимум (особенно в ночное время).. боюсь зимы... когда практически все номера будут с косяками...Ocharovashka666
если не сложно, расскажите что это такое... я не особа сильна в экселе... научилась конечно очень многим формулам... спасибо этой работе... но... макрос вставлять готовый так и не смогла осилить... и что такое PQ.... видимо еще не знаю...(
если не сложно, расскажите что это такое... я не особа сильна в экселе... научилась конечно очень многим формулам... спасибо этой работе... но... макрос вставлять готовый так и не смогла осилить... и что такое PQ.... видимо еще не знаю...(Ocharovashka666
все, прочитала про то что Вы говорили... не совсем удобно... т.к. у нас 2500 пропусков... и опять же каждую транзакцию в ручную выбирать... времени столько же сколько и в ручную по фото сверить и исправить...
все, прочитала про то что Вы говорили... не совсем удобно... т.к. у нас 2500 пропусков... и опять же каждую транзакцию в ручную выбирать... времени столько же сколько и в ручную по фото сверить и исправить...Ocharovashka666
может как нибудь сделать так(грубый пример): Если $890МК190 искать ВПР D1:D3000- Если сходиться- заменить из колонки D...Если ошибка то- Н$90МК190 искать ВПР D1:D3000... и т.д... По практике камера ошибается на одну букву (либо изменяет Х на У , О на 0... или "съедает" одну цифру в основном в конце... хотябы за счет этого из 100 штук сократиться до 50... уже легче...
может как нибудь сделать так(грубый пример): Если $890МК190 искать ВПР D1:D3000- Если сходиться- заменить из колонки D...Если ошибка то- Н$90МК190 искать ВПР D1:D3000... и т.д... По практике камера ошибается на одну букву (либо изменяет Х на У , О на 0... или "съедает" одну цифру в основном в конце... хотябы за счет этого из 100 штук сократиться до 50... уже легче...Ocharovashka666
let from = Excel.CurrentWorkbook(){[Name="Камера"]}[Content], dict = List.Buffer(List.Transform(Excel.CurrentWorkbook(){[Name="Словарь"]}[Content][факт],Text.ToList)), f=(t)=>[a=Text.ToList(t), b = List.Transform(dict,each {_,List.Accumulate(List.Zip({_,a}),0,(x,y)=>if y{0}=y{1}then x+1 else x)}), c = List.Sort(b,(x,y)=>Value.Compare(x{1},y{1})), d = Text.Combine(List.Last(c){0})][d], g=(x,y) => [a=f(x),b=f(y),c=if a = b then a else a & " или " & b][c], to = Table.AddColumn(from,"tmp",each g([перед],[зад])) in to
[/vba]
медленнее, но точнее
[vba]
Код
let from = Excel.CurrentWorkbook(){[Name="Камера"]}[Content], dict = List.Buffer(Excel.CurrentWorkbook(){[Name="Словарь"]}[Content][факт]), i = (x,y)=>[a=try Text.ToList(x) otherwise {}, b=try Text.ToList(y)otherwise {}, c=List.Zip({a,b}), d=List.Accumulate(c,0,(x,y)=>if y{0}=y{1}then x+1 else x)][d], j=(x,y)=>[ a=Text.Split(x," "), b=Text.Split(y," "), c=List.Zip({a,b}), d=List.Accumulate(c,0,(x,y)=> x+i(y{0},y{1}))][d], f=(t)=>[a = List.Transform(dict,each {_,j(_,t)}), b = List.Sort(a,(x,y)=>Value.Compare(x{1},y{1})), c = List.Last(b){0}][c], g=(x,y) => [a=f(x), b=f(y), c=if a = b then a else a & " или " & b][c], to = Table.AddColumn(from,"tmp",each g([перед],[зад])) in to
let from = Excel.CurrentWorkbook(){[Name="Камера"]}[Content], dict = List.Buffer(List.Transform(Excel.CurrentWorkbook(){[Name="Словарь"]}[Content][факт],Text.ToList)), f=(t)=>[a=Text.ToList(t), b = List.Transform(dict,each {_,List.Accumulate(List.Zip({_,a}),0,(x,y)=>if y{0}=y{1}then x+1 else x)}), c = List.Sort(b,(x,y)=>Value.Compare(x{1},y{1})), d = Text.Combine(List.Last(c){0})][d], g=(x,y) => [a=f(x),b=f(y),c=if a = b then a else a & " или " & b][c], to = Table.AddColumn(from,"tmp",each g([перед],[зад])) in to
[/vba]
медленнее, но точнее
[vba]
Код
let from = Excel.CurrentWorkbook(){[Name="Камера"]}[Content], dict = List.Buffer(Excel.CurrentWorkbook(){[Name="Словарь"]}[Content][факт]), i = (x,y)=>[a=try Text.ToList(x) otherwise {}, b=try Text.ToList(y)otherwise {}, c=List.Zip({a,b}), d=List.Accumulate(c,0,(x,y)=>if y{0}=y{1}then x+1 else x)][d], j=(x,y)=>[ a=Text.Split(x," "), b=Text.Split(y," "), c=List.Zip({a,b}), d=List.Accumulate(c,0,(x,y)=> x+i(y{0},y{1}))][d], f=(t)=>[a = List.Transform(dict,each {_,j(_,t)}), b = List.Sort(a,(x,y)=>Value.Compare(x{1},y{1})), c = List.Last(b){0}][c], g=(x,y) => [a=f(x), b=f(y), c=if a = b then a else a & " или " & b][c], to = Table.AddColumn(from,"tmp",each g([перед],[зад])) in to
Если ошибка то- Н$90МК190 искать ВПР D1:D3000... и т.д...
это не сложно, но вот такое О 766 АВ 750, О 768 АВ 750 делает неоднозначным решение и тут или уже глазами или .... Также регион не всегда 3 цифры. Массивная
Если ошибка то- Н$90МК190 искать ВПР D1:D3000... и т.д...
это не сложно, но вот такое О 766 АВ 750, О 768 АВ 750 делает неоднозначным решение и тут или уже глазами или .... Также регион не всегда 3 цифры. Массивная
let from = Excel.CurrentWorkbook(){[Name="Камера"]}[Content], dict = List.Buffer(Excel.CurrentWorkbook(){[Name="Словарь"]}[Content][факт]),
z=(i,j)=>[a=t(i),b=t(j),c=List.Zip({a,b}),d=List.Transform(c,y)][d], y=(i)=> [a=i{0},b=i{1},c=if a=b then List.Transform(Text.ToList(a), each {_}) else x(a,b)][c], x=(i,j)=>[a=s(i),b=s(j),c=List.Zip({a,b}),d=List.Transform(c,each r(_{0},_{1}))][d], w=(i)=> [a=t(i),b=List.Transform(a, each List.Transform(Text.ToList(_), each {_}))][b], v=(i)=> [a=List.Transform(dict, each {_,List.Accumulate(List.Zip({w(_),i}),0,(s,c)=>s+u(c))}), b=List.Sort(a,(x,y)=>Value.Compare(x{1},y{1})),c=List.Last(b){0}][c], u=(i)=> [a=List.Zip({i{0},i{1}}), b=List.Accumulate(a,0,(s,c)=>try if List.ContainsAny(c{0},c{1}) then s+1 else s otherwise s)][b], t=(i)=> Text.Split(i," "), s=(i)=> try Text.ToList(i) otherwise {}, r=(i,j)=> if i=j then {i} else {i,j},
to = Table.AddColumn(from,"номер",each v(z([перед],[зад]))) in to
[/vba]
или с явной проверкой
[vba]
Код
let from = Excel.CurrentWorkbook(){[Name="Камера"]}[Content], d = List.Buffer(Excel.CurrentWorkbook(){[Name="Словарь"]}[Content][факт]),
z=(i,j)=>List.Transform(o(t(i),t(j)),y), y=(i)=> if i{0}=i{1} then List.Transform(Text.ToList(i{0}), each {_}) else x(i), x=(i)=> List.Transform(o(s(i{0}),s(i{1})),r), w=(i)=> List.Transform(t(i), each List.Transform(Text.ToList(_), each {_})), v=(i)=> List.Max(List.Transform(d, each {_,List.Accumulate(o(w(_),i),0,q)}),null,(x)=>x{1}){0}, u=(i)=> List.Accumulate(o(i{0},i{1}),0,p), t=(i)=> Text.Split(i," "), s=(i)=> if i = null then {} else Text.ToList(i), r=(i)=> if i{0}=i{0} then {i{0}} else {i{0},i{1}}, q=(i,j)=>i+u(j), p=(i,j)=>if List.Contains(j,null) then i else if List.ContainsAny(j{0},j{1}) then i+1 else i, o=(i,j)=>List.Zip({i,j}),
to = Table.AddColumn(from,"номер",each v(z([перед],[зад]))) in to
[/vba]
ну и наверное лучше просто столбцом выгрузить
[vba]
Код
let from = Excel.CurrentWorkbook(){[Name="Камера"]}[Content], d = List.Buffer(Excel.CurrentWorkbook(){[Name="Словарь"]}[Content][факт]),
z=(i)=>List.Transform(List.Zip({Text.Split(i{0}," "),Text.Split(i{1}," ")}),y), y=(i)=> if i{0}=i{1} then List.Transform(Text.ToList(i{0}), each {_}) else List.Transform(List.Zip({t(i{0}),t(i{1})}),s), w=(i)=> List.Transform(Text.Split(i," "), each List.Transform(Text.ToList(_), each {_})), v=(i)=> List.Max(List.Transform(d, each {_,List.Accumulate(List.Zip({w(_),i}),0,(i,j)=>i+u(j))}),null,(x)=>x{1}){0}, u=(i)=> List.Accumulate(List.Zip({i{0},i{1}}),0,r), t=(i)=> if i = null then {} else Text.ToList(i), s=(i)=> if i{0}=i{1} then {i{0}} else {i{0},i{1}}, r=(i,j)=>if List.Contains(j,null) then i else if List.ContainsAny(j{0},j{1}) then i+1 else i,
to = List.Transform(List.Zip({from[перед],from[зад]}),each v(z(_))) in to
[/vba]
по формуле - сам кусок рабочий, но результат - пусто; детально не разбирал - мне столько не выпить )))
вот ведь, лишь бы всё испортить... ЕСЛИОШИБКА:
[vba]
Код
let from = Excel.CurrentWorkbook(){[Name="Камера"]}[Content], dict = List.Buffer(Excel.CurrentWorkbook(){[Name="Словарь"]}[Content][факт]),
z=(i,j)=>[a=t(i),b=t(j),c=List.Zip({a,b}),d=List.Transform(c,y)][d], y=(i)=> [a=i{0},b=i{1},c=if a=b then List.Transform(Text.ToList(a), each {_}) else x(a,b)][c], x=(i,j)=>[a=s(i),b=s(j),c=List.Zip({a,b}),d=List.Transform(c,each r(_{0},_{1}))][d], w=(i)=> [a=t(i),b=List.Transform(a, each List.Transform(Text.ToList(_), each {_}))][b], v=(i)=> [a=List.Transform(dict, each {_,List.Accumulate(List.Zip({w(_),i}),0,(s,c)=>s+u(c))}), b=List.Sort(a,(x,y)=>Value.Compare(x{1},y{1})),c=List.Last(b){0}][c], u=(i)=> [a=List.Zip({i{0},i{1}}), b=List.Accumulate(a,0,(s,c)=>try if List.ContainsAny(c{0},c{1}) then s+1 else s otherwise s)][b], t=(i)=> Text.Split(i," "), s=(i)=> try Text.ToList(i) otherwise {}, r=(i,j)=> if i=j then {i} else {i,j},
to = Table.AddColumn(from,"номер",each v(z([перед],[зад]))) in to
[/vba]
или с явной проверкой
[vba]
Код
let from = Excel.CurrentWorkbook(){[Name="Камера"]}[Content], d = List.Buffer(Excel.CurrentWorkbook(){[Name="Словарь"]}[Content][факт]),
z=(i,j)=>List.Transform(o(t(i),t(j)),y), y=(i)=> if i{0}=i{1} then List.Transform(Text.ToList(i{0}), each {_}) else x(i), x=(i)=> List.Transform(o(s(i{0}),s(i{1})),r), w=(i)=> List.Transform(t(i), each List.Transform(Text.ToList(_), each {_})), v=(i)=> List.Max(List.Transform(d, each {_,List.Accumulate(o(w(_),i),0,q)}),null,(x)=>x{1}){0}, u=(i)=> List.Accumulate(o(i{0},i{1}),0,p), t=(i)=> Text.Split(i," "), s=(i)=> if i = null then {} else Text.ToList(i), r=(i)=> if i{0}=i{0} then {i{0}} else {i{0},i{1}}, q=(i,j)=>i+u(j), p=(i,j)=>if List.Contains(j,null) then i else if List.ContainsAny(j{0},j{1}) then i+1 else i, o=(i,j)=>List.Zip({i,j}),
to = Table.AddColumn(from,"номер",each v(z([перед],[зад]))) in to
[/vba]
ну и наверное лучше просто столбцом выгрузить
[vba]
Код
let from = Excel.CurrentWorkbook(){[Name="Камера"]}[Content], d = List.Buffer(Excel.CurrentWorkbook(){[Name="Словарь"]}[Content][факт]),
z=(i)=>List.Transform(List.Zip({Text.Split(i{0}," "),Text.Split(i{1}," ")}),y), y=(i)=> if i{0}=i{1} then List.Transform(Text.ToList(i{0}), each {_}) else List.Transform(List.Zip({t(i{0}),t(i{1})}),s), w=(i)=> List.Transform(Text.Split(i," "), each List.Transform(Text.ToList(_), each {_})), v=(i)=> List.Max(List.Transform(d, each {_,List.Accumulate(List.Zip({w(_),i}),0,(i,j)=>i+u(j))}),null,(x)=>x{1}){0}, u=(i)=> List.Accumulate(List.Zip({i{0},i{1}}),0,r), t=(i)=> if i = null then {} else Text.ToList(i), s=(i)=> if i{0}=i{1} then {i{0}} else {i{0},i{1}}, r=(i,j)=>if List.Contains(j,null) then i else if List.ContainsAny(j{0},j{1}) then i+1 else i,
to = List.Transform(List.Zip({from[перед],from[зад]}),each v(z(_))) in to
[/vba]
по формуле - сам кусок рабочий, но результат - пусто; детально не разбирал - мне столько не выпить )))прохожий2019