Повна довідкова документація для формул електронних таблиць Google?


21

Як програміст, я відчуваю дещо розчарування при спробі використання електронних таблиць Google, оскільки, здається, немає остаточного опису синтаксису, який я можу використовувати для формул. Наприклад, я читав, що я можу використовувати F3:Fдля позначення Fстовпця з рядка 3 вниз, але не можу знайти, де це згадується у довідковій документації Google, і це не завжди працює. Я, мабуть, роблю це неправильно, але в цьому і полягає суть цього питання.

Я не хочу пробиратися через п'ять різних навчальних посібників, щоб спробувати відгадати правила! Чи є десь доступний стислий опис граматики та семантики? Якщо ні, то, можливо, хтось міг би це підсумувати тут.


docs.google.com/support/bin/… Не знаю, чи це взагалі допоможе (тому її коментар jsut :))
Метт

1
дякую, це корисна частина картини, але чому вони не можуть документувати все це ?!
рог

Немає проблем, не знаю, чому вони цього не роблять, але він досить схожий на execl і є лише кілька змін синтаксису. Якщо ви коли-небудь застрягли, ви завжди можете запитати тут :)
Метт

Відповіді:


11

Це якийсь текст, витягнутий звідси . Я розмістив це тут як солом’яний чоловік. Якщо хтось, хто знає, чим це відрізняється від формул у електронних таблицях Google, міг би зробити коментар, то, можливо, ми можемо отримати гарну відповідь.

Формули

Формули дозволяють виконувати обчислення в межах комірок таблиці. Кожна формула МОЖЕ починатися з префіксу простору імен із зазначенням синтаксису та семантики, що використовується у формулі. Коли префікса немає, використовуються синтаксис та семантика формули за замовчуванням, як описано нижче. Далі йде знак рівності, а потім сама формула. Реалізації МОЖУТЬ приймати синтаксиси декількох формул, і вони МОЖНА приймати різні розширення до синтаксису формули за замовчуванням. Однак усі реалізації, які приймають формули, ОБОВ'ЯЗКОВО приймають синтаксис та семантику формул за замовчуванням, як описано тут. Вони МОЖУТЬ також приймати розширення до нього.

Документ, що реалізує сувору схему, НЕ МОЖЕ використовувати префікс простору імен формули (оскільки немає гарантії, що інші приймаючі системи зможуть його обробити), і НЕ МОЖЕ використовувати жодних розширень до семантики та синтаксису, описаних нижче. У формулі за замовчуванням синтаксис, після початкового знака рівності формулою повинен бути вираз. Вираз може бути числом, постійною рядком, названим діапазоном, парою виразів, з'єднаних двійковим оператором, вираз із префіксом унарного оператора, логічним оператором, викликом функції, адресою комірки або виразом, оточеним круглі дужки. Виклик функції та логічний оператор можуть мати нуль або більше параметрів, розділених крапкою з комою, і кожен параметр ОБОВ'ЯЗКОВО повинен бути виразом. Синтаксис для кожного з них такий:

  • Числа. Числа записуються і читаються в цьому форматі за допомогою локалі "C" (використовуючи десятковий роздільник "." І не розділюючи тисячі), використовуючи setlocale (LC_NUMERIC, "C") або еквівалент. Числа можуть закінчуватися на%, що ділить це число на 100. Значення "%" не змінює значення інших операторів, тому 2 + 10% становить 2,1 (не 2,2). Зауважте, що знаки "провідні" та "" + "дозволені як оператори, що описані нижче. Письменники ОБОВ'ЯЗКОВО записувати числа, які відповідають шаблону (зауважте, що він повинен починатися з цифри): [0-9] + (. [0-9] +)? ([EE] [+ -]? [0-9] + )?%? Читачі ОБОВ'ЯЗКОВІ мати можливість читати ці номери, а також приймати номери, що починаються з провідного ".", Тому вони повинні мати можливість читати числа у формі: ((. [0-9] +) | ([0- 9] + (. [0-9] +)? ([EE] [+ -]? [0-9] +)?))%? Постійні рядки .. Постійні рядки оточені подвійними лапками; вставити подвійну цитату, символ подвійної цитати використовується два рази. Струни зберігаються у форматі UTF-8. Зауважте, що оскільки весь вміст зберігається як XML, всі подвійні лапки у формулі фактично зберігаються як "у XML. Постійні рядки відповідають шаблону: \" ([^ "] | \" \ ") * \"

  • Іменовані діапазони / поля. Іменовані діапазони / поля відносяться до відокремленого визначеного значення або набору значень (у таблиці, як правило, стосується адреси комірки або набору адрес). Назви не відрізняються від регістру, тому "a" та "A" відносяться до одного діапазону. Реалізації повинні приймати принаймні названі діапазони, які відповідають наступному шаблону: [A-Za-z] [A-Za-z0-9 _] *

  • Оператори. Приймаються звичайні оператори інфіксації та префіксів. Вони мають таку асоціативність та перевагу (від найнижчого до найвищого пріоритету):

