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

Страницы: 1 2 3 4 5 6 7 8 9 10 11 ... 61 След.
массовое соединение значений из строк, формула, макрос, pq - способ решения
 
evgeniygeo, только это не моя цитата :)
Думаю, ТС пытался код запроса вставить в макрос :)
Изменено: surkenny - 27.09.2022 17:41:09
массовое соединение значений из строк, формула, макрос, pq - способ решения
 
DJMC, это не код макроса. Это код запроса Power Query.
массовое соединение значений из строк, формула, макрос, pq - способ решения
 
evgeniygeo, а, я понял. Имеется в виду, что желтая строка начальной таблицы - это не шапка :) И изначальная таблица будет состоять из 2n строк. Ну тут-то тоже не проблема будет преобразовать каждые 2 строки в одну таблицу, где первая строка - заголовки, вторая значения. А потом уже преобразовать по моей логике каждую таблицу, объединить таблицы.
1. Как видим, ТЗ неоднозначно. Поэтому еще и другой вариант делать не буду :)
2. У ТС нет своих попыток. Основное сделано в моем запросе. Не сможет применить к реальным данным - пусть обращается в Работу :)
массовое соединение значений из строк, формула, макрос, pq - способ решения
 
evgeniygeo,
Если я правильно понял, то нужно из первой строки сделать последнюю, то есть ИТОГ.
Но вот этих строк может быть много (в примере одна).
Запрос обработает сколько угодно начальных строк и выдаст итоговые строки вместо них :)
массовое соединение значений из строк, формула, макрос, pq - способ решения
 
Такой вариант:
Код
let
  data = Excel.CurrentWorkbook(){[ Name = "data" ]}[Content],
  names = List.Buffer ( Table.ColumnNames ( data ) ),
  sortNames = List.Buffer ( List.Sort ( names, ( x ) => Number.From ( x ) ) ),
  transform = Table.FromRecords (
    Table.TransformRows (
      data,
      ( r ) =>
        [
          vals = List.Transform ( Record.FieldValues ( r ), ( x ) => Text.Split ( Text.BetweenDelimiters ( x, "(", ")" ), "," ) ),
          sortVals = List.Transform (
            Record.FieldValues ( Record.ReorderFields ( r, sortNames ) ),
            ( x ) => Text.Split ( Text.BetweenDelimiters ( x, "(", ")" ), "," )
          ),
          transform = List.Transform (
            List.Zip ( { vals, sortVals } ),
            ( x ) => Text.Combine ( { "(", Text.Combine ( List.Intersect ( x ), "," ), ")" } )
          ),
          firstVals = List.Transform ( Record.FieldValues ( r ), ( x ) => Text.BeforeDelimiter ( x, "-" ) ),
          resultLst = List.Transform ( List.Zip ( { firstVals, transform } ), ( x ) => Text.Combine ( x, "-" ) ),
          result = Record.ReorderFields ( Record.FromList ( resultLst, names ), sortNames )
        ][result]
    )
  )
in
  transform
Изменено: surkenny - 27.09.2022 12:52:28
Power Query Merge c условием
 
