Выбрать дату в календареВыбрать дату в календаре

Страницы: 1 2 3 4 5 След.
Макрос копирование данных из файла в файл по условию
 
Пример. Дальше сами.
PQ, Web.Page(JS), регулярки - вытащить номера вхождений в строке
 
Еще вариант.
автоматическое формирование дней от месяца
 
Тогда вот так.
Изменено: Artem_1990 - 29.04.2025 10:48:20
Плюс из соседней ячейки в формулу.
 
Код
let
    from = Excel.CurrentWorkbook(){[Name="Таблица1"]}[Content],
    dct = [#"+"=(x,y)=>Value.Add(x,y),
           #"-"=(x,y)=>Value.Subtract(x,y),
           #"/"=(x,y)=>Value.Divide(x,y),
           #"*"=(x,y)=>Value.Multiply(x,y)],
    tr = Table.AddColumn(from,"tmp",(x)=>Record.Field(dct,x[Столбец2])(x[Столбец1],x[Столбец3]) )
in
    tr
Изменено: Artem_1990 - 28.04.2025 22:14:21
автоматическое формирование дней от месяца
 
Предложу вариант.
создать сводную таблицу из нескольких таблиц с помощью модели данных, или как в сводной таблице вычислить долю людей по городам м б другим способом
 
Dax.
Разделение одной ячейки на несколько строк
 
Вариант.
Код
 
let
    from = Excel.CurrentWorkbook(){[Name="Таблица1"]}[Content],
    nms=List.FirstN(List.Skip(Table.ColumnNames(from)),3),
    cols=List.Transform(nms,(x)=>{x,(y)=>Text.Split(y,"#(lf)")}),
    f=(x,i)=>if i>List.Count(nms)-1 then x else @f(Table.ExpandListColumn(x,nms{i}),i+1),
    to = f(Table.TransformColumns(from,cols),0)
in
   to



Изменено: Artem_1990 - 25.04.2025 18:04:45
Поиск минимальных значений из диапазона + вычленение уникальных позиций, вычленение уникальных позиций и поиск минимальных значений из одной ячейки, где указан диапазон.
 
Ещё вариант.
Изменено: Artem_1990 - 23.04.2025 20:37:28
При выборе значения в выпадающем списке подтянуть список операций
 
Такой ещё вариант.
Подтянуть все значения, Нужно подтянуть с одного файла и одного значения все значения которые относяться к этому значению
 
На кнопках.
фильр по диапазону
 
Вот такой вариант еще.
PQ. Разделить столбец на 4 столбца, Сложность в том, что разделителей нет, есть только три паттерна с переходами с буквы на цифру или с буквы на букву
 
Код
let
    from = Excel.CurrentWorkbook(){[Name="Команда_Образец"]}[Content],
    lst=List.Buffer({"А".."Я"}),
    count= List.Count(lst),   
    dct=Record.FromList(List.Repeat({1},count),lst),        
    f=(x)=>[
            b=Text.ToList(x),
            g=List.Transform(b,(x)=>Record.FieldOrDefault(dct,x,0)),
            pos=List.PositionOf(g,1,Occurrence.All),
            spl=Splitter.SplitTextByPositions(pos)(x) ,          
            to=if x=null  then {} else spl][to],
    spl=Table.SplitColumn(from,"Спецвозможности",f,{"1","2","3","4"})
in
    spl
Дублирование массива информации
 
PQ
Обратиться к значению ячеек в PQ
 
Вот пример
PQ.Переставить столбцы таблицы за наменьшее число ходов.
 
Код
=List.Sort(lst,(x)=>Text.Replace(x,"B","E"))
Изменено: Artem_1990 - 22.11.2024 11:03:40
Text.End + Text.PositionOf в Power Query, Значение не преобразуется в текст
 
Подправил
Text.End + Text.PositionOf в Power Query, Значение не преобразуется в текст
 
Код
let
    from = Excel.CurrentWorkbook(){[Name="Таблица1"]}[Content],
    f=(x)=>[
        a=List.Last(x),
        b=if a is null then -1 else Text.PositionOf(x{1},a),
        c=if b>-1 then Text.ReplaceRange(x{1},b,Text.Length(a),"") else null,
        d=if c is null then {} else Text.Split(c,". "),
        e=h("сделано за"),g=h("план на"),
        h=(x)=>List.PositionOf(d,x,Occurrence.First,(x,y)=>Text.Contains(x,y,Comparer.OrdinalIgnoreCase)),
        res=List.Skip(x,1)&{Text.Trim(c),if e>-1 then d{e} else null,if g>-1 then d{g} else null}
    ][res],
    to=Table.FromList(Table.ToList(from,f),(x)=>x,{"Новый","Старый","Новый1","Сделано","План"}) 
in
    to
Text.End + Text.PositionOf в Power Query, Значение не преобразуется в текст
 
Код
let
    from = Excel.CurrentWorkbook(){[Name="Таблица1"]}[Content],
    lst=Table.ToList(from,(x)=>[a=Text.Range(x{0},0,Text.PositionOf(x{0},x{1})-1),
                                b=Text.Split(a,". ")][b]),
    to=Table.FromList(lst,(x)=>x)                                
in
    to
Один из нескольких вариантов) и самый простой
Саундинг по крену и дифференту, Саундинг по крену и дифференту
 
