Страницы: 1
RSS
Создание Столбца по условию(если содержится слово РАСЧЕТ) Power Query, подсказать функцию
 
Коллеги Добрый День!.
Сложилась такая проблема можно ли создать столбец по условию если содержит к примеру только слово РАСЧЕТ ну и прописывается полностью в новом столбце уже содержания этого слова в ячейки а если не содержит то null.
В функции по созданию столбца отсутствует возможность создавать именно по содержанию, может это можно как то обойти подскажите пжл .

Спасибо

 
 
В окошке для формул по созданию текстового столбца нужно написать:
Код
= if Text.Contains( [Column2], "РАСЧЕТ" ) then [Column2] else null
Вот горшок пустой, он предмет простой...
 
Да встала супер пасиб но теперь появились ошибки я и перевёл всё в текст до добавления столбца всё равно ошибки.
Что может быть как думаете?
 
Александр L , у вас там попадаются цифры, null - отсюда и ошибка. Столбец содержит смешанные данные. Перед операцией, которую вам написал PooHkrd,преобразуйте столбец в текст.

Еще второй вариант, но правильнее работать с нормальными данными:
Код
= try if Text.Contains( [Column2], "РАСЧЕТ" ) then [Column2] else null otherwise null
Изменено: Alexey_Spb - 31.01.2019 18:01:32
 
Да теперь как в аптеке.
Подскажите а что значит otherwise вы применяете три аргумента?
 
try проверяет выражение внутри этой конструкции и при ошибке возвращает то что идет после otherwise.

То есть если в ячейке не строка, то возникате ошибка, которая обрабатывается try и заменяется на null.

Alexey_Spb, я опять после Вас убираю! Зачем здесь пустая строка? Зачем в предыдущем ообщении цитата (удалена)? Зачем в предыдущем сообщении  по две пустых подряд (почищено)?
 
Цитата
Александр L написал:
но теперь появились ошибки
Ну если так не аккуратно работаете с данными, то можно модифицировать
Код
= if Text.Contains( Text.From( [Column2] ), "РАСЧЕТ" ) then [Column2] else null

Хотя и вариант Алексея тоже рабочий.
Вот горшок пустой, он предмет простой...
 
Наверное нет смысла создавать новую тему, лучше продолжить эту...?
Текстовый столбец с данными [Column1] иногда содержит текст только подобного формата "11105074040005120", т.е. семнадцатизначное число, записанное в текстовом формате и больше ни чего.
Как правильно с условием ЕСЛИ сделать проверку на наличие числа в [Column1]?
= if Text.Contains( Text.From( [Column1] ), ??? ) then [Column2] else null
какое условие записать под ???. Или совсем не так нужно...
Изменено: Zagadka - 05.04.2022 12:35:46
 
Цитата
Zagadka написал:
сделать проверку на наличие числа в [Column1]
Какого числа? Просто проверить, что в [Column1] число? Или сравнить с данными в [Column123]? Или сравнить с конкретным числом 555?
Не просто же так в правилах форума обязательно прикладывать пример для задачи.
Изменено: surkenny - 05.04.2022 11:31:35
 
surkenny, файл добавлен. Да, проверить, что только число и больше ни чего нет, которое, скорее всего будет в формате ТЕКСТ.
Изменено: Zagadka - 05.04.2022 12:37:21
 
Zagadka, можно так:
Код
  addClmn  = Table.AddColumn ( Источник, "Column3", each if try Number.From ( [Column1] ) is number otherwise false then null else [Column2] )
 
surkenny, сенкс))
 
Друзья!
Чтобы не плодить новые темы, решил спросить тут, так как задача схожая с первым запросом.

В архиве, который я прикрепляю, файл, который обращается к другому файлу в папке, которая находится также в этом архиве. Не знаю, как правильно обращаться с подобным вопросом, поэтому решил сделать так.

Суть задачи, которую я решаю. Банк присылает выписки, которые я собираю в умную таблицу и далее в сводные таблицы. Проблема данной выписки в том, что в некоторых полях "Зачисление" и "Списание" ячейки на первый взгляд пустые, но на самом деле что-то в себе содержат, по крайней мере PQ не воспринимает их пустыми. При визуальной проверке строка формул пуста, нет ни пробелов, ни чего-то другого. Однако при нажатии клавиши "Delete" в этих ячейках, PQ начинает воспринимать их пустыми и обозначает их как "null". И именно такое значение "null" позволяет мне добавить условный столбец "Статья", корректно указав в нём "Доход" и "Расход".

