Формула ВПР, созданная скриптами Google, не рассчитывается должным образом

Я программно пишу формулы в ячейки.

Следующая строка кода: formulaCells.setFormulaR1C1('=iferror(VLOOKUP(R[0]C[3],AutoCat!A:B,2,FALSE),"Requires Category")');

Правильно записывает эту формулу во все ячейки целевого файла Google Таблиц, представленного как formulaCells

=iferror(VLOOKUP(D2,AutoCat!A:B,2,FALSE),"Requires Category")

Но проблема в том, что формула по умолчанию имеет флаг ошибки «Требуется категория», когда она написана скриптами Google, но если я напишу ту же самую формулу вручную в Google Таблицы, фактический элемент будет идентифицирован результатами ВПР.

Это так неприятно!

Если я наведу курсор на формулу, сгенерированную Google Script, истинное решение из ВПР даже появится на эстакаде, но по какой-то причине не появится в ячейке.

Пожалуйста помоги! Почему формула, сгенерированная в Google Scripts, не рассчитывается правильно, а формула, введенная вручную?


person CPriestley    schedule 30.03.2018    source источник


Ответы (2)


Хорошо, подумав, что я исчерпал свои умственные ресурсы на этом, я попробовал одну последнюю вещь, и она действительно сработала.

По какой-то неизвестной причине, хотя формула является точной, формулы, созданные скриптами Google, не работают с функцией ВПР, которая выполняет поиск решения в неограниченном диапазоне. Таким образом, даже несмотря на то, что функция ВПР находила правильное решение, она не отображала его как результат формулы.

Я исправил это, создав в файле Google Sheets именованный диапазон данных, которые VLOOKUP будет искать, под названием AutoCategory, а затем вставил этот именованный диапазон в формулу, сгенерированную Google Scripts, и БУМ! формула заработала.

Вот последний код в скриптах: formulaCells.setFormulaR1C1('=iferror(VLOOKUP(R[0]C[3],AutoCategory,2,FALSE),"Requires Category")');

И вот последняя формула, которая создается в Google Таблицах: = iferror (ВПР (D2, AutoCategory, 2, FALSE), «Требуется категория»)

person CPriestley    schedule 30.03.2018

setFormulaR1C1 требует нотации R1C1, которую вы предоставили с R[0]C[3], но AutoCat!A:B - это нотация A1.

Вы можете переключиться на setFormula() и передать только нотацию A1, но я думаю, что использование именованных диапазонов является очень хорошей практикой в ​​сочетании со скриптом Google Apps.

person Diego    schedule 30.03.2018