Да найдите уже драфт- сюрвейра , он вам объяснит ))
PQ. Разное поведение функции Table.Max при выборе строк с максимальной датой (при наличии нескольких строк с одинаковыми датами), PQ.Table.Max
 
Я не специалист, но весьма интересно , накидал ради интереса еще примеры, добавил еще строку в таблицу и результат у обоих запросов - одинаковый)
А в старой таблице если функцию переписать так
{"a",(x)=>Date.From(Text.Split(x[e]," "){0})} или так
{"a",(x)=>Date.From(Splitter.SplitTextByDelimiter(" ")(x[e]){0})}
то результат одинаковый)
Изменено: Artem_1990 - 15.11.2024 19:38:12
PQ splitter.splittextbyanydelimiter только для конца текста
 
Код
let
    from = Excel.CurrentWorkbook(){[Name="Таблица1"]}[Content],
    lst=List.Buffer(список),
    c=List.Count(lst),
    len=(x)=>Text.Length(x),
    b=(x,y)=>if y+1>c then x
             else if lst{y}=Text.End(x,len(lst{y}))
             then [a=lst{y},l=len(a),c=Text.End(x,l),r=Text.Range(x,0,len(x)-l)][r] 
             else @b(x,y+1),
     l = Table.TransformColumns(from,{"заказ",(x)=>b(x,0)})
in
    l
Еще вариант
Как перетащить значение в начало
 
Код
="info@mail.ru,"&ПОДСТАВИТЬ(E4;"info@mail.ru,";"")
PQ и индексация (нумерация) строк по определенному алгоритму
 
Код
let
    from = Table.AddIndexColumn(Excel.CurrentWorkbook(){[Name="Таблица1"]}[Content],"ind",0,1),
    first=List.PositionOf(from[Нумерация],"Начало"),
    strt=iif(first),
    iif=(x)=> if Number.Mod(x,2)=0 then x+1 else x-1,
    lst = List.Buffer(from[Значение]),
    txt=(x)=>Text.From(x),
    dct = Record.FromTable(Table.RenameColumns(Table.Group(from,"Значение",{"Value",(x)=>x[ind]}),{"Значение","Name"})),
    f=(y,z)=>[a=lst{y},
                b=Record.Field(dct,a),
                c=List.Difference(b,{y}){0}?,  
                d=if c is null then  {Record.FromList({"Конец"},{txt(y)})}  else
                 {Record.FromList({z-1,z},{txt(y),txt(c)})}  & @f (iif(c),z+2)][d],
    cmb = Record.AddField(Record.Combine(f(strt,2)),txt(first),"Начало"),
    to = Table.AddColumn(from,"Seq",(x)=>Record.FieldOrDefault(cmb,txt(x[ind])))
in
    to
Согласен, на записях шустро.
PQ и индексация (нумерация) строк по определенному алгоритму
 
Код
let
    from = Excel.CurrentWorkbook(){[Name="Таблица1"]}[Content],
    g=(x,y,z)=>List.PositionOf(x,y,z,List.Contains),
    h=(x)=>if Number.Mod(x,2)=0 then x+1 else x-1,
    rpl=(x,y,z)=>List.ReplaceRange(x,y,1,z),
    fn=(x)=>List.FirstN(x,4),
    lst = List.Buffer(Table.ToList(from,(x)=>x)),
    start = g(lst,"Начало",0),
    pos = h(start),
    f=(x,p,i)=>[a=x{p}{2},
                ch=List.Difference(g(x,a,2),{p}),
                last=List.First(ch),    
                next=h(last), 
                con=if List.IsEmpty(ch) then rpl(x,p,{fn(x{p})&{"далее не найдено"}})
                    else if List.Count(ch)>1 then rpl(x,p,{fn(x{p})&{"Error"}}) else
                    @f([b=rpl(x,p,{fn(x{p})&{i-1}}),c=rpl(b,last,{fn(x{last})&{i}})][c],next,i+2)                 
               ][con],
    to = Table.FromList(f(lst,pos,2),(x)=>x,Value.Type(from))
in
    to
Query Отбор данных с учётом нескольких полей и вычислений, Оставить записи, отвечающие условию по результату вычисления над группой записей
 
