Страницы: 1
RSS
PQ замена значений в ячейках по условию
 
здравствуйте. сделаю еще одну тему по замене значений по условию. условие такое: если в столбце 1 значение "привет" и в столбце 2 значение "a", то заменить в столбце 1  значение "при" на "за"
не могли бы показать как это действие сделать
 
artyrH, а если не секрет, то с какой целью надо именно изменять? Почему нельзя сделать доп. столбец?
Вот горшок пустой, он предмет простой...
 
Цитата
PooHkrd написал:
именно изменять
глядя на еще одну тему по замене, подумал что может все таки можно заменить по условию. что то как в шаге с ошибкой или как пользовательская функция.
а так мне это только интересно.
 
в принципе, можно сделать дубльстолбец, затем в этом столбце сделать замену, затем создать польз. столбец и по условию выбрать значения из столбца-арегенала или дубльстолбца
 
Можно так:
Код
let
    Источник = Excel.CurrentWorkbook(){[Name="Таблица1"]}[Content],
    ИзмененныйТип = Table.TransformColumnTypes(Источник,{{"Столбец1", type text}, {"Столбец2", type text}}),
    Замена = Table.FromRecords( 
        Table.TransformRows( 
            ИзмененныйТип, 
            each [Столбец1 = if [Столбец1] = "привет" and [Столбец2] = "a" then Text.Replace( [Столбец1], "при", "за" ) else [Столбец1], 
                Столбец2 = [Столбец2]]
        ) 
    )
in
    Замена

Но, ИМХО это изврат, делать через Table.AddColumn проще и, подозреваю что быстрее.
Если что, источник мудроты отсюда.
Изменено: PooHkrd - 10.04.2019 18:44:20
Вот горшок пустой, он предмет простой...
 
PooHkrd, спасибо за вариант
Цитата
PooHkrd написал:
через Table.AddColumn проще
не могли бы показать как это сделать без дубльстолбца
 
Вариант2:
Код
let
    Источник = Excel.CurrentWorkbook(){[Name="Таблица1"]}[Content],
    ИзмененныйТип = Table.TransformColumnTypes(Источник,{{"Столбец1", type text}, {"Столбец2", type text}}),
    Замена = Table.FromRecords(
        Table.TransformRows(
            ИзмененныйТип,
            (r) => Record.TransformFields(
                r,
                {"Столбец1", each if r[Столбец1] = "привет" and r[Столбец2] = "a" then Text.Replace( _, "при", "за" ) else _} )
        )
    )
in
    Замена

Ну и тупой мышкоклацательный вариант:
Код
let
    Источник = Excel.CurrentWorkbook(){[Name="Таблица1"]}[Content],
    ИзмененныйТип = Table.TransformColumnTypes(Источник,{{"Столбец1", type text}, {"Столбец2", type text}}),
    #"Добавлен пользовательский объект" = Table.AddColumn(ИзмененныйТип, "Пользовательская", each if [Столбец1] = "привет" and [Столбец2] = "a" then Text.Replace( [Столбец1], "при", "за" ) else [Столбец1]),
    #"Другие удаленные столбцы" = Table.SelectColumns(#"Добавлен пользовательский объект",{"Пользовательская", "Столбец2"}),
    #"Переименованные столбцы" = Table.RenameColumns(#"Другие удаленные столбцы",{{"Пользовательская", "Столбец1"}})
in
    #"Переименованные столбцы"
Изменено: PooHkrd - 10.04.2019 18:58:58
Вот горшок пустой, он предмет простой...
 
Код
let
    Source = Excel.CurrentWorkbook(){[Name="Таблица1"]}[Content],
    Custom1 = Table.ReplaceValue(Source,each if [Столбец1]="привет" and [Столбец2]="a" then "при" else @_,"за",Replacer.ReplaceText,{"Столбец1"})
in
    Custom1
 
PooHkrd, спасибо за варианты
Андрей Лящук,  спасибо. я извиняюсь, а Ваш вариант быстрый? я просто не разбираюсь что быстро работает, а что медленно
 
проверка на скорость выполнения
 
Цитата
artyrH написал:
а Ваш вариант быстрый? я просто не разбираюсь что быстро работает, а что медленно
А проверить варианты и сравнить? Тот, что быстрее - быстрый.
 
Цитата
Юрий М написал: проверить варианты и сравнить
уже сравнил. самый быстрый - тупой мышкоклацательный)
 
artyrH, п тестировании для всех четырёх таблиц отключили в настройках подбор ширины? Это очень сильно влияет на скорость вывода результатов запроса на лист.
Вот горшок пустой, он предмет простой...
 
Цитата
PooHkrd написал:
отключили в настройках подбор ширины
у меня секунд двадцать занимает подбор ширины столбцов
 
Подскажите, плиз, где и как отключить этот подбор ширины столбцов?
Excel непознаваем как атом.
 
mtts54, Работа с таблицами - Конструктор - Данные из внешней таблицы - Свойства
 
Данные->свойства->задать ширину столбца
excel 2010
 
Спасибо  :)  
Excel непознаваем как атом.
 
Dark1589,у меня такого нет (Excel-2016)  :( . А тормозит действительно сильно.
Excel непознаваем как атом.
Страницы: 1
Наверх