Как сделать, чтобы все строки увеличить по высоте на фиксированное число. Допустим исходная высота первой строки 0,5, второй строки 0,7, третьей 0,9. После увеличения на 0,3 получаем 0,8 для первой, 1,0 для второй, 1,2 для третьей. Ручной способ как вариант не подойдет, т.к. строк много.
Здравствуйте! "Очистить содержимое", "Выравнивание по значению (по левому краю, ...)" в ячейке не помогло. Предложите пожалуйста еще способы, что бы устранить проблему.
Вопрос решен. Использовала цикл for(..;..;..), вместо for..of
Код
let
fx=(a as text, b as number, delim as text)=>
Web.Page(
"<script>
x = '"& Text.From (a) &"';
y = '"& Text.From (b) &"';
z = '"& Text.From (delim) &"';
arr = x.split(z);
arrnew = [];
if (y > 0) {
for (i = 0; i < arr.length; i++) {
if ((y-arr[i]) < 0) {
arr[i] = -(y-arr[i]);
arrnew.push(arr[i]);
break;
}
y = y-arr[i];
arr[i] = 0;
arrnew.push(arr[i]);
}
}
arr.splice(0, arrnew.length);
result = arrnew.concat(arr).join(z);
document.write(result);
</script>")
in
fx
Светлана Клешнева написал: Функции List.Generate … не подходят для решения, потому что обрабатывается каждый элемент их списка.
Рекомендую все-таки нормально решить задачу на M, иначе столкнетесь с плохой производительностью.
Спасибо за совет! Конечно я так и сделаю. Но меня стало интересовать из любопытства. Обернула number в Text.From( ... ), как советовал te1n, но появилась следующая ошибка:
Expression.Error: Аргументы 3 были переданы функции, которая ожидает 2
После чего добавила в функцию 3-ий параметр - delim. Теперь мой код выглядит так (см ниже). Но я не могу увидеть результат, потому что при разворачивании таблицы отсутствует элемент BODY. В чем причина его отсутствия? Подскажите, плиз!!!
Содержание задачи: Дано a = "0, 500, 0, 0, 2000, 0, 0" ; b = 1000 delim = " , " ; Найти: result
Решение: 1. x преобразуется в массив arr через метод split; 2. при условии (y>0) == true, срабатывает цикл for .. of, который перебирает каждый элемент i массива arr 3. внутри цикла for .. of происходит следующее:
при условии ((y-i)<0) == true, вычисляется выражение (-(y-i)), которая становиться значением элемента i нового пустого массива arrnew, после чего цикл прерывается командой break;
при условии ((y-i)>0) == false, вычисляется новое значение у, очередному элементу i массива arr присваивается значение 0, которое добавляется в массив arrnew
4. дальше происходит конкатенация массивов arrnew и arr (из оставшихся элементов) через метод concat и преобразование получившегося массива в строку через метод join
Результат:
result = "0, 0, 0, 0, 1500, 0"
Код
let fx=(a as text, b, delim as text)=>
Web.Page(
"<script>
var x = '"& a &"';
var y = '"& Text.From(b) &"';
var z = '"& delim &"';
var arr = x.split(z);
var arrnew = [];
if (y > 0) {
for (let i of arr) {
if ((y-i) < 0) {
i = -(y-i);
arrnew.push(i);
break;
}
y = y-i;
i = 0;
arrnew.push(i);
}
}
arr.splice(0, arrnew.length);
var result = arrnew.concat(arr).join(z);
document.write(result);
</script>")
in
fx
Здравствуйте! Не смогла придумать решение (прерывающийся цикл) на языке формул Power Query М. Функции List.Generate и List.Accumulate не подходят для решения, потому что обрабатывается каждый элемент их списка. Поэтому написала скрипт (прерывающийся цикл) на языке JavaScript. Но теперь не могу встроить этот скрипт в Power Query. В запросе Сверхтираж на последнем шаге ошибка: Expression.Error: Не удается применить оператор & к типам Text и Namber. Помогите, плиз!
Во вложении два файла (книги): Разноска заявки и Спуск обработчик. Разноска заявки является источником в запросе Сладком книги Спуск обработчик.
Мне нужно чтобы текстовое распределение по столбцам U, W, Y происходила таким образом: из столбца С номер штампа (#число или Dчисло) отразился в столбце U, а по следующим столбцам W и Y остальной размер. Моя формула почему-то не работает. Прикрепляю файл.
На листе 34 объекта. Необходимо выделить только 15 объектов, чтобы удалить их. Способ, когда выделяю каждый объект, удерживая Ctrl, и нажимаю Delete, неудобный. Как одновременно выделить только 15 объектов?
surkenny, дело в том, что я не знаю язык М, еще не изучала этот язык настолько, что б самостоятельно функции создавать. А результат нужен сейчас. За помощь большое спасибо!
Ан нет. Сделала проверку регулярки на сайте jsbin. Регулярка работает. Тогда совсем не понимаю ошибку (см Снимок1.JPG). Подскажите, плиз! Целый день мучаюсь.
В столбце 5.1 хочу заменить последние символы (_\d{2}) на пустой символ (" "), если перед ними не идет _сырный_и_для_гриля. Для этого использую функцию:
let fx=(txt as text, regex as text)=> Web.Page( "<script> var x = '" & txt & "'; var pattern = /" & regex & "/gi; var result = x.replace(pattern,''); document.write(result); </script>")[Data]{0}[Children]{0}[Children]{1}[Text]{0}
in fx
Я уверена, что ошибка именно в синтаксисе регулярного выражения, потому что без ретроспективной проверки (?<!_сырный_и_для_гриля), функция выдает результат.
Снимки в прикрепленных файлах я расположила так, чисто для удобства :
Снимок1, Снимок2, Снимок3 относится к видеоуроку Снимок4, Снимок5 к моему примеру
Прикреплю еще Снимок6, в котором Вы увидите, что ссылаюсь на ячейку $G$5 в ДВССЫЛ. И знак $ зачем снимать перед цифрой 5? В видеоуроке не снимали знак $
Просмотрела видеоурок Николая Павлова на тему "Выпадающий список с показом изображений" на дату 15.10.2020г. Ссылка на урок https://www.planetaexcel.ru/techniques/1/14763/ В последнем шаге, когда ввожу формулу на фото, появляется ошибка - недопустимая ссылка. Снимки экрана прикрепляю.
Кратко по ходу урока: 1 шаг - Ячейкам из столбца N, в котором находятся картинки, присваиваем имена из столбца М (снимок1), т.е. получаем именованные диапазоны. 2 шаг - Привязываем изображение к названию именованного диапазона через функцию ДВССЫЛ, т.е. получаем именованный диапазон с названием Фото (снимок2) 3 шаг - Выделяем изображение и в строке формул вводим: =Фото. (снимок3).
На 3 шаге лично на моем примере появляется ошибка - недопустимая ссылка (снимок 5) Все шаги выполняла на одной странице книги. Блокировки областей, страниц не выполняла.
В прикрепленном файле есть данные, которые использую в запросе в качестве источника (из таблицы диапазона). Я хочу в запросе через функцию Web.Page методом replace() изменить данные.
Здравствуйте! Просмотрела видео Николая Павлова на тему Регулярные выражения RegExp в Power Query. Но на своем примере выходит ошибка. Использую функцию Web.Page, в качестве аргумента вставляю код на JavaScript. Результат показывает ошибку с пояснением: Expression.Error: Элементов в перечислении было недостаточно для выполнения операции.
Код
let fx=(txt as text, regex as text)=>
Web.Page(
"<script>
var x = '" & txt & "';
var pattern = /" & regex & "/gi;
var result = x.replace(pattern,"");
document.write(result);
</script>")[Data]{0}[Children]{0}[Children]{1}[Text]{0}
in
fx