Fluidtable — это современное приложение для работы с электронными таблицами. Вместо того, чтобы просто копировать функции Excel, цель состоит в том, чтобы подумать о проблеме, которую они пытаются решить, и найти лучшее решение.
Это означает, что вам придется научиться делать что-то по-новому. Но не волнуйтесь. Может по другому, но не сложно. И я лично стремлюсь делать это все проще и проще.
Пожалуйста, прокомментируйте то, что недостаточно ясно или слишком сложно. Я отдам им приоритет.
Примечание 1
В Excel столбцы обозначаются буквами. При этом на строки ссылаются по номерам, начинающимся с 1.
В Fluidtable и на строки, и на столбцы ссылаются по номерам, начинающимся с 0.
Заметка 2
В Fluidtable вы можете добавить формулы/код, выбрав ячейку и нажав кнопку Add Code
. В противном случае вы можете писать прямо в выбранную ячейку, добавляя к коду префикс =js
.
Оглавление
- Арифметические операции
- Получить значения
- Получить значение ячейки
- Получить значения строки
- Получить значения столбца
- Получить диапазон значений
- Получить текущую информацию о соте
- Суммировать значения
- Сумма значений ЕСЛИ проходит условие
- Подсчет значений
- Подсчитать непустые значения
- Подсчет числовых значений
- Считать, если выполняется условие
- "Средний"
- Средний ЕСЛИ проходит условие
- Существует ли ценность?
- Индекс ценности
- Дублируется ли значение?
- Получить индексы повторяющихся значений
- Уникальные ценности
- Максимальное значение
- Минимальное значение
- Округлить число
- С большой буквы
- Если заявление
- Вложенные операторы ЕСЛИ
- Индекс/совпадение
- Взгляд
- Поиск
- Объединить несколько значений
- Длина струны
- Обрезать строку
- ИЛИ: Соблюдено ли какое-либо условие?
- И: Все ли условия соблюдены?
Арифметические операции
Арифметические операции такие же, но вы должны добавить к ним префикс ключевого слова return
.
// Excel =123 * 2 =(3 * 2) / (1 + 2)
// Fluidtable return 123 * 2 return (3 * 2) / (1 + 2)
Получить значения
Получить значение ячейки
Получить значение из любой таблицы в текущем документе.
// Excel =B3 =Sheet1!B5 =A1 + C2 // Fluidtable // Use Table.value(rowIndex, columnIndex, tableName) return Table.value(2, 2) return Table.value(4, 1, "Sheet1") return Table.value(0, 0) + Table.value(1, 3)
Получить значения строки
Получить строку значений из любой таблицы в текущем документе.
// Excel =2:2 =Sheet1!5:5 // Fluidtable // Use Table.row(rowIndex, tableName) return Table.row(2) return Table.row(5, "Sheet1")
Получить значения столбца
Получить столбец значений из любой таблицы в текущем документе.
// Excel =B:B =Sheet1!C:C // Fluidtable // Use Table.column(columnIndex, tableName) return Table.column(1) return Table.column(2, "Sheet1")
Получить диапазон значений
Получите двумерный диапазон значений (также известный как матрица) из любой таблицы в текущем документе.
// Excel =B1:C1 =B1:B3 =A1:C3 =Sheet1!A1:B2 // Fluidtable // Use Table.range(startRow, startColumn, endRow, endColumn, tableName) return Table.range(0, 1, 0, 2) return Table.range(0, 1, 2, 1) return Table.range(0, 0, 2, 2) return Table.range(0, 0, 1, 1, "Sheet1")
Получить текущую информацию о ячейке
Получить текущую строку ячейки, столбец и имя таблицы.
// Excel =ADDRESS(ROW(), COLUMN()) // -> $B$4 // Fluidtable // Use Table.currentCellInfo() return Table.currentCellInfo() // -> { row: 3, column: 1, tableName: "Table 1" } return Table.currentCellInfo().row // -> 3 return Table.currentCellInfo().column // -> 1 return Table.currentCellInfo().tableName // -> Table 1
Суммарные значения
Суммируйте диапазон значений. Нечисловые значения будут автоматически отфильтрованы.
// Excel =SUM(1, 2, 3) =SUM(A1, B1) =SUM(A1:B5) // Fluidtable // Use Values.sum(valuesRange) return Values.sum([1, 2, 3]) const values = [1, 2, 3]; return Values.sum(values) return Values.sum(Table.column(2)) return Values.sum(Table.row(1))
Сумма значений ЕСЛИ соответствует условию
Суммируйте ряд значений, если они соответствуют заданному условию.
// Excel =SUMIF(A1:C1, "<1") // Sum values smaller than 1 // Fluidtable // Use Values.sumIf(valuesRange, conditionFunction) // Sum only the even numbers return Values.sumIf([1, 2, 3], val => val %2 === 0) // -> 2 // Sum row 0 values smaller than 1 return Values.sumIf(Table.row(0), val => val < 1)
Подсчет значений
Подсчитайте значения в диапазоне.
// Excel =COUNTA("ciao", null, 3) // -> 3 =COUNTA(A1:A5) + COUNTBLANK(A1:A5) // -> 5 =COUNTA(A1:B3) + COUNTBLANK(A1:B3) // -> 6 // Fluidtable // Use Values.count(valuesRange) return Values.count(["ciao", null, 3]) // -> 3 const values = ["ciao", null, 3]; return Values.count(values); // -> 3 return Values.count(Table.row(2)) return Values.count(Table.column(1)) return Values.count(Table.range(0, 0, 0, 4)) // -> 5 return Values.count(Table.range(0, 0, 2, 2)) // -> 9
Подсчет непустых значений
Подсчитайте непустые значения в диапазоне.
// Excel =COUNTA("ciao", null, 3) // -> 1 =COUNTA(A1:A5) // Fluidtable // Use Values.countNonEmpty(valuesRange) return Values.countNonEmpty(["ciao", null, 3]) // -> 2 const values = ["ciao", null, 3]; return Values.countNonEmpty(values); // -> 2 return Values.countNonEmpty(Table.column(2)) return Values.countNonEmpty(Table.row(2)) return Values.countNonEmpty(Table.range(0, 0, 2, 2))
Подсчет числовых значений
Подсчитайте числовые значения в диапазоне.
// Excel =COUNT("ciao", null, 3) // -> 1 =COUNT(A1:A5) // Fluidtable // Use Values.countNumbers(valuesRange) return Values.countNumbers(["ciao", null, 3]) // -> 1 const values = ["ciao", null, 3]; return Values.countNumbers(values); // -> 1 return Values.countNumbers(Table.column(2)) return Values.countNumbers(Table.row(2)) return Values.countNumbers(Table.range(0, 0, 2, 2))
Считать, если выполняется условие
Подсчитайте значения в диапазоне, которые соответствуют заданному условию.
// Excel =COUNTIF(A1:C1, ">10") // Count values bigger than 10 =COUNTIF(A1:C3, "b*") // Count values starting with letter b // Fluidtable // Use Values.countIf(valuesRange, conditionFunction) // Count values bigger than 10 return Values.countIf(Table.row(0), val => val > 10) // Count values starting with letter b return Values.countIf(Table.row(0), val => val.substring(0, 1) === "b") // Count values of type string const condition = (val) => { typeof val === ‘string’ }; return Values.countIf(Table.row(0), condition)
Средний
Вычислить среднее значение диапазона числовых значений. Пустые и нечисловые значения автоматически отфильтровываются.
// Excel =AVERAGE(2, 4, 6) // -> 4 =AVERAGE(A1:A3) // Fluidtable return Values.average([2, 4, 6]) // -> 4 const values = [2, 4, 6]; return Values.average(values) // -> 4 return Values.average(Table.column(2)) return Values.average(Table.range(0, 0, 2, 2))
Среднее значение IF соответствует условию
Вычислить среднее значение диапазона числовых значений, если они соответствуют условию. Пустые и нечисловые значения автоматически отфильтровываются.
// Excel =AVERAGEIF(A1:A3, ">2") =AVERAGEIF(B1:B5, "<1") // Fluidtable // Use Values.averageIf(valuesRange, conditionFunction) return Values.averageIf([2, 4, 6,], val => val > 2) // -> 5 // Average of the number who are between 10 and 100 return Values.averageIf(Table.row(0), val => val > 10 && val < 100)
Существует ли значение?
Проверьте, существует ли значение в диапазоне значений.
// Excel =COUNTIF($A$2:$A2, $A2) > 0 // True if exist, false otherwise // Fluidtable // Use Values.exists(searchValue, valuesArray) return Values.exists("Mia", ["Joe", "Ann", "Mia"]) // -> true return Values.exists(Table.value(0, 0), Table.column(2)) return Values.exists(Table.value(0, 0), Table.row(2))
Индекс значения
Найдите индекс данного значения в диапазоне значений.
// Excel =MATCH("Alex", A2:A5, 0) // -> Index of row with value Alex // Fluidtable // Use Values.indexOf(searchValue, valuesArray) return Values.indexOf("Alex", ["Ann", "Alex", "Joe"]) // -> 1 return Values.indexOf(Table.value(0, 0), Table.column(2)) return Values.indexOf(Table.value(0, 0), Table.row(2))
Является ли значение дубликатом?
Проверить, является ли заданное значение дубликатом
// Excel =COUNTIF($A$2:$A2, $A2) > 1 // True if duplicate, false otherwise =IF(COUNTIF($A$2:$A2, $A2) > 1, "Duplicate", "Unique") // Fluidtable // Use Values.isDuplicate(searchValue, values) return Values.isDuplicate("Johnny", ["Ann", "Johnny", "Joe", "Johnny"]) // -> true return Values.isDuplicate(Table.value(0, 0), Table.column(0)) return Values.isDuplicate(Table.value(1, 3), Table.row(1))
Получить индексы повторяющихся значений
Получить массив индексов значений дубликатов.
// Excel // Repeat for each row =COUNTIF($A$2:$A2, $A2) > 1 // Fluidtable // Use Values.duplicatesIndexes(values) return Values.duplicatesIndexes(["Ann", "Johnny", "Joe", "Johnny", "Ann"]) // -> [3, 4] return Values.duplicatesIndexes(Table.column(0)) return Values.duplicatesIndexes(Table.row(3))
Уникальные значения
Получить уникальный список значений из другого списка.
// Excel =INDEX(list, MATCH(0, COUNTIF($D$4:D4, list), 0)) // Fluidtable // Use Values.uniques(inputValues) return Values.uniques(["Ann", "Johnny", "Joe", "Johnny", "Ann"]) // -> ["Ann", "Johnny", "Joe"] return Values.uniques(Table.column(1)) return Values.uniques(Table.row(3))
Максимальное значение
Получить наибольшее значение в диапазоне значений.
// Excel =MAX(2, 4, 6) // -> 6 =MAX(A1, A2, A3) // Fluidtable // Use Values.max(valuesArray) return Values.max([2, 4, 6]) // -> 6 return Values.max(Table.column(1)) return Values.max(Table.row(3))
Минимальное значение
Получите наименьшее значение в диапазоне значений.
// Excel =MIN(2, 4, 6) // -> 2 =MIN(A1, A2, A3) // Fluidtable // Use Values.min(valuesArray) return Values.min([2, 4, 6]) // -> 2 return Values.min(Table.column(1)) return Values.min(Table.row(3))
Округлить число
Округлить число до заданного количества знаков после запятой.
// Excel =ROUND(1.1234, 2) // -> 1.12 =ROUND(1.1234, 0) // -> 1 =ROUND(A1, 1) // Fluidtable // Use Values.round(value, decimalsCount) return Values.round(1.1234, 2) // -> 1.12 return Values.round(1.1234, 0) // -> 1 return Values.round(Table.value(0, 2), 1)
Делайте слова заглавными
Сделать заглавной первую букву всех слов в тексте
// Excel =PROPER("johnny machete") // -> Johnny Machete =PROPER(A2) // Fluidtable // Use Values.capitalizeWords(string) return Values.capitalizeWords("boe machete") // -> Boe Machete return Values.capitalizeWords(Table.value(1, 2))
оператор ЕСЛИ
Возвращает значение в зависимости от результата данного условия.
// Excel =IF(8 > 6, "Passed", "Failed") =IF(C3 > D3, "Passed", "Failed") =IF(B2 > 1000, "Goal reached", "Goal missed") // Fluidtable // Use Javascript’s if statements short syntax return Table.value(0, 0) > Table.value(2, 3) ? "Yes" : No" return Table.value(1, 2) > 1000 ? "Goal reached" : "Goal missed" // Use Javascript’s if statements standard syntax if (Table.value(1, 2) > 1000) { return "Goal reached"; } else { return "Goal missed"; }
Вложенные операторы ЕСЛИ
Возвращает значение в зависимости от результата нескольких заданных условий. Существует несколько синтаксисов, которые вы можете использовать. Выберите тот, который вам нравится больше всего. Все они правильные.
// Excel =IF(C3 > D3, IF(A3 > 100, "Passed++", "Passed"), "Failed") // Fluidtable // Syntax A if (Table.value(1, 2) > Table.value(3, 2)) { if (Table.value(2, 0) > 100) { return "Passed++"; } else { return "Passed"; } } else { return "Failed"; } // Syntax B if (Table.value(1,2)>Table.value(3,2) && Table.value(2,0)>100) { return "Passed++"; } else if (Table.value(1, 2) > Table.value(3, 2)) { return "Passed"; } else { return "Failed"; } // Syntax C return Table.value(1, 2) > Table.value(3, 2) ? Table.value(1, 2) > Table.value(3, 2) ? "Passed++" : "Passed" : "Failed"
Индекс/совпадение
Найдите индекс заданного значения, а затем верните другое значение в том же столбце или строке.
// Excel =MATCH("Alex", A2:A5, 0) // -> Index of row with value Alex =INDEX(C2:C5, 3) // -> 3rd value in range C2:C5 =INDEX(C2:C5, MATCH("Alex", A2:A5, 0)) // -> 3rd value in C2:C5 // Fluidtable // Use Values.indexOf(searchValue, valuesArray) // in combination with Table.value(rowIndex, columnIndex, tableName) return Table.value(Values.indexOf("Anna, Table.column(1)), 2) return Table.value(2, Values.indexOf(100, Table.row(0))) const searchRowIndex = Values.indexOf("Anna", Table.column(1)); if (searchRowIndex === null) { return "Value not found"; } return Table.value(searchRowIndex, 2); const searchColumnIndex = Values.indexOf(100, Table.row(1)); if (searchColumnIndex === null) { return "Value not found"; } return Table.value(2, searchColumnIndex);
ВПР
Найдите значение в заданном столбце, а затем верните другое значение в той же строке. Решение такое же, как и для index/match.
// Excel =VLOOKUP(B18, $A$1:$B$13, 2, FALSE) // Fluidtable // Use Values.indexOf(searchValue, valuesArray) // in combination with Table.value(rowIndex, columnIndex, tableName) const searchRowIndex = Values.indexOf("Anna", Table.column(1)); if (searchRowIndex === null) { return "Value not found"; } return Table.value(searchRowIndex, 2);
Hlookup
Найдите значение в заданной строке, затем верните другое значение в том же столбце. Решение такое же, как и для index/match.
// Excel =HLOOKUP(B18, $A$1:$F$2, 2, FALSE) // Fluidtable // Use Values.indexOf(searchValue, valuesArray) // in combination with Table.value(rowIndex, columnIndex, tableName) const searchColumnIndex = Values.indexOf(100, Table.row(1)); if (searchColumnIndex === null) { return "Value not found"; } return Table.value(2, searchColumnIndex);
Объединить несколько значений
Объединение двух или более значений в одно.
// Excel =CONCATENATE("Name: ", A1, " ", B1) // -> Name: Johnny Machete // Fluidtable // Use Javascript standard string concatenation return "Name: "+ Table.value(0, 0) + " " + Table.value(0, 1) const row = Table.row(0); return "Name: "+ row[0] +" "+ row[1] // Use Javascript standard string template return `Name: ${Table.value(0, 0)} ${Table.value(0, 1)}` const row = Table.row(0); return `Name: ${row[0]} ${row[1]}`
Длина строки
Получить длину строкового значения.
// Excel =LEN(A1) // Fluidtable return Table.value(0, 0).length const value = Table.value(0, 0); return value.length
Обрезать строку
Удалите пробелы в начале и в конце строки.
// Excel =TRIM(A1) // Fluidtable return Table.value(0, 0).trim() const value = Table.value(0, 0); return value.trim()
ИЛИ: Соблюдено ли какое-либо условие?
Проверьте, верно ли какое-либо из условий.
// Excel // True if A1 is bigger than A2 or B1 is bigger than 100 =OR(A1 > A2, B1 > 100) // Fluidtable // Use Javascript standard || operator (double pipe) return valueOne || valueTwo return Table.value(0, 0) || Table.value(0, 3) return Table.value(0, 0) > Table.value(0, 1) || Table.value(0,3)
И: Все ли условия соблюдены?
Проверьте, все ли условия верны.
// Excel // True if A1 is bigger than A2 and B1 is bigger than 100 =AND(A1 > A2, B1 > 100) // Fluidtable // Use Javascript standard && operator (double commercial e) return valueOne && valueTwo return Table.value(0, 0) && Table.value(0, 3) return Table.value(0, 0) > Table.value(0, 1) && Table.value(0,3)
Еще не все
Пожалуйста, сообщите нам, какие формулы вы хотели бы внедрить в Fluidtable и добавить в этот список. Оставьте комментарий или спросите в Обществе.