Ответы:
С этим небольшим фрагментом вы можете сделать это.
function isFormula(startcol, startrow) {
// prepare string
var str = String.fromCharCode(64 + startcol) + startrow;
// retrieve formula
var fCell = SpreadsheetApp.getActiveSpreadsheet()
.getRange(str).getFormula();
// return false if empty else true
return fCell ? true : false;
}
В этом ответе Том Хорвуд нашел способ обойти использование цитат.
Добавьте скрипт в Сервис> Редактор скриптов и нажмите кнопку ошибки, чтобы активировать аутентификацию.
Я создал файл примера для вас: Проверьте формулу
isFormula(a1)
? (в MS Excel это была бы функция, которая получает параметр диапазона)
Используйте встроенную функцию ISFORMULA () .
Мне кажется, я только что обнаружил недокументированную формулу в новых Google Sheets. @Pnuts говорил, что CELL
формула не работает (частично потому, что она доступна только в новых Google Sheets), поэтому я скопировал код в новый Google Sheet. Возникла ошибка, сообщающая, что моя (пользовательская) формула принимает только один аргумент, а не два:
Переименование isFormula
во что-то еще, привело к работающей пользовательской функции. После этого я создал еще один Google Sheet и использовал isFormula
формулу. Формула не отображается в автозаполнении, но она работает:
Таким образом, если формула доступна в новых листах Google, то это будет лучший ответ:
=isFormula(A1)
Доступно только в новых Google Sheets. Я попросил нескольких других людей подтвердить новую формулу, и она подтвердилась. Поскольку он недокументирован, его реализация неуверенна и может исчезнуть. ARRAYFORMULA
Не работает при использовании этой новой формулы.
Я создал файл примера для вас: isFormula
Похоже, есть скрытая встроенная функция ISFORMULA()
от Google. Я понял, когда я удалил свою собственную функцию и все еще работал. Я попробовал это в новой электронной таблице и все еще работает. Нет проблем с кешем.
isFormula2("A1")
. поэтому я попытался создать новую его версию следующим образом:function isFormula2(cell) { return (cell.getFormula())!=""; }
и я ожидал, что она будет вызываться с использованием,isFormula2(A1)
но это, похоже, не работает, и при попытке отладки это выглядитcell
как неопределенное ... любая идея, почему это так и если что-то может быть изменилось, так что будет работатьf(A1)
вместоf("A1")
?