Шукайте формулу "isFormula" для електронних таблиць Google


13

Чи є функція, яка підкаже, чи має певна комірка звичайне (введене вручну) значення чи має формулу?

Відповіді:


5

За допомогою цього маленького фрагмента ви можете це зробити.

Код

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;
}

Використання

введіть тут опис зображення

У цій відповіді Том Хорвуд знайшов спосіб обійти використання цитат.

Приклад

Додайте скрипт у меню Інструменти> Редактор сценаріїв і натисніть кнопку помилки, щоб активувати аутентифікацію.

Я створив для вас прикладний файл: Перевірте формулу


Я блукав ... Ваша функція насправді отримує рядок, який є адресою комірки isFormula2("A1"). тому я спробував створити нову його версію, як це: function isFormula2(cell) { return (cell.getFormula())!=""; } і я очікував, що вона може бути викликана за допомогою, isFormula2(A1)але це, мабуть, не працює, і при спробі налагодження це виявляється cellяк невизначене ... будь-яка ідея, чому це так, і якщо все може бути змінили, щоб він працював f(A1)замість f("A1")?
epeleg

@epeleg Дивіться мою оновлену відповідь.
Яків Ян Туінстра

:) тож ви змінили його так, що замість отримання адреси, він отримує стовпець і рядок. хіба тут немає такого синтаксису, який би просто був викликом isFormula(a1)? (у MS excel це була б функція, яка отримує параметр діапазону)
epeleg

@epeleg Найближчим є Formula_1 ("A2: A2") , подивіться на мій прикладний файл. Спеціальні функції працюють таким чином. Без лапок ви отримаєте значення. З цитатами рядка, який можна використовувати як такий, але його неможливо скопіювати / вставити. Рішення COLUMN і ROW - це лише кругла робота (неминуче).
Яків Ян Туінстра

яке було б значення, яке отримає користувацька функція, якщо ви будете називати її за допомогоюForForla (a1: a1)? а як щодо Формула (a1: b2)?
epeleg

9

Коротка відповідь

Використовуйте вбудовану функцію ISFORMULA () .

Передумови та пояснення

Я думаю, що щойно я виявив незадокументовану формулу в нових Google Таблицях. @Pnuts говорив, що CELLформула не працює (частково тому, що вона доступна лише в нових таблицях Google), тому я скопіював код у новий Google Sheet. Піднялася помилка, сказавши мені, що моя (спеціальна) формула приймає лише один аргумент, а не два:
введіть тут опис зображення

Перейменування isFormulaв щось інше призвело до функціонування спеціальної функції. Після цього я створив ще один Google Sheet і використав isFormulaформулу. Формула не відображається в автоматичному завершенні, але вона працює:
введіть тут опис зображення

Отже, якщо формула буде доступна у нових таблицях Google, то це буде найкращою відповіддю:

Формула

=isFormula(A1)

Примітка

Доступний лише в нових таблицях Google. Я попросив декількох інших людей підтвердити нову формулу і вона підтверджена. Оскільки він не є документальним, його реалізація не є впевненою, і може зникнути. ARRAYFORMULAЧи не працює при використанні цієї нової формули.

Приклад

Я створив для вас прикладний файл: isFormula


приємно. схоже, Google приймає мою рекомендацію :) Але як перейти на "Нові таблиці Google"?
epeleg

цікаво. він працює для мого облікового запису gmail, але не в моєму обліковому записі Google Apps ...
epeleg

2
ISFORMULA () тепер задокументовано. Дивіться support.google.com/docs/answer/6270316?hl=uk
Rubén

2

Схоже, є прихована вбудована функція ISFORMULA()від Google. Я зрозумів, коли видалив власну функцію і все ще працював. Я спробував це в новій електронній таблиці і досі працює. Немає проблеми з кешем.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.