Код
let
    from = Excel.CurrentWorkbook(){[Name="Add_Remove"]}[Content],
    nms=Table.ColumnNames(from),
    f=(x)=>[a=List.Sum(d(List.Last(nms))),
            b=List.Max(d(nms{3})),
            c=if a=0 then Table.FromList({{d(nms{0}){0},"Add/remove",0,b,0}},(x)=>x,Value.Type(from)) else null, 
            d=(y)=>Table.Column(x,y)
            ][c],
    to=Table.Combine(List.RemoveNulls(Table.Group(from,nms{0},{"tmp",f})[tmp]))
in
    to
Вставить пустые строки
 
Код
let
    from = Excel.CurrentWorkbook(){[Name="Таблица1"]}[Content],
    nms=Table.ColumnNames(from),
    max=Record.Field(Table.Max(from,List.Last(nms)),List.Last(nms)),
    lst = Table.ToList(from,(x)=>List.Combine({{x}, List.Transform({1..max},(x)=>List.Repeat({},List.Count(nms)))})),
    to = Table.FromList(List.Combine(lst),(x)=>x,Value.Type(from))
in
    to
Изменено: Artem_1990 - 19.10.2024 19:49:22
Язык-М. Найти окно в таблице, с кратчайшем промежутком времени.
 
Код
let
    from = Excel.CurrentWorkbook(){[Name="Таблица1"]}[Content],
    buf=(x)=>List.Buffer(x),
    lst=buf(from[Место]),
    lst1=buf(from[Время]),
    skp=List.Max(z(List.Reverse(lst))),
    z=(y)=>List.Transform({0..6},(x)=>List.PositionOf(y,x,Occurrence.First)),
    f=(y)=>[a=List.Skip(lst,y),
           b=z(a),
           c=List.FirstN(List.Skip(lst1,y),List.Max(b)+1),
           d=List.Min(c), e=List.Max(c),
           g={Time.From(e-d),d,e}][g],
    tr=buf(List.Transform({0..List.Count(lst)-skp-1},f)),
    min={List.Min(tr,null,(x)=>x{0})},
    tbl=Table.FromList(min,(x)=>x)
in
    tbl
Для разнообразия еще такой вариант :)  
Power Query добавить названия столбцов атрибутов в новые столбцы рядом и переименовать оригинальный столбец значения по шаблону, В итоге получив N пар колонок вида "название N" + "значение N"
 
Код
let
    from = Excel.CurrentWorkbook(){[Name="All"]}[Content],
    nms=List.Buffer(List.Skip(Table.ColumnNames(from))),
    f=(x)=>[a=List.Zip({nms,x,List.Repeat({1},List.Count(nms))}),
            b=List.Combine(List.Select(a,(x)=>not List.Contains(x,null)))][b],
    max=Text.From((List.Max(List.Transform(lst,List.Count))-1)/3),    
    newnms={"ID"}&List.Combine(List.Transform({"1"..max},(x)=>{"Attribute " & x & " Name","Attribute " & x & " Value","Attribute " & x & " Global"})),
    lst=Table.ToList(from,(x)=>{x{0}}&f(List.Skip(x))),
    to=Table.FromList(lst,(x)=>x,newnms)
in
  to
Язык-М. Найти окно в таблице, с кратчайшем промежутком времени.
 
Вы, на будущее, уважайте правила форума и давайте осмысленное название теме, тема интересная, но ее закрыли , решение мне самому не нравиться, думаю можно ускорить...
P.S Согласен, спасибо Михаилу.
Изменено: Artem_1990 - 27.09.2024 20:16:09
Язык-М. Найти окно в таблице, с кратчайшем промежутком времени.
 
Код
let
    from = Excel.CurrentWorkbook(){[Name="Таблица1"]}[Content],
    b=(x)=>List.Buffer(x),
    f=(x,y)=>[a=List.FirstN(List.Skip(lst,x),y),
              b=List.Distinct(a),
              c=if List.Count(b)=7 then
                [a=List.Range(lst1,x,y),b=List.Range(lst,x,y),c=Time.From(List.Max(a)-List.Min(a)),d={a,b,{c}}][d]
              else if y=List.Count(a)  then @f(x,y+1) else{}][c],
    lst=b(from[Место]),
    lst1=b(from[Время]),
    tr=b(List.Transform({0..List.Count(lst)-7},(x)=>f(x,7))),
    min = List.Transform(tr,(x)=>x{2}?{0}?),
    t=Table.FromColumns(tr{List.PositionOf(min,List.Min(min))})
in
    t
Я, вот так решал, подумал, что нужна выборка из таблицы.
Страницы: 1 2 3 4 5 След.
Наверх