Страницы: 1
RSS
Округление через язык М PQ
 
Можно как-то на языке М в рамках одного столбца прописать такое условие: если число до 100, то округление до 1, если от 100 до 1000 то округление до 10, если от 1000 то округление до 100.
У меня сейчас это разбито на разные столбцы, но может есть возможность в рамках одного столбца.
Спасибо.
 
Цитата
Денис написал:
на языке М
не знаю что такое но может так
Код
=ОКРУГЛ(A1/100;)
Лень двигатель прогресса, доказано!!!
 
Сергей, это вы про формулы? Я имею в виду делать округление через power query.
 
Для меня конечно вопрос, зачем это делать в PQ но все же вот, ссылку с примерами прилагаю
Код
Number.Round
https://msdn.microsoft.com/ru-ru/library/mt253380
 
Код
=if [столбец]>100 
   then if [столбец]<1000
               then Number.Round([столбец], -1)
               else Number.Round([столбец], -2)
   else Number.Round([столбец], 0)
Попробуйте так
Вот горшок пустой, он предмет простой...
 
Илья Демид, так пока мне удобнее))
Не могу там найти округление всегда вверх, то есть 281 округляет до 290.
 
Код
Number.Round(1.245, 2, RoundingMode.Up) equals 1.25  
Сори, оно походу так не округлит
Изменено: Илья Демид - 20.12.2017 16:43:59
 
Моя формула округляет до 280.
Вот горшок пустой, он предмет простой...
 
PooHkrd, а надо до 290))
 
Денис, Number.RoundUp
F1 творит чудеса
 
Максим Зеленский, вроде то, что надо. Благодарю)
 
PooHkrd, спасибо! Пригодилось!
Улыбнись.
 
интересная тема. но в пока формулу не разложил не совсем понимал что написано на М:

там примерно следующее:
Цитата
=ЕСЛИ(A1>100;ЕСЛИ(A1<1000;ОКРУГЛВВЕРХ(A1;-1);ОКРУГЛВВЕРХ(A1;-2));ОКРУГЛ(A1;0))
 
del
Изменено: buchlotnik - 21.08.2021 17:18:19
Соблюдение правил форума не освобождает от модераторского произвола
 
Добрый день, а можно средствами PQ округлять до числа кратного 5, при этом весьма желательно вверх?

Средствами эксель это легко реализуется формулой:
Код
=ОКРВВЕРХ.МАТ([@Данные];5)

Средствами PQ пока видится возможность округления до целых либо до десятков, например:

Код
Number.RoundUp([Данные],-1)

В формуле выше, если поставить -0,5 возникает ошибка.

 
n25@bk.ru, блин, что-то я даже не знаю, есть ли аналог в pq...
Но всегда можно найти обходное решение:
Код
Number.RoundUp ( [Число] / 5 ) * 5
 
surkenny, отличный вариант, спасибо!
 
Георгий, вообще всегда можно создать свою функцию, если ее нет в PQ:
Код
let
  func = ( Number as number, Multiplicity as number, optional RoundType as text ) =>
    if RoundType = "Up" then
      Number.RoundUp ( Number / Multiplicity ) * Multiplicity
    else if RoundType = "Down" then
      Number.RoundDown ( Number / Multiplicity ) * Multiplicity
    else
      Number.Round ( Number / Multiplicity ) * Multiplicity, 
  documentation = [
    Documentation.Name = " f_Round ", 
    Documentation.Description = " Округляет <code>Число</code> с указанной кратностью ", 
    Documentation.LongDescription = " Округляет <code>Число</code> с указанной кратностью ", 
    Documentation.Examples = {
      [
        Description = " Округление вверх ", 
        Code        = "  = f_Round( 11.1, 2, ""Up"" )", 
        Result      = "  12 "
      ], 
      [
        Description = " Округление вниз ", 
        Code        = "  = f_Round( 11.1, 2, ""Down"" )", 
        Result      = "  10 "
      ], 
      [
        Description = " Округление ", 
        Code        = "  = f_Round( 11.1, 2 )", 
        Result      = "  12 "
      ]
    }
  ]
in
  Value.ReplaceType ( func, Value.ReplaceMetadata ( Value.Type ( func ), documentation ) )
Страницы: 1
Читают тему
Наверх