Страницы: 1
RSS
Округление через язык М PQ
 
Можно как-то на языке М в рамках одного столбца прописать такое условие: если число до 100, то округление до 1, если от 100 до 1000 то округление до 10, если от 1000 то округление до 100.
У меня сейчас это разбито на разные столбцы, но может есть возможность в рамках одного столбца.
Спасибо.
 
Цитата
Денис написал:
на языке М
не знаю что такое но может так
Код
1
=ОКРУГЛ(A1/100;)
Лень двигатель прогресса, доказано!!!
 
Сергей, это вы про формулы? Я имею в виду делать округление через power query.
 
Для меня конечно вопрос, зачем это делать в PQ но все же вот, ссылку с примерами прилагаю
Код
1
Number.Round
https://msdn.microsoft.com/ru-ru/library/mt253380
 
Код
1
2
3
4
5
=if [столбец]>100
   then if [столбец]<1000
               then Number.Round([столбец], -1)
               else Number.Round([столбец], -2)
   else Number.Round([столбец], 0)
Попробуйте так
Вот горшок пустой, он предмет простой...
 
Илья Демид, так пока мне удобнее))
Не могу там найти округление всегда вверх, то есть 281 округляет до 290.
 
Код
1
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, при этом весьма желательно вверх?

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

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

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

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

 
n25@bk.ru, блин, что-то я даже не знаю, есть ли аналог в pq...
Но всегда можно найти обходное решение:
Код
1
Number.RoundUp ( [Число] / 5 ) * 5
 
surkenny, отличный вариант, спасибо!
 
Георгий, вообще всегда можно создать свою функцию, если ее нет в PQ:
Код
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
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
Читают тему
Loading...