Цитата
Анна написал:
здесь выводятся только столбцы, по которым происходит mapping, так?
Нет. Здесь мы делаем объединение всех полей записи (строка таблицы - это запись, наименование полей - это наименования столбцов таблицы) строки таблицы Каталог с записью a. В записи a мы удаляем поле Наименование (в этот список можно еще через запятую добавить другие поля, которые не относятся к фильтрующим критериям) и оставляем записи с непустыми значениями. В итоге все записи строки таблицы Каталог, по именам совпадающие с записью a, будут заменены на значения из a.
То есть если строка row = [Год=2022, Код = 1, ЕщеЧтоТо = 10, Длина=10, Ширина = 15], а запись a = [Длина = 15], то на выходе имеем row & a = [Код=2022, Код = 1, ЕщеЧтоТо = 10, Длина=15, Ширина = 15] (Значение поле Длина заменилось на значение этого поля из записи a, остальные поля без изменений, так как их не было в записи a). Теперь просто сравниваем row и row & a. Приведенная для примера выше строка не подойдет:
[Год=2022, Код = 2, ЕщеЧтоТо = 12, Длина=10, Ширина = 15] & [Длина = 15] <> [Код=2022, Код = 2, ЕщеЧтоТо = 12, Длина=10, Ширина = 15]
А вот такая подойдет:
[Год=2022, Код = 2, ЕщеЧтоТо = 12, Длина=15, Ширина = 15] & [Длина = 15] = [Код=2022, Код = 2, ЕщеЧтоТо = 12, Длина=15, Ширина = 15].
В шаге b сохранены все столбцы таблицы Каталог, удовлетворяющие текущим значениям критериев таблицы Признаки. Далее уже делайте с ними все, что хотите.
Изменено: surkenny - 27.09.2022 11:57:28
Power Query Ошибка при применении Столбца сведения, При применении столбца сведения выдает ошибку "Слишком много элементов для выполнения операции"
 
Zagadka, а как Вы не путаетесь в бесконечно создаваемых столбцах и фильтрах? :)
Надеюсь, суть фильтров и замен понял правильно, проследить логику было тяжело :)
И попробовал понять, что же Вам нужно в результате:
Код
let
  src = Excel.CurrentWorkbook(){[ Name = "Таблица1" ]}[Content],
  typed = Table.TransformColumnTypes ( src, { { "Столбец3", type text }, { "Столбец4", type text }, { "Столбец5", type text } } ),
  filter = Table.SelectRows (
    typed,
    each not Text.Contains ( [Столбец3] ?? ".", "." ) and [Столбец3] <> [Столбец4] and not Text.StartsWith ( [Столбец3], "недвижимости:" )
  ),
  transform = Table.FromRecords (
    Table.TransformRows (
      filter,
      ( r ) =>
        Record.TransformFields (
          r,
          {
            {
              "Столбец3",
              ( x ) =>
                List.Accumulate (
                  {
                    { "Виды разрешенного использования объекта", "Виды разрешенного использования объекта недвижимости:" },
                    { "Виды разрешенного использования объекта недвижимости: недвижимости:", "Виды разрешенного использования объекта недвижимости:" }
                  },
                  x,
                  ( s, c ) => Text.Replace ( s, c{0}, c{1} )
                )
            },
            { "Столбец4", ( x ) => x ?? r[Столбец5] }
          }
        )
    )
  ),
  fillDown = Table.FillDown ( transform, { "Столбец1" } ),
  group = Table.Group (
    fillDown,
    { "Столбец1" },
    { { "tbl", ( t ) => Table.FromList ( { t[Столбец4] }, ( x ) => x, t[Столбец3] ), type table } },
    GroupKind.Local
  ),
  combine = Table.Combine ( group[tbl] )
in
  combine
Посчитать ошибку прогноза цена факт/план с учетом недели и наименование продукции
 
Massdr, не формулист, возможно, коллеги подскажут более оптимальный вариант :). Но можно так:
Код
=ЕСЛИОШИБКА(
   $C3 / МАКСЕСЛИ(forecast[[цена, план]:[цена, план]];forecast[[номер недели]:[номер недели]];$A3+D$2;forecast[[название позиция]:[название позиция]];$B3) - 1;
   ""
)
Power Query Merge c условием
 
whateverlover, вот так будет пошустрее (по сути разница в шаге b: при объединении записей значение одноименных полей берется из второй записи):
Код
let
  step1 = признаки, 
  step2 = Table.AddColumn (
    step1, 
    "Количество", 
    ( r ) =>
      [
        a = Record.SelectFields (
          r, 
          Table.SelectRows ( Record.ToTable ( Record.RemoveFields ( r, { "Наименование" } ) ), ( row ) => row[Value] <> null )[Name]
        ), 
        b = Table.SelectRows ( Каталог, ( row ) => row = row & a ), 
        c = List.Sum ( b[Количество] )
      ][c]
  )