Коментар оператора (асоціацій)
зліва <, =,>, <=,> =, <> Менше, рівне, більше,
                                     менше або рівне, більше або дорівнює,
                                     не дорівнює.
зліва +, -, & Додати, віднімання, об'єднання рядків. Зауважте, що
                                     unry (префікс) + і - має інший пріоритет.
зліва *, / Помножити, ділити. Відділ не вкорочується, значить
                                     1/2 дорівнює 0,5.
право ^ Потужність (2 ^ 3 - 8). Читачі ДОЛЖНІ приймати "**".
none +, - префікс одинарних операторів, наприклад, -5 або - [. A1].
                                     Зауважте, що вони мають різницю, ніж перевагу
                                     додавання і віднімання.

Перевагу можна перекрити за допомогою дужок, тому "= 2 + 3 * 4" обчислює 14, а "= (2 + 3) * 4" обчислює 20. Зверніть увагу, що +, -, *, /, ^ перетворюйте будь-які рядкові або двійкові значення вони використовують у числах перед обчисленням; зауважте, що & (об'єднання рядків) перетворює будь-які значення в рядки перед їх об'єднанням. Логічні оператори. Логічні оператори мають той самий синтаксис, що і виклики функцій; їх назви нечутливі до регістру, параметри розділяються крапками з комою, а їх ім’я ОБОВ'ЯЗКОВО слід супроводжуватись дужками. Логічними операторами є:


Кількість параметрів оператора Коментар
TRUE () 0 Це булева константа, хоча її синтаксис робить його схожим на функцію
FALSE () 0 Це булева константа
НЕ (вираз) 1 Якщо вираз TRUE () повертає FALSE (), інакше повертає TRUE ()
AND (e1; e2 [; e] *) 2 або більше Якщо всі вирази TRUE () повертає TRUE (), інше повертає FALSE ()
АБО (e1; e2 [; e] *) 2 або більше Якщо всі вирази FALSE () повертає FALSE (), інакше повертає TRUE ()
ЯКЩО (умова; true_exp; false_exp)
                   3 Оцінює стан. Якщо це правда, поверніть true_exp, інакше поверніть false_exp

Реалізація AND (), OR () та IF () повинна мати коротке замикання, тобто вони повинні по черзі оцінювати зліва направо та лише оцінювати вирази, які вони повинні оцінювати, щоб обчислити результат. Виконання може вибрати оцінку більше, але лише тоді, коли вирази не мають побічних ефектів. Реалізація AND () та OR () ПОТРІБНА приймати довільну кількість параметрів, але ОБОВ'ЯЗКОВО приймати принаймні 30 при кожному використанні. Операції NOT (), AND () і OR (), а також умова в IF () призначені для булевих значень; якщо використовуються вирази інших типів, реалізація НЕ БУДЕ вважати 0 помилковим, а будь-яке інше числове значення - істинним, і НЕ БУДЕ НЕ вважати рядком нульової довжини помилковим, а будь-яке інше значення рядка - істинним. Якщо для виразу обчислюється значення помилки, то перша помилка є результатом логічної операції.


Функціональні дзвінки.Виклик функції має ім'я функції, що відповідає шаблону [A-za-z] [A-Za-z0-9 _] * з подальшим відкриттям круглих дужок, нульовим або більше параметрів та дужки, що закривається. Параметри розділені крапкою з комою (не комою), хоча читачі МОЖУТЬ необов’язково приймати виклики функцій, використовуючи також коми як роздільники. Назви функцій нечутливі до регістру, тому "сума" та "SUM" - це одна і та ж функція. Якщо є параметри, кожен повинен бути виразом, і жоден не може бути порожнім, тому X (;) не є юридичним викликом функції, тоді як RAND () є абсолютно законним. Якщо параметр необов’язковий, його МОЖЕ бути пропущено, але якщо його пропустити, то його роздільник ОБОВ'ЯЗКОВО пропущено (у специфікаціях функції слід вказати, які параметри є необов’язковими та що означає їх опускання). Типові реалізації будуть мати багато вбудованих функцій, і більшість реалізацій також підтримують один або кілька способів створення визначених користувачем функцій. Загальні функції включають:

  • SUM ( список ) - підсумовує всі числа в діапазоні ( списках ) списку .
  • COUNT ( список ) - підраховує кількість чисел у діапазоні ( списках ) списку
  • AVERAGE ( список ) - обчислює середнє значення, яке дорівнює SUM ( список ) / COUNT ( список )
  • MIN ( список ) - мінімальне числове значення списку
  • MAX ( список ) - максимальне значення списку
  • ROUND ( n , count ) - круглий n для підрахунку цифр (якщо кількість пропущено, count = 0)
  • INT ( n ) - округніть n вниз до найближчого цілого числа.
  • ISEVEN ( n ) - повертає TRUE (), якщо n парне, інакше повертає FALSE ().
  • ЗАМІНА ( текст ; SearchText ; newtext ; виникнення ) - замінники newtext для SearchText в тексті , входження числа раз (якщо поява опущеного, все часи).

Адреси комірок, що містять цифри . Адреси можуть бути відносними або абсолютними. Відносна адреса складається з літери стовпця та номера рядка. Префіксація рядка рядка або номера стовпця символом a $робить рядок або стовпець абсолютним.

Пробіл пробілів (пробіл, вкладка, новий рядок та повернення каретки) ігнорується у синтаксисі формул за замовчуванням, за винятком вмісту констант рядків та як роздільник для кількох адрес діапазону комірок у списку адрес діапазону комірок.

Користувацькі інтерфейси реалізацій МОЖЛИВАТИ приймати та відображати формули інакше, ніж обмін ними в цьому форматі даних. Наприклад, вони МОЖУТЬ приймати та відображати номери, використовуючи формат поточного локалу, вони МОЖУТЬ завжди використовувати певну локаль для числових форматів, МОЖУТЬ використовувати коми замість крапки з комою для роздільників параметрів, і МОЖУТЬ приймати та відображати адреси комірок, не вимагаючи використання квадратних дужок. Але користувальницькі інтерфейси ВИНАГАЛЬНО приймають формат за замовчуванням як вхідний, де це можливо, наприклад, реалізація ДОЛЖНА приймати номери, що відповідають вимогам локалітету "C" (як і поточний локал), і ДОЛЖНЯТЬ приймати адресні клітинки, що вказуються в рамки. Крім того, користувацькі інтерфейси реалізації ДОЛЖНЕ виправити ймовірні помилки, можливо, при діалозі. Наприклад,

Далі наведено приклад простої формули:

=sum(A1:A5)

Ця формула обчислює суму значень усіх комірок у діапазоні ".A1: .A5". Функція - «сума». Параметри позначаються символом "(" на початку та ")" в кінці. Якщо функція містить більше одного параметра, параметри розділяються знаком “;”. Далі йде зміна формули, показаної вище:

=sum(A1;A2;A3;A4;A5)

Результат цієї формули той самий. Компоненти, які ви використовуєте у формулі, залежать від програми, яку ви використовуєте.


Чудова відповідь, @rog. Чи маєте ви якесь уявлення, чому документація щодо функцій Google використовує коми замість крапки з комою для розділення параметрів? Вони не працюють ні в одному з моїх тестів.
Jpsy

@Jpsy: роздільник параметрів залежить від налаштувань електронної таблиці. Точка з комою використовується, коли комою є роздільник десяткових знаків.
Рубен


"Реалізація AND (), OR () та IF () повинна мати коротке замикання" --- на жаль, я не отримую цього в електронних таблицях Google під час написання цього запису. Я спробував "AND (FALSE, вираз з невідповідністю типу)", і замість того, щоб ігнорувати другу частину, результат - помилка з другого операнда. На щастя, існує рішення щодо stackoverflow: stackoverflow.com/a/16926642/2184166
ob-ivan

6

Подивившись ще трохи, я знаходжу це

  1. Формули електронних таблиць Google реалізують фактичний стандарт , слідуючи Microsoft Excel та ін.
  2. Здається, стандарт ніколи не був визначений належним чином .

Найближче до всеосяжного визначення, яке я знайшов, було в цій старій публікації списку розсилки: http://lists.oasis-open.org/archives/office-comment/200411/msg00000.html , яка містить граматику yacc, lex tokenizer, і короткий опис семантики.

Незрозуміло, наскільки тісно це відповідає впровадженню Google Spreadsheet - декілька прикладів не працюють в електронних таблицях Google.

Це здається прикрою ситуацією. Будь-який вперед за цією інформацією буде дуже вдячний.


З вищенаведеного посту було досягнуто великого прогресу. Стосовно OpenDocument дивіться повідомлення про oasis-open.org/committees/tc_home.php?wg_abbrev=office
Rubén

-2

https://repository.tudelft.nl/islandora/object/uuid:d9d802af-9ebf-4524-9dbc-e7657d67921e/datastream/OBJ/download

Магістерська дисертація Девіда Хопельмана "Перероблення та редагування формул електронних таблиць" за допомогою інструмента за допомогою інструмента за допомогою інструментів "(допомагає інструмент Університету Делфт) - це найкращий опис синтаксису формули електронних таблиць, який я бачив. BNF, емпірична перевірка та всі обрізки. Але досить просто, щоб бути гарним посібником для проектів, кодованих рукою. XLParser є супутником проекту GitHub з відкритим кодом, на який посилається у дипломній роботі.

На жаль, для Excel це не аркуші, але настільки, що формули аркушів сумісні з Excel - це чудове місце для початку.

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