От текста к формуле - PullRequest
       2

От текста к формуле

0 голосов
/ 17 февраля 2019

Я не хочу создавать формулу в виде текстовой строки из динамически обновляемых ячеек с содержанием ссылок на диапазоны на разных листах.Затем эту текстовую строку необходимо преобразовать в формулу на другом листе.Думаю, я бы смог использовать функцию Evaluate в Excel.Но в электронной таблице Google это не должно работать.текстовая строка выглядит так: FILTER(DBD!B2:F;LÆNGDE(DBD!B2:B)>0) и может быть добавлено больше ссылок на фильтры.

{FILTER(DBD!B2:F;LÆNGDE(DBD!B2:B)>0);FILTER(DBDold!B2:F;LÆNGDE(DBDold!B2:B)>0);....}

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

function addFormula(){
var formula = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Stamdata").getRange('E5').getValue();
var samlet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Samlet").getRange('B2');
var range = SpreadsheetApp.getActiveRange();
samlet.setFormula(formula);
}

Stamdata! E5: FILTER(DBD!B2:F;LÆNGDE(DBD!B2:B)>0) (LÆNGDE =LEN на английском) В Samlet! B2 создается формула =FILTER(DBD!B2:F;LÆNGDE(DBD!B2:B)>0), как и должно быть, но в результате получается # I / T (Fejl FILTER har forskellige intervalstørrelser. Forventede 249 rækker og 1 kolonner, men indeholder 1 rækker og 1 kolonner. = на английском языке что-то вроде FILTER имеет другой размер. Ожидается 249 строк на 1 столбец, ноимеет 1 строку и 1 столбец.) Если я в Samlet! B2 в конце новой сгенерированной формулы вставляю пробел, все вычисляется правильно.

Затем я попытался создать простую формулу в Stamdata!Е5 нравится 3 * 3.Затем формула создается и рассчитывается без какого-либо вмешательства вручную.

1 Ответ

0 голосов
/ 18 февраля 2019

Простое решение: формула должна быть строкой, которая включает префикс «равно» (=) .

Ячейка E5 в настоящее время содержит формулу (= E4), которая дает:

{FILTER(DBD!B2:F;LÆNGDE(DBD!B2:B)>0);FILTER(Platformen!B2:F;LÆNGDE(Platformen!B2:B)>0)

Здесь необходимо отметить две вещи:
1) содержимое обрабатывается как текст
2)в начале строки нет знака равенства (=).

Содержимое должно выглядеть следующим образом:

={FILTER(DBD!B2:F;LÆNGDE(DBD!B2:B)>0);FILTER(Platformen!B2:F;LÆNGDE(Platformen!B2:B)>0)

Как это исправить

Отредактируйте ячейку E5 (или ячейку E4, в зависимости от того, что вам подходит), чтобы вставить знак равенства (=) слева от открывающей фигурной скобки.Результат все равно будет обрабатываться как строка, поэтому никакой опасности не возникает;)

Одно условие: Мне пришлось преобразовать "LÆNGDE" в "LEN", чтобы мой тестРабота.Но я думаю, что это, вероятно, просто проблема «языка отображения», который для меня - английский (Австралия), а для вас - датский.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...