in
  step2
Изменено: surkenny - 27.09.2022 01:28:57
Power Query Merge c условием
 
whateverlover, так я и не спорю. Проблема будет в
a null 1
b 1 null
Обе записи попадут в критерий Длина = 1
Power Query Merge c условием
 
whateverlover, пока только посмотрел задачу ТС.
При различии значений всех параметров задача тривиальна. Решаемо и при наличии одинаковых значений (ну будет там куб, дшв одинаковые :) ), но пока жопка с оптимальным кодом :) .
Давайте совместно подумаем :)
Изменено: surkenny - 26.09.2022 17:02:11
Power Query Ошибка при применении Столбца сведения, При применении столбца сведения выдает ошибку "Слишком много элементов для выполнения операции"
 
Zagadka, я с большой вероятностью предполагаю, что Вам нужно. Но я не хочу думать за Вас :)
Ну можно же вместо pivot использовать группировку и тупо транспонирование внутри группировки.
Или нельзя? :)
И лучше немного по-другому, но сложнее будет объяснить ;)
Я прошу помогающих притормозить. Мне надоели темы типа ЭТОЙ (уже миллион раз тут группировка и List.Generate внутри разбирались :) ).

Я могу ошибаться, пусть меня модераторы или коллеги поправят, но ТС должен (-а) подумать перед вопросом. Нужно помочь (в идеале - научить) с проблемой. А не решить за ТС.
Power Query Ошибка при применении Столбца сведения, При применении столбца сведения выдает ошибку "Слишком много элементов для выполнения операции"
 
Цитата
Zagadka написал:
На похожей таблице с гораздо большим количеством строк, "Столбец сведения" работал без проблем...
Очень сомневаюсь, что данные реально "похожи" :)
К сожалению, PQ не умеет думать за Вас.
Power Query Ошибка при применении Столбца сведения, При применении столбца сведения выдает ошибку "Слишком много элементов для выполнения операции"
 
Zagadka, глянул Ваш пример.
Я не понял, а какой результат Вы хотите получить от Table.Pivot?

Ошибки в Table.Pivot никакой нет.
Если хотите не агрегированные данные, можете посмотреть на результат:
Код
  #"Сведенный столбец" = Table.Pivot (
    #"Измененный тип1", 
    List.Distinct ( #"Измененный тип1"[Пользовательская.1] ), 
    "Пользовательская.1", 
    "Пользовательская.2", 
    ( x ) => x
  )

Только это вряд ли то, что Вам нужно.
В который раз убеждаюсь, что не зря пример данных и результата нужны :)
Изменено: surkenny - 26.09.2022 16:12:02
Power Query Ошибка при применении Столбца сведения, При применении столбца сведения выдает ошибку "Слишком много элементов для выполнения операции"
 
Zagadka, при чем тут количество строк?
Таблицу
x a
x b
Вы не сведете, потому что Вы не указали PQ, что делать со списком { “a”, “b” }.
Перечитайте мое сообщение. Если для какой-то строки и столбца уже сведенной таблицы будут соответствовать несколько строк плоской, то там будет ошибка. Потому что у Вас несколько значений. С ними нужно что-то сделать: просуммировать, конкатенировать, вывести только первое и тп.
Power Query Ошибка при применении Столбца сведения, При применении столбца сведения выдает ошибку "Слишком много элементов для выполнения операции"
 
