Страницы: 1
RSS
Как в Power Query отрицательные значения заменить на 0 ?
 
Добрый день, подскажите как в Power Query отрицательные значения заменить на 0 ?
 
День добрый!
По условному столбцу (есть такая кнопка)  
В жизни нет ничего невозможного! Есть только недостаток знаний и умений.
 
Если в одном столбце то как-то так:
Код
let
    Источник = Table.FromList( {-5..5}, Splitter.SplitByNothing() ),
    ОтрицательныеВНоль = Table.TransformColumns(Источник, {{"Column1", each List.Max({ _, 0 }) , type number}})
in
    ОтрицательныеВНоль
Изменено: PooHkrd - 05.09.2018 16:29:22
Вот горшок пустой, он предмет простой...
 
Доброе время суток
Цитата
Александр написал:
По условному столбцу (есть такая кнопка)  
Коллега, а если таких столбцов несколько? Для каждого вызывать и удалять потом исходные? Можно же проще Одним махом всех побивахом
 
Андрей VG, У меня опыта мало, делюсь тем, что знаю:)
А вот спасибо, буду знать - как нить испробую
В жизни нет ничего невозможного! Есть только недостаток знаний и умений.
 
Андрей VG, так оно ж вроде конкретные значения заменяет, как там указать "все отрицательные"?
Вот горшок пустой, он предмет простой...
 
Привет, Алексей.
А кто сказал, что нужно использовать встроенные функции. Из справки
replacer - используется функция replacer, такая как Text.Replace или Value.Replace.
Updated
Следовательно, нужно написать свою функцию с двумя аргументами с тремя аргументами. по примеру VBA.Replace(ГдеИщем, ЧтоИщем, НаЧтоМеняем), где проверять, не является ли ГдеИщем < 0, ну, и по ситуации возвращать то что нужно.
Изменено: Андрей VG - 05.09.2018 20:32:19
 
Андрей VG, что-то не выходит у меня каменный цветок, а что тогда задавать в качестве 2 и 3 аргументов? Можете показать пример на моем коде из #3 ?
Вот горшок пустой, он предмет простой...
 
Цитата
PooHkrd написал:
а что тогда задавать в качестве 2 и 3 аргументов?
Да всё что угодно, всё равно не используются. :)  Например
Код
let
    Source = #table({"a", "b", "c"}, { {null, -1, #date(2000, 1, 1)}, {-5.5, "abc", 12}, {true, {1..4}, -14} }),
    replaced = Table.ReplaceValue(Source, null, null, (e, f, r) => if e is number then if e < 0 then 0 else e else e, {"a", "b", "c"})
in
    replaced
Изменено: Андрей VG - 05.09.2018 16:57:54
 
Ага, значит моя ошибка что я пытался сунуть туда функцию с одним аргументом, а надо с тремя.
Ну, век живи - век учись.
Андрей, как всегда огромное спасибо. Забираю в копилку.
Вот горшок пустой, он предмет простой...
 
да, кстати, это очень классная вещь. Я тут недавно ее где-то применял (кажется, где-то у нас на форуме) - replacer меняем на кастомный, и вуаля. Или сплиттер так можно на кастомный - главное, соблюсти формальности.
F1 творит чудеса
 
Цитата
Александр написал: По условному столбцу (есть такая кнопка)  
Можете скрин прислать ?
 
Цитата
Максим Зеленский написал:
да, кстати, это очень классная вещь.
Еще бы, если нужно в десятке столбцов по условию поменять чего, то через Table.TransformColumns упаришься функцию копировать для каждого столбца, да и читаемость никуда, а тут прямо халява!
Вот горшок пустой, он предмет простой...
 
покажите пожалуйста скрином
 
в PQ вкладка "Добавление столбца" -> раздел "Общие" -> кнопка "Условный столбец"
 
qwertylola, кнопка цитирования не для ответа [МОДЕРАТОР]


Цитата
Андрей VG написал: а что тогда задавать в качестве 2 и 3 аргументов? Да всё что угодно, всё равно не используются.  
я не умею кодить
 
Цитата
qwertylola написал:
я не умею кодить
А я не обладаю навыком телепатии. Но, в отличии от этой моей проблемы, у вас всё куда проще. 1. Вы можете научиться. 2 Можете обратиться в раздел Работа.
 
Решение во вложении!
 
Цитата
tdolgiy написал:
Решение во вложении!
А восклицание зачем? Как по мне, так Александр куда лучше предложение для любителей мышиного хардкода предложил, куда меньше этих нелепых телодвижений.
Изменено: Андрей VG - 05.09.2018 19:41:34
 
Цитата
Андрей VG написал: А восклицание зачем?
Тоже запрещено правилами? ;)  - стиль письма такой)
Я не претендую на красоту и не являюсь профи или даже любителем... Сделал как смог за пол минуты, возможно в этом и прелесть PQ. Иногда  результат нужен быстро

Цитата
Андрей VG написал:  Александр куда лучше предложение для любителей мышиного хардкода предложил.
У меня например нет условного столбца в PQ... Видать не последняя версия. Хотя excel 2016
 
Цитата
Андрей VG написал:
для любителей мышиного хардкода
Это что то обидное?
Цитата
tdolgiy написал:
нет условного столбца в PQ
У меня 13 стоит, на сколько мне известно - он должен быть у каждой версии (она предоставляется бесплатно)

З.Ы. Работоспособность данного условия не проверял
Изменено: Александр - 06.09.2018 09:28:01
В жизни нет ничего невозможного! Есть только недостаток знаний и умений.
 
Цитата
Александр написал:
Это что то обидное?
А это на сколько вам чувства юмора хватит  :D
Цитата
Александр написал:
У меня 13 стоит,
А значит PQ у вас - надстройка, т.е. её легко обновить до финальной версии отдельно от всего офиса. В 2016-ом это часть Excel и последнюю версию можно получить только обновив весь офис, а на рабочих компах это обычно не так часто происходит, админам зачастую - в лом.
Вот горшок пустой, он предмет простой...
 
Цитата
Андрей VG написал:
мышиного хардкода
Цитата
Александр написал:
Это что то обидное?
Не думаю. Это от слова "мышь", т.е. компьютерная. Мышиный хардкор - это когда все действия в PQ набиваются мышкой, а не написанием кода в расширенном редакторе. Поэтому сомневаюсь, что была попытка как-то обидеть, скорее наоборот - т.к. коды не всем понятны, а клацанье мышкой доступно каждому :)
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
PooHkrd, По поводу надстройки знаю, мне приходилось работать на 16 проблем не было, мб в какой то версии (урезанной) такая проблема присутствует

З.Ы. Значимость смайликов сильна :) По поводу хардкора - понимаю что это была казистая аллегория, надо было мне поставить :)  
В жизни нет ничего невозможного! Есть только недостаток знаний и умений.
 
Добрый день, подскажите, пожалуйста, как в данную формулу быстрее вписать функцию преобразования положительного значения столбца на отрицательное, нужно срочно, а голова совсем не включается сегодня :oops:

= Table.AddColumn(Источник, "Сумма*", each if [Столбец1] = "Выбытие" then [Сумма] else [Сумма])

на выходе должен получиться условный столбец, где при "Выбытии" сумма проставляется с минусом, при "Поступлении" с плюсом

Буду очень благодарна за помощь
 
Цитата
написал:
= Table.AddColumn(Источник, "Сумма*", each if [Столбец1] = "Выбытие" then [Сумма] else [Сумма])
= Table.AddColumn(Источник, "Сумма*", each if [Столбец1] = "Выбытие" then -[Сумма] else [Сумма])
Страницы: 1
Наверх