И вот эти "непустые" ячейки мешают PQ нормально работать. Как решить данную проблему я не знаю, так как начал пользоваться PQ пару дней назад, хотя сам Excel знаю уже более 20 лет, свободно пишу формулы и т. д.

Помогите, пожалуйста, решить мою проблему.
Изменено: Виталий - 16.08.2022 22:37:42
 
Вам нужно сперва все пустые заменить на null
 
Цитата
написал:
Вам нужно сперва все пустые заменить на null
Как это сделать в PQ?
Потому что если делать это вручную, то теряется смысл данной таблицы, сбора данных и автоматизация процесса в целом.
 
В условный столбец можно прописать 2 условия.

Код
Table.AddColumn(#"Changed Type", "Пользовательский", each if [Column19] = null then 1 else if [Column19] = "" then 1 else 3)


По поводу предыдущего сообщения - в PQ есть кнопка "Замена значений"на закладке "Главная" (или по ПКМ для текстовых столбцов)
Изменено: Xel - 17.08.2022 12:39:43
 
Цитата

Код
    [URL=#]?[/URL]       1      Table.AddColumn(#  "Changed Type"  ,   "Пользовательский"  , each if [Column19] = null then 1 else if [Column19] =   ""   then 1 else 3)   
 
При вводе этой формулы пишет:
Expression.Error: Имя "Changed Type" не распознано. Убедитесь в том, что оно написано верно.
 
Виталий, 20 лет же занимаетесь excel - значит, логика у Вас должна работать. Или я не прав? :) Читайте описание функции на сайте MS. Первый аргумент функции - таблица. Какая таблица? Наверное, содержащаяся в предыдущем шаге (может, и в другом - не суть). Вам нужно указать эту таблицу: напишите внутри #” “ имя предыдущего шага и 99%, что будет то, что нужно :)
 
Xel, surkenny, Благодарю. Формула сработала после исправления, как написано в комментарии surkenny.
 
Цитата
написал:
Проблема данной выписки в том, что в некоторых полях "Зачисление" и "Списание" ячейки на первый взгляд пустые, но на самом деле что-то в себе содержат, по крайней мере PQ не воспринимает их пустыми.
Может попробовать с помощью Character.ToNumber найти числовое значение этого невидимого символа, чтобы понять потом, что там за символ? Скорее всего, како-то не печатный, типа разрыва строки...
 
Цитата
Виталий написал:
Благодарю. Формула сработала после исправления,
Упс, извините. Это была иллюстрация того, что задача решаема "с кнопок".
При добавлении условного столбца можно просто заполнить два условия, null  и "" для данного примера.
Цитата
Zagadka написал:
Может попробовать с помощью Character.ToNumber найти числовое значение этого невидимого символа, чтобы понять потом, что там за символ? Скорее всего, како-то не печатный, типа разрыва строки...
Символ можно глянуть попытавшись сделать замену значений, сразу будет, что скопировать в условие. Но в данном случае там просто пустая строка "".
Изменено: Xel - 17.08.2022 15:19:39
 
Цитата
написал:
Упс, извините.
Что Вы! Не стоит извиняться! :) Вы мне очень помогли, я догадывался, что синим написано то, что я должен отредактировать, но я не знал, что именно там должно быть.
А что, кстати, обозначает ""? Как PQ понимает это? Чем это отличается от null?
Изменено: Виталий - 17.08.2022 15:46:31
 
Кстати, я случайно нашёл другой способ решить свою проблему. Если сначала задать параметр столбца "десятичное число", то после этой операции во всех ячейках, не содержащих цифровые значения проставляется null. Соответственно, следующим шагом можно создать условный столбец стандартными средствами PQ, в котором подходит и нормально работает изначальное условие если null, то выводить одно, иначе выводить другое. Не вникая в программирование.
 
Цитата
Виталий написал:
А что, кстати, обозначает ""? Как PQ понимает это? Чем это отличается от null?
"" - это пустая текстовая строка. Она не равна 0, например, даже на уровне формул экселя бывают нюансы, хотя эксель это все туда-сюда как-то автоматически конвертирует.

null - это null, ничто, мрачная сущность, требует осторожного обращения https://habr.com/ru/news/t/463679/
Например, null не равен даже null, и уж тем более не равен 0 (числу) и пустому тексту, null + число = null и т.д.
Изменено: Xel - 17.08.2022 17:05:36
Страницы: 1
Наверх