Дмитрий(The_Prist) Щербаков, тут ошибка именно в том, что Вы указали :)
Zagadka, в результирующих «ячейках» сведения изначально список значений, которые попадают под условие текущей строки и столбца. Список может быть пустым {}, с одним значением {«а»}, и несколькими значениями {«а», «б», …}. Зависит от того, сколько значений соответствует пересечению строки и столбца.
Вы указываете «не агрегировать», что, в случае нескольких элементов, даст ошибку.
Чтобы из списка получить текст с перечислением всех элементов списка воспользуйтесь последним аргументом Table.Pivot - агрегирующей функцией.
К примеру, Table.Pivot ( …, (x) => Text.Combine ( x, “;#(lf)” ) ).
Все значения будут разделены ; и переносом строки.
Изменено: surkenny - 26.09.2022 15:02:36
Power Query отсечение лишних строк
 
deffocus, а Вы с PQ совсем не работаете? :) Чуть измените: добавьте условие firstNCdate = null:
Код
let
  src = Excel.CurrentWorkbook(){[ Name = "Таблица1" ]}[Content],
  typed = Table.TransformColumnTypes ( src, { { "Дата", type date }, { "Параметр4", Int64.Type } } ),
  group = Table.Group (
    typed,
    { "Параметр1", "Параметр2" },
    {
      {
        "tbl",
        ( t ) =>
          [
            firstNCdate = List.Min ( Table.SelectRows ( t, ( r ) => r[Параметр3] = "не Call" )[Дата] ),
            filter      = if firstNCdate = null then t else Table.SelectRows ( t, ( r ) => r[Дата] <= firstNCdate )
          ][filter],
        type table
      }
    }
  ),
  combine = Table.Combine ( group[tbl] )
in
  combine
Изменено: surkenny - 26.09.2022 14:47:19
Сохранение строк с формулами ниже сводной при её обновлении., Строки ниже сводной
 
Скорее всего, можно простота сводной (точнее, в Power Pivot) сделать эту строку, и нет проблемы :). Без примера не могу однозначно сказать.
Power Query. Формулы на языке М, Потребность в "простых" математические действиях на языке М
 
Цитата
VolodiaVG написал:
Мои источники несколько непредсказуемы…
И в случае математической некорректности… они (источники) понимают, и предупреждены об этом.
Вы там поаккуратнее с тем, что курите:)

Я так и не понял, что хочет ТС. Если вы хотите избежать результата null для суммы, то можно:

1. a + b = List.Sum ( { a, b } )
a - b = List.Sum ( { a, -b } )

2. a + b = a??0 + b??0
a - b = a??0 - b??0

a??0 - значит «Если a равно null, то заменяем на 0, иначе a».
Power Query. Формулы на языке М, Потребность в "простых" математические действиях на языке М
 
Можно так: [Clmn1]??0 + [Clmn2]??0.
Ну и с любыми остальными действиями в примере.
Скобки а примере ни к чему. Они не меняют порядок действий :)
a??b эквивалентно if a <> null then a else b.
Power Query отсечение лишних строк
 
Михаил Л, без сортировки в запросе - легко :) Во вложении изменил одну цифру в одной дате :)
И еще вариантик:
Код
let
  src = Excel.CurrentWorkbook(){[ Name = "Таблица1" ]}[Content],
  typed = Table.TransformColumnTypes ( src, { { "Дата", type date }, { "Параметр4", Int64.Type } } ),
  group = Table.Group (
    typed,
    { "Параметр1", "Параметр2" },
    {
      {
        "tbl",
        ( t ) =>
          [
            firstNCdate = List.Min ( Table.SelectRows ( t, ( r ) => r[Параметр3] = "не Call" )[Дата] ),
            filter      = Table.SelectRows ( t, ( r ) => r[Дата] <= firstNCdate )
          ][filter],
        type table
      }
    }
  ),
  combine = Table.Combine ( group[tbl] )
in
  combine
Изменено: surkenny - 23.09.2022 23:56:30
DAX PBI Вычисление частично не принятых товаров.
 
