Я пытаюсь создать формулу в электронной таблице Google, которая выглядит следующим образом:
if (x < 0, x + 1, x)
Это означает, что если x
меньше 0
, вернуть x + 1
, иначе вернуть x
.
Однако x
само по себе является выражением, например A1 + B1
. Итак, я закончил с:
if ((A1 + B1) < 0, (A1 + B1) + 1, (A1 + B1))
Как я могу сохранить выражение (A1 + B1)
во временную переменную x
, чтобы я мог это сделать? :
x = (A1 + B1);
if (x < 0, x + 1, x);
Текущее выражение в моей электронной таблице выглядит так:
if(
timevalue(Sheet1!$D10)-timevalue(min(filter(Sheet1!$D$2:$D$99,Sheet1!$A$2:$A$99=A10,Sheet1!$E$2:$E$99=E10))))
< 0,
1 +
timevalue(Sheet1!$D10)-timevalue(min(filter(Sheet1!$D$2:$D$99,Sheet1!$A$2:$A$99=A10,Sheet1!$E$2:$E$99=E10))))
,
timevalue(Sheet1!$D10)-timevalue(min(filter(Sheet1!$D$2:$D$99,Sheet1!$A$2:$A$99=A10,Sheet1!$E$2:$E$99=E10))))
)
Я пытаюсь заставить его выглядеть короче и более управляемым, как это:
x = timevalue(Sheet1!$D10) - timevalue(min(filter(Sheet1!$D$2:$D$99,Sheet1!$A$2:$A$99=A10,Sheet1!$E$2:$E$99=E10))));
if(
x
< 0,
1 +
x
,
x
)
google-sheets
google-apps-script
Pacerier
источник
источник
Ответы:
Я часто заканчиваю тем, что использую ячейки в качестве переменных для часто используемых вычислений, и на самом деле называю их «именованными диапазонами». Это помогает думать о формуле, которую вы пытаетесь разработать. Вы можете скрыть эти клетки, если не хотите, чтобы их видели.
источник
Короткий ответ
В настоящее время в Google Sheets нет функции присвоения имени переменной, определяемой формулой, вместо ссылки на ячейку или диапазон. Чтобы использовать формулу с такими переменными, альтернативой является использование пользовательских функций.
Пользовательские функции в Google Sheets
Пользовательские функции определяются в связанных проектах Google Apps Scripts или в надстройках Google Sheets. Их можно использовать только для возврата значений, а не для автоматизации таких задач, как отправка электронного письма.
Пользовательская функция похожа на функцию JavaScript и может использовать JSDOC для добавления функций встроенных функций, таких как автозаполнение, и для отображения всплывающей подсказки формулы. Также может быть включено пользовательское сообщение об ошибке.
В случае, представленном в вопросе, желаемая структура формулы для отображения в ячейке должна иметь следующую структуру
где
x
может быть пользовательская функция.Ниже приведен простой пример пользовательской функции, использующей JSDOC .
Формула с использованием указанной выше пользовательской функции со структурой, указанной в вопросе, будет выглядеть следующим образом
row()
можно использовать вместо константы, чтобы иметь в качестве входных данных строку, в которой находится формула.Чтобы «подражать» явной формуле, представленной в вопросе, встроенные формулы должны быть заменены функциями JavasScript / Google Apps Script.
Ссылки
источник
Я делаю некоторые попытки в этом (я согласен, что это будет очень полезная функция, особенно для длинных формул. Вот что я написал до сих пор:
Теоретически, это было бы полезно для упрощения сложной формулы ячейки, такой как:
в это:
Дополнительный
D_VAR#'s
иVAR#'s
может быть записан в сценарий для учета нескольких переменных объявлений и вызовов по мере необходимости.Тем не менее, кажется, что
D_VAR0
неправильно хранит перенесенную переменную в массиве variable [].Если я вручную введу элемент в массив, VAR0 сможет получить к нему доступ и вернуть его в активную ячейку. Например:
Это оставляет меня с двумя вопросами. Если возможно следующее, то я думаю, что можно объявить и вызвать временные переменные через пользовательскую функцию:
Если пользовательские функции могут обращаться к элементам массива, могут ли они также хранить элементы в массиве? Если да, то как?
Если пользовательские функции могут хранить элементы в массиве, доступны ли они только в пределах одной и той же непрерывной формулы в одной и той же ячейке? Или можно получить доступ к той же самой хранимой переменной в другой ячейке? Пример:
Cell A1 = D_VAR0(sum(3,5))
Cell D4 = VAR0() //would this return 8 in cell D4? It hasn't worked in my testing.
источник