Работа с Формулами

SpreadSheet позволяет выполнять операции с простым содержимым ячейки (numbers, strings) и операторами (арифметика, сравнения), а также со встроенными и пользовательскими функциями. Кроме того, можно объединить простые операнды и функции в более сложные формулы. Компонент обрабатывает их и отображает результат в соответствующих ячейках.

Синтаксис формул

Синтаксис формул в SpreadSheet такой же, как и в Excel.

  1. Формула должна начинаться со знака '='.
  2. Имена функций и ссылки на ячейки должны начинаться с большой буквы.
  3. В формулах могут быть использованы следующие элементы:
"data": [
    [ 3, 2, "=A1+B2",""],
    [ 4, 2, "=7+8",""],
    [ 5, 2, "=7+B2",""],
    [ 6, 2, "=SUM(A3+D7)",""]
    ...
 ]

4 . Существует два способа записи формулы, в зависимости от выбранного способа вы можете получить разные результаты:

  • если вы хотите применить формулу только к определенным двум ячейкам, необходимо указать ссылки на эти ячейки, разделив их запятой, например:
"data": [
 [ 7, 2, "=SUM(A3,D7)",""]
]
  • если вы хотите применить формулу к диапазону ячеек, укажите ссылку на первую и последнюю ячейку, разделив их двоеточием, например:
"data": [
 [ 7, 2, "=SUM(A3:D7)",""]
]

Конкатенация строк

Вы можете конкатенировать содержимое ячеек в строках. Для этого существует три способа:

1 . оператор & со строками или ссылки на необходимые ячейки: "=nice"&"trip" или =A1&B2

2 . оператор + с теми же операндами: ="nice"+"trip" или =A1+B2. Оператор "+" ведет себя так же, как обычный оператор сложения JS (например ="nice"+12).

3 . функция CONCATENATE(): =CONCATENATE("nice","trip" или A1,B2). Также можно соединить строки из диапазона ячеек, чтобы получить один непрерывный текст: =CONCATENATE(C2:D4)

Использование в формулах именованных диапазонов

Вы можете задать имя определенному диапазону ячеек и затем использовать его в своих формулах.

Таким образом, формула становится понятнее и удобнее в работе.

Вы можете добавить именованный диапазон и использовать его посредством коллекции диапазонов (ranges):

  • чтобы добавить новый именованный диапазон, передайте два параметра методу ranges.add():

    • name - (string) имя диапазона
    • range - (string) диапазон ячеек для добавления в именованный диапазон
$$("ssheet").ranges.add("MYRANGE","B2:C2");
  • чтобы получить диапазон ячеек внутри именованного диапазона, используйте метод ranges.getCode():
var code = $$("ssheet").ranges.getCode("MYRANGE"); // -> "B2:C2"
  • чтобы получить значения ячеек в составе именованного диапазона, используйте метод ranges.getData(). Метод возвращает массив с данными ячеек:
var data = $$("ssheet").ranges.getData("MYRANGE"); // -> ["100", "200", "300"]
  • чтобы получить имена всех существующих именованных диапазонов, примените метод ranges.getRanges(). Метод возвращает массив с объектами, каждый из которых представляет имя диапазона:
var ranges = $$("ssheet").ranges.getRanges(); // -> [{name:"K",range:"C3:D3"},...]
  • чтобы удалить именованный диапазон, используйте метод ranges.remove():
$$("ssheet").ranges.remove("MYRANGE");

Related sample:  Named ranges

Перекрестные ссылки в листах Spreadsheet

Вы можете слинковать данные нескольких листов и использовать эти перекрестные ссылки в формулах.

Правила создания ссылки на внутренний лист просты:

  • Sheet_Name!Cell_Name - чтобы сослаться на ячейку другого листа, например =Countries!A4
  • Sheet_Name!Cells_Range - чтобы сослаться на диапазон ячеек другого листа, например =SUM(Countries!B2:B3)
  • Sheet_Name!Named_Range - чтобы сослаться на именованный диапазон другого листа, например =SUM(Countries!DATA)

Несколько кейсов, которые продемонстрируют как вы можете использовать перекрестные ссылки:

  • предоставить ссылку на ячейку из другого листа, например =Data!B8*D13 (где B8 это ячейка листа "Data")
  • предоставить данные для диаграммы из другого листа, например =SPARKLINE(Countries!DATA,"splineArea","#6666FF") (где "DATA" это именованный диапазон листа "Countries")
  • предоставить данные для дропдауна из другого листа, например ссылаясь на диапазон в "Add dropdown" как: Countries!NAMES (где "NAMES" это именованный диапазон листа "Countries")

Related sample:  Spreadsheet: Multiple Sheets

Редактор формул

В Spreadsheet есть продвинутый редактор формул. Его основные функции:

  • предоставление списка возможных функций при вводе первой буквы имени функции в поле ввода;
  • ввод операндов формулы посредством выделения нужного диапазона ячеек, либо проставлением ссылки на ячейки.

Чтобы включить редактор формул, задайте значение true свойству liveEditor в конфигурации Spreadsheet:

webix.ui({
    view: "spreadsheet",
    data: base_data,
    liveEditor: true
});

Related sample:  Editor Bar

Наверх
If you have not checked yet, be sure to visit site of our main product Webix javascript ui components library and page of javascript spreadsheet library product.