Антон, пример где? Его гораздо легче составить, чем нам по Вашей неработающей мере понять, что и как нужно сделать.
Пример должен быть простой. Не 100 столбцов в каждой из 10 таблиц. Но отражающий суть Вашего вопроса. А потом Вы уже переложите решение на реальные данные.
Изменено: surkenny - 23.09.2022 12:02:41
Расчет плана (графика) отгрузки с завода с учетом заданного плана продаж.
 
Виталий Бермес, я и не говорил, что не нужно решать в PP. Я как раз за:)
Я говорил о том, что, чтобы Вам помочь, нужно много времени потратить на понимание Вашей модели. А само решение будет не сильно интересным для меня, потому что уже 1000 раз подобное выражение на Dax писал.
А если потраченное мной время не соответствует полученному удовлетворению от решения, то разницу может скомпенсировать только материальное поощрение :)
И я это заранее. Еще даже не смотрел Ваш пример.
Vladimir Ch уже отписался, поэтому до упрощенной модели и не буду смотреть :)
Расчет плана (графика) отгрузки с завода с учетом заданного плана продаж.
 
Виталий Бермес,
Я что-то пропустил Вашу тему. Сегодня времени нет, завтра гляну.
Но по описанию очень похоже на платное ТЗ :)
И дело не в том, что у Вас что-то не реализовано. А в том, чтобы что-то исправить/добавить нужно разобраться в Вашей модели и данных.
И далеко не факт, что это прям интересная для DAX задача :)
Изменено: surkenny - 21.09.2022 18:08:08
Добавить столбец во вложенную таблицу со значением из родительской, PQ
 
whateverlover,
в Table.TransformColumns вы можете обращаться только к значению изменяемого столбца, но не к другим.
Используйте Table.TransformRows(table, (row)=> ... ). Где row - это запись (имена полей - имена столбцов) со значениями текущей строки. Результатом будут записи строк, оберните в Table.FromRecords(Trable.TransformRows()).
Можно и тип сохранить Table.FromRecords(Trable.TransformRows(), Value.Type (#"Предыдущий шаг"))
Изменено: surkenny - 21.09.2022 16:47:32
Прирост бюджетов друг к другу., DAX прирост бюджетов друг к другу
 
Цитата
Розочка написал:
пробовала через dateadd
Где Вы это пробовали?
Таблица не загружена в модель. Где Вы вообще DAX выражения прописывали? :)

Можно так:
Код
Бюджет дельта :=
VAR curSum =
    SUM ( data[Рубли без НДС] )
VAR firstDataDate =
    CALCULATE ( MIN ( data[Год] ); ALL ( data ) )
VAR curDate =
    MAX ( data[Год] )
VAR prevDate =
    CALCULATE (
        MAX ( data[Год] );
        ALL ( data[Версия бюджета] );
        data[Год] < curDate
    )
VAR prevSum =
    CALCULATE (
        SUM ( data[Рубли без НДС] );
        ALL ( data[Версия бюджета] );
        data[Год] = prevDate
    )
VAR result =
    IF ( HASONEVALUE ( data[Год] ) && curDate > firstDataDate; curSum - prevSum )
RETURN
    result
Тире в названии параметра Powe Query
 
super_damage_fast_2016,
#"per-page"
Извлечение иерархии из перечня данных, Многоуровневая древовидная структура в виде таблицы из сплошного перечня данных. Найти точку выхода при наличии точки входа и нескольких этапов перегруппировки.
 
Odysseus, что-то мне лень было Ваш запрос смотреть. Вот динамический вариант с List.Generate:
Код
let
  src = #"Получаем уровни иерархии из 1С",
  maxLvl = List.Max ( src[Уровень] ),
  recs = List.Buffer ( Table.ToRecords ( src ) ),
  generate = List.Generate (
    () =>  [
      i         = 0,
      lvlValues = List.ReplaceRange ( List.Repeat ( { { null, null } }, maxLvl ), recs{i}[Уровень] - 1, 1, { { recs{i}[Код], recs{i}[Класс] } } )
    ],
    each [i] < List.Count ( recs ),
    each [
      i = [i] + 1,
      lvlValues = List.FirstN ( [lvlValues], recs{i}[Уровень] - 1 )
        & { { recs{i}[Код], recs{i}[Класс] } }
        & List.Repeat ( { { null, null } }, maxLvl - recs{i}[Уровень] )
    ],
    each if try recs{[i]}[Уровень] >= recs{[i] + 1}[Уровень] otherwise true then List.Combine ( [lvlValues] ) else null
  ),
  toTable = Table.FromRows (
    List.RemoveNulls ( generate ),
    List.Accumulate ( { 1 .. maxLvl }, {}, ( s, c ) => s & { "lvl_" & Text.From ( c ) & "_id", "lvl_" & Text.From ( c ) & "_name" } )
  )
in
  toTable
Изменено: surkenny - 19.09.2022 09:53:40
Сбор артикулов из разных столбцов, напротив которых есть цифры, Цель - сделать две колонки с артикулом и количеством, собрав их из разных столбцов
 
whateverlover,
Универсальные (по скорости таки же, как прошлые):
Код
let
  Источник = Excel.CurrentWorkbook(){[ Name = "Таблица" ]}[Content],
  toLst    = Table.ToList ( Источник, ( x ) => List.Select ( List.Zip ( { x, List.Skip ( x, 1 ) } ), ( y ) => y{1} is number and y{0} <> null ) ),
  combine  = List.Combine ( toLst ),
  toTbl    = Table.FromRows ( combine, type table [ Артикул = text, Количество = number ] ),
  group    = Table.Group ( toTbl, { "Артикул" }, { { "Количество", each List.Sum ( [Количество] ), type number } } )
in
  group

Код
let
  Источник = Excel.CurrentWorkbook(){[ Name = "Таблица" ]}[Content],
  unpivotRows = Table.FromColumns (
    { Table.ToList ( Источник, ( x ) => Table.FromColumns ( { x, List.Skip ( x, 1 ) }, { "Артикул", "Количество" } ) ) },
    { "tmp" }
  ),
  expand = Table.ExpandTableColumn ( unpivotRows, "tmp", { "Артикул", "Количество" } ),
  filter = Table.SelectRows ( expand, each [Количество] is number and [Артикул] <> null ),
  group = Table.Group ( filter, { "Артикул" }, { { "Количество", each List.Sum ( [Количество] ), type number } } )
in
  group

Код
let
  Источник = Excel.CurrentWorkbook(){[ Name = "Таблица" ]}[Content],
  unpivotRows = Table.AddColumn (
    Источник,
    "tmp",
    ( r ) =>
      [ values = Record.FieldValues ( r ), result = Table.FromColumns ( { values, List.Skip ( values, 1 ) }, { "Артикул", "Количество" } ) ][result],
    type table
  )[[tmp]],
  expand = Table.ExpandTableColumn ( unpivotRows, "tmp", { "Артикул", "Количество" } ),
  filter = Table.SelectRows ( expand, each [Количество] is number and [Артикул] <> null ),
  group = Table.Group ( filter, { "Артикул" }, { { "Количество", each List.Sum ( [Количество] ), type number } } )
in
  group
Промежуточные итоги накопительного итога DAX, Как посчитать накопительный итог в промежутке вермени
 
Татьяна Каргапольцева, а где пример?
Что такое «накопительный итог в промежутке времени»?
Если предположить, что пользователь выбирает в фильтре ноябрь 21 - февраль 22, и в строке/столбце января 22 таблицы должны быть продажи за ноябрь 21 - январь 22, то просто замените ALL на ALLSELECTED.
Изменено: surkenny - 17.09.2022 12:11:14
Страницы: 1 2 3 4 5 6 7 8 9 10 11 ... 61 След.
Наверх