@fortune-sheet/core
Version:
FortuneSheet is a drop-in javascript spreadsheet library that provides rich features like Excel and Google Sheets
1,780 lines (1,773 loc) • 2.84 MB
JavaScript
'use strict';
Object.defineProperty(exports, '__esModule', { value: true });
var _ = require('lodash');
var numeral = require('numeral');
var dayjs = require('dayjs');
var formulaParser = require('@fortune-sheet/formula-parser');
var uuid = require('uuid');
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
var ___default = /*#__PURE__*/_interopDefaultLegacy(_);
var numeral__default = /*#__PURE__*/_interopDefaultLegacy(numeral);
var dayjs__default = /*#__PURE__*/_interopDefaultLegacy(dayjs);
function _arrayLikeToArray(r, a) {
(null == a || a > r.length) && (a = r.length);
for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e];
return n;
}
function _arrayWithHoles(r) {
if (Array.isArray(r)) return r;
}
function _arrayWithoutHoles(r) {
if (Array.isArray(r)) return _arrayLikeToArray(r);
}
function _classCallCheck(a, n) {
if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function");
}
function _defineProperties(e, r) {
for (var t = 0; t < r.length; t++) {
var o = r[t];
o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o);
}
}
function _createClass(e, r, t) {
return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", {
writable: !1
}), e;
}
function _defineProperty(e, r, t) {
return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, {
value: t,
enumerable: !0,
configurable: !0,
writable: !0
}) : e[r] = t, e;
}
function _iterableToArray(r) {
if ("undefined" != typeof Symbol && null != r[Symbol.iterator] || null != r["@@iterator"]) return Array.from(r);
}
function _iterableToArrayLimit(r, l) {
var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"];
if (null != t) {
var e,
n,
i,
u,
a = [],
f = !0,
o = !1;
try {
if (i = (t = t.call(r)).next, 0 === l) {
if (Object(t) !== t) return;
f = !1;
} else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0);
} catch (r) {
o = !0, n = r;
} finally {
try {
if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return;
} finally {
if (o) throw n;
}
}
return a;
}
}
function _nonIterableRest() {
throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
}
function _nonIterableSpread() {
throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
}
function ownKeys(e, r) {
var t = Object.keys(e);
if (Object.getOwnPropertySymbols) {
var o = Object.getOwnPropertySymbols(e);
r && (o = o.filter(function (r) {
return Object.getOwnPropertyDescriptor(e, r).enumerable;
})), t.push.apply(t, o);
}
return t;
}
function _objectSpread2(e) {
for (var r = 1; r < arguments.length; r++) {
var t = null != arguments[r] ? arguments[r] : {};
r % 2 ? ownKeys(Object(t), !0).forEach(function (r) {
_defineProperty(e, r, t[r]);
}) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) {
Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));
});
}
return e;
}
function _slicedToArray(r, e) {
return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest();
}
function _toConsumableArray(r) {
return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread();
}
function _toPrimitive(t, r) {
if ("object" != typeof t || !t) return t;
var e = t[Symbol.toPrimitive];
if (void 0 !== e) {
var i = e.call(t, r || "default");
if ("object" != typeof i) return i;
throw new TypeError("@@toPrimitive must return a primitive value.");
}
return ("string" === r ? String : Number)(t);
}
function _toPropertyKey(t) {
var i = _toPrimitive(t, "string");
return "symbol" == typeof i ? i : i + "";
}
function _typeof(o) {
"@babel/helpers - typeof";
return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) {
return typeof o;
} : function (o) {
return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o;
}, _typeof(o);
}
function _unsupportedIterableToArray(r, a) {
if (r) {
if ("string" == typeof r) return _arrayLikeToArray(r, a);
var t = {}.toString.call(r).slice(8, -1);
return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0;
}
}
var en = {
generalDialog: {
partiallyError: "Cannot perform this operation on partially merged cells",
readOnlyError: "Cannot perform this operation in read-only mode",
dataNullError: "Cannot perform this operation on data that does not exist",
noSeletionError: "The selection operation has not been performed yet",
cannotSelectMultiple: "Cannot select multiple selections"
},
functionlist: [{
n: "SUMIF",
t: 0,
d: "Returns a conditional sum across a range.",
a: "A conditional sum across a range.",
m: [2, 3],
p: [{
name: "range",
detail: "The range which is tested against `criterion`.",
example: "A1:A10",
require: "m",
repeat: "n",
type: "range"
}, {
name: "criterion",
detail: "The pattern or test to apply to `range`.",
example: '">20"',
require: "m",
repeat: "n",
type: "rangeall"
}, {
name: "sum_range",
detail: "The range to be summed, if different from `range`.",
example: "B1:B10",
require: "o",
repeat: "n",
type: "range"
}]
}, {
n: "TAN",
t: 0,
d: "Returns the tangent of an angle provided in radians.",
a: "Tangent of an angle provided in radians.",
m: [1, 1],
p: [{
name: "angle",
detail: "The angle to find the tangent of, in radians.",
example: "45*PI()/180",
require: "m",
repeat: "n",
type: "rangenumber"
}]
}, {
n: "TANH",
t: 0,
d: "Returns the hyperbolic tangent of any real number.",
a: "Hyperbolic tangent of any real number.",
m: [1, 1],
p: [{
name: "value",
detail: "Any real value to calculate the hyperbolic tangent of.",
example: "A2",
require: "m",
repeat: "n",
type: "rangenumber"
}]
}, {
n: "CEILING",
t: 0,
d: "Rounds a number up to the nearest integer multiple of specified significance `factor`.",
a: "Rounds number up to nearest multiple of a factor.",
m: [2, 2],
p: [{
name: "value",
detail: "The value to round up to the nearest integer multiple of `factor`.",
example: "23.25",
require: "m",
repeat: "n",
type: "rangenumber"
}, {
name: "factor",
detail: "The number to whose multiples `value` will be rounded.",
example: "0.1",
require: "m",
repeat: "n",
type: "rangenumber"
}]
}, {
n: "ATAN",
t: 0,
d: "Returns the inverse tangent of a value, in radians.",
a: "Inverse tangent of a value, in radians.",
m: [1, 1],
p: [{
name: "value",
detail: "The value for which to calculate the inverse tangent.",
example: "0",
require: "m",
repeat: "n",
type: "rangenumber"
}]
}, {
n: "ASINH",
t: 0,
d: "Returns the inverse hyperbolic sine of a number.",
a: "Inverse hyperbolic sine of a number.",
m: [1, 1],
p: [{
name: "value",
detail: "The value for which to calculate the inverse hyperbolic sine.",
example: "0.9",
require: "m",
repeat: "n",
type: "rangenumber"
}]
}, {
n: "ABS",
t: 0,
d: "Returns the absolute value of a number.",
a: "Absolute value of a number.",
m: [1, 1],
p: [{
name: "value",
detail: "The number of which to return the absolute value.",
example: "-2",
require: "m",
repeat: "n",
type: "rangenumber"
}]
}, {
n: "ACOS",
t: 0,
d: "Returns the inverse cosine of a value, in radians.",
a: "Inverse cosine of a value, in radians.",
m: [1, 1],
p: [{
name: "value",
detail: "The value for which to calculate the inverse cosine. Must be between `-1` and `1`, inclusive.",
example: "0",
require: "m",
repeat: "n",
type: "rangenumber"
}]
}, {
n: "ACOSH",
t: 0,
d: "Returns the inverse hyperbolic cosine of a number.",
a: "Inverse hyperbolic cosine of a number.",
m: [1, 1],
p: [{
name: "value",
detail: "The value for which to calculate the inverse hyperbolic cosine. Must be greater than or equal to `1`.",
example: "2",
require: "m",
repeat: "n",
type: "rangenumber"
}]
}, {
n: "MULTINOMIAL",
t: 0,
d: "Returns the factorial of the sum of values divided by the product of the values' factorials.",
a: "Multinomial distribution function.",
m: [1, 255],
p: [{
name: "value1",
detail: "The first value or range to consider.",
example: "1",
require: "m",
repeat: "n",
type: "rangeall"
}, {
name: "value2",
detail: "Additional values or ranges to consider.",
example: "2",
require: "o",
repeat: "y",
type: "rangeall"
}]
}, {
n: "ATANH",
t: 0,
d: "Returns the inverse hyperbolic tangent of a number.",
a: "Inverse hyperbolic tangent of a number.",
m: [1, 1],
p: [{
name: "value",
detail: "The value for which to calculate the inverse hyperbolic tangent. Must be between -1 and 1, exclusive.",
example: "0.9",
require: "m",
repeat: "n",
type: "rangenumber"
}]
}, {
n: "ATAN2",
t: 0,
d: "Returns the angle between the x-axis and a line segment from the origin (0,0) to specified coordinate pair (`x`,`y`), in radians.",
a: "Arctangent of a value.",
m: [2, 2],
p: [{
name: "x",
detail: "The x coordinate of the endpoint of the line segment for which to calculate the angle from the x-axis.",
example: "4",
require: "m",
repeat: "n",
type: "rangenumber"
}, {
name: "y",
detail: "The y coordinate of the endpoint of the line segment for which to calculate the angle from the x-axis.",
example: "3",
require: "m",
repeat: "n",
type: "rangenumber"
}]
}, {
n: "COUNTBLANK",
t: 1,
d: "Returns the number of empty values in a list of values and ranges.",
a: "Number of empty values.",
m: [1, 1],
p: [{
name: "value1",
detail: "The first value or range in which to count the number of blanks.",
example: "A2:C100",
require: "m",
repeat: "n",
type: "range"
}]
}, {
n: "COSH",
t: 0,
d: "Returns the hyperbolic cosine of any real number.",
a: "Hyperbolic cosine of any real number.",
m: [1, 1],
p: [{
name: "value",
detail: "Any real value to calculate the hyperbolic cosine of.",
example: "A2",
require: "m",
repeat: "n",
type: "rangenumber"
}]
}, {
n: "INT",
t: 0,
d: "Rounds a number down to the nearest integer that is less than or equal to it.",
a: "Rounds number down to nearest integer.",
m: [1, 1],
p: [{
name: "value",
detail: "The value to round down to the nearest integer.",
example: "99.44",
require: "m",
repeat: "n",
type: "rangenumber"
}]
}, {
n: "ISEVEN",
t: 0,
d: "Checks whether the provided value is even.",
a: "Whether the provided value is even.",
m: [1, 1],
p: [{
name: "value",
detail: "The value to be verified as even.",
example: "4",
require: "m",
repeat: "n",
type: "rangenumber"
}]
}, {
n: "ISODD",
t: 0,
d: "Checks whether the provided value is odd.",
a: "Whether the provided value is odd.",
m: [1, 1],
p: [{
name: "value",
detail: "The value to be verified as odd.",
example: "4",
require: "m",
repeat: "n",
type: "rangenumber"
}]
}, {
n: "LCM",
t: 0,
d: "Returns the least common multiple of one or more integers.",
a: "Least common multiple of one or more integers.",
m: [1, 255],
p: [{
name: "value1",
detail: "The first value or range whose factors to consider in a calculation to find the least common multiple.",
example: "A2:A5",
require: "m",
repeat: "n",
type: "rangeall"
}, {
name: "value2",
detail: "Additional values or ranges whose factors to consider to find the least common multiple.",
example: "3",
require: "o",
repeat: "y",
type: "rangeall"
}]
}, {
n: "LN",
t: 0,
d: "Returns the logarithm of a number, base e (Euler's number).",
a: "The logarithm of a number, base e (euler's number).",
m: [1, 1],
p: [{
name: "value",
detail: "The value for which to calculate the logarithm, base e.",
example: "100",
require: "m",
repeat: "n",
type: "rangenumber"
}]
}, {
n: "LOG",
t: 0,
d: "Returns the logarithm of a number with respect to a base.",
a: "The logarithm of a number with respect to a base.",
m: [1, 2],
p: [{
name: "value",
detail: "The value for which to calculate the logarithm.",
example: "128",
require: "m",
repeat: "n",
type: "rangenumber"
}, {
name: "base",
detail: "The base to use for calculation of the logarithm.",
example: "2",
require: "o",
repeat: "n",
type: "rangenumber"
}]
}, {
n: "LOG10",
t: 0,
d: "Returns the logarithm of a number, base 10.",
a: "The logarithm of a number, base 10.",
m: [1, 1],
p: [{
name: "value",
detail: "The value for which to calculate the logarithm, base 10.",
example: "100",
require: "m",
repeat: "n",
type: "rangenumber"
}]
}, {
n: "MOD",
t: 0,
d: "Returns the result of the modulo operator, the remainder after a division operation.",
a: "Modulo (remainder) operator.",
m: [2, 2],
p: [{
name: "dividend",
detail: "The number to be divided to find the remainder.",
example: "10",
require: "m",
repeat: "n",
type: "rangenumber"
}, {
name: "divisor",
detail: "The number to divide by.",
example: "4",
require: "m",
repeat: "n",
type: "rangenumber"
}]
}, {
n: "MROUND",
t: 0,
d: "Rounds one number to the nearest integer multiple of another.",
a: "Rounds a number to the nearest integer multiple.",
m: [2, 2],
p: [{
name: "value",
detail: "The number to round to the nearest integer multiple of another.",
example: "21",
require: "m",
repeat: "n",
type: "rangenumber"
}, {
name: "factor",
detail: "The number to whose multiples `value` will be rounded.",
example: "14",
require: "m",
repeat: "n",
type: "rangenumber"
}]
}, {
n: "ODD",
t: 0,
d: "Rounds a number up to the nearest odd integer.",
a: "Rounds a number up to the nearest odd integer.",
m: [1, 1],
p: [{
name: "value",
detail: "The value to round to the next greatest odd number.",
example: "2",
require: "m",
repeat: "n",
type: "rangenumber"
}]
}, {
n: "SUMSQ",
t: 0,
d: "Returns the sum of the squares of a series of numbers and/or cells.",
a: "Sum of squares.",
m: [1, 255],
p: [{
name: "value1",
detail: "The first number or range whose squares to add together.",
example: "A2:A100",
require: "m",
repeat: "n",
type: "rangeall"
}, {
name: "value2",
detail: "Additional numbers or ranges whose squares to add to the square(s) of `value1`.",
example: "2",
require: "o",
repeat: "y",
type: "rangeall"
}]
}, {
n: "COMBIN",
t: 0,
d: "Returns the number of ways to choose some number of objects from a pool of a given size of objects.",
a: "Number of combinations from a set of objects.",
m: [2, 2],
p: [{
name: "n",
detail: "The size of the pool of objects to choose from.",
example: "4",
require: "m",
repeat: "n",
type: "rangenumber"
}, {
name: "k",
detail: "The number of objects to choose.",
example: "2",
require: "m",
repeat: "n",
type: "rangenumber"
}]
}, {
n: "SUM",
t: 0,
d: "Returns the sum of a series of numbers and/or cells.",
a: "Sum of a series of numbers and/or cells.",
m: [1, 255],
p: [{
name: "value1",
detail: "The first number or range to add together.",
example: "A2:A100",
require: "m",
repeat: "n",
type: "rangeall"
}, {
name: "value2",
detail: "Additional numbers or ranges to add to `value1`.",
example: "2",
require: "o",
repeat: "y",
type: "rangeall"
}]
}, {
n: "SUBTOTAL",
t: 0,
d: "Returns a subtotal for a vertical range of cells using a specified aggregation function.",
a: "Subtotal for a range using a specific function.",
m: [2, 256],
p: [{
name: "function_code",
detail: "The function to use in subtotal aggregation.",
example: "1",
require: "m",
repeat: "n",
type: "rangenumber"
}, {
name: "range1",
detail: "The first range over which to calculate a subtotal.",
example: "A2:A5",
require: "m",
repeat: "n",
type: "range"
}, {
name: "range2",
detail: "Additional ranges over which to calculate subtotals.",
example: "B2:B8",
require: "o",
repeat: "y",
type: "range"
}]
}, {
n: "ASIN",
t: 0,
d: "Returns the inverse sine of a value, in radians.",
a: "Inverse sine of a value, in radians.",
m: [1, 1],
p: [{
name: "value",
detail: "The value for which to calculate the inverse sine. Must be between `-1` and `1`, inclusive.",
example: "0",
require: "m",
repeat: "n",
type: "rangenumber"
}]
}, {
n: "COUNTIF",
t: 1,
d: "Returns a conditional count across a range.",
a: "A conditional count across a range.",
m: [2, 2],
p: [{
name: "range",
detail: "The range that is tested against `criterion`.",
example: "A1:A10",
require: "m",
repeat: "n",
type: "range"
}, {
name: "criterion",
detail: "The pattern or test to apply to `range`.",
example: '">20"',
require: "m",
repeat: "n",
type: "rangeall"
}]
}, {
n: "RADIANS",
t: 0,
d: "Converts an angle value in degrees to radians.",
a: "Converts an angle value in degrees to radians.",
m: [1, 1],
p: [{
name: "angle",
detail: "The angle to convert from degrees to radians.",
example: "180",
require: "m",
repeat: "n",
type: "rangenumber"
}]
}, {
n: "RAND",
t: 0,
d: "Returns a random number between 0 inclusive and 1 exclusive.",
a: "A random number between 0 inclusive and 1 exclusive.",
m: [0, 0],
p: []
}, {
n: "COUNTUNIQUE",
t: 0,
d: "Counts the number of unique values in a list of specified values and ranges.",
a: "Counts number of unique values in a range.",
m: [1, 255],
p: [{
name: "value1",
detail: "The first value or range to consider for uniqueness.",
example: "A1:C100",
require: "m",
repeat: "n",
type: "rangeall"
}, {
name: "value2",
detail: "Additional values or ranges to consider for uniqueness.",
example: "1",
require: "o",
repeat: "n",
type: "rangeall"
}]
}, {
n: "DEGREES",
t: 0,
d: "Converts an angle value in radians to degrees.",
a: "Converts an angle value in radians to degrees.",
m: [1, 1],
p: [{
name: "angle",
detail: "The angle to convert from radians to degrees.",
example: "PI()",
require: "m",
repeat: "n",
type: "rangenumber"
}]
}, {
n: "ERFC",
t: 9,
d: "Returns the complementary Gauss error function of a value.",
a: "Complementary gauss error function of a value.",
m: [1, 1],
p: [{
name: "z",
detail: "The number for which to calculate the complementary Gauss error function.",
example: "2",
require: "m",
repeat: "n",
type: "rangenumber"
}]
}, {
n: "EVEN",
t: 0,
d: "Rounds a number up to the nearest even integer.",
a: "Rounds a number up to the nearest even integer.",
m: [1, 1],
p: [{
name: "value",
detail: "The value to round to the next greatest even number.",
example: "3",
require: "m",
repeat: "n",
type: "rangenumber"
}]
}, {
n: "EXP",
t: 0,
d: "Returns Euler's number, e (~2.718) raised to a power.",
a: "Euler's number, e (~2.718) raised to a power.",
m: [1, 1],
p: [{
name: "exponent",
detail: "The exponent to raise e to.",
example: "2",
require: "m",
repeat: "n",
type: "rangenumber"
}]
}, {
n: "FACT",
t: 0,
d: "Returns the factorial of a number.",
a: "Factorial of a number.",
m: [1, 1],
p: [{
name: "value",
detail: "The number or reference to a number whose factorial will be calculated and returned.",
example: "3",
require: "m",
repeat: "n",
type: "rangenumber"
}]
}, {
n: "FACTDOUBLE",
t: 0,
d: 'Returns the "double factorial" of a number.',
a: '"double factorial" of a number.',
m: [1, 1],
p: [{
name: "value",
detail: "The number or reference to a number whose double factorial will be calculated and returned.",
example: "6",
require: "m",
repeat: "n",
type: "rangenumber"
}]
}, {
n: "PI",
t: 0,
d: "Returns the value of Pi to 14 decimal places.",
a: "The number pi.",
m: [0, 0],
p: []
}, {
n: "FLOOR",
t: 0,
d: "Rounds a number down to the nearest integer multiple of specified significance `factor`.",
a: "Rounds number down to nearest multiple of a factor.",
m: [2, 2],
p: [{
name: "value",
detail: "The value to round down to the nearest integer multiple of `factor`.",
example: "23.25",
require: "m",
repeat: "n",
type: "rangenumber"
}, {
name: "factor",
detail: "The number to whose multiples `value` will be rounded.",
example: "0.1",
require: "m",
repeat: "n",
type: "rangenumber"
}]
}, {
n: "GCD",
t: 0,
d: "Returns the greatest common divisor of one or more integers.",
a: "Greatest common divisor of one or more integers.",
m: [1, 255],
p: [{
name: "value1",
detail: "The first value or range whose factors to consider in a calculation to find the greatest common divisor.",
example: "A2:A5",
require: "m",
repeat: "n",
type: "rangeall"
}, {
name: "value2",
detail: "Additional values or ranges whose factors to consider to find the greatest common divisor.",
example: "96",
require: "o",
repeat: "y",
type: "rangeall"
}]
}, {
n: "RANDBETWEEN",
t: 0,
d: "Returns a uniformly random integer between two values, inclusive.",
a: "Random integer between two values, inclusive.",
m: [2, 2],
p: [{
name: "low",
detail: "The low end of the random range.",
example: "1",
require: "m",
repeat: "n",
type: "rangenumber"
}, {
name: "high",
detail: "The high end of the random range.",
example: "10",
require: "m",
repeat: "n",
type: "rangenumber"
}]
}, {
n: "ROUND",
t: 0,
d: "Rounds a number to a certain number of decimal places according to standard rules.",
a: "Rounds a number according to standard rules.",
m: [2, 2],
p: [{
name: "value",
detail: "The value to round to `places` number of places.",
example: "99.44",
require: "m",
repeat: "n",
type: "rangenumber"
}, {
name: "places",
detail: "The number of decimal places to which to round.",
example: "1",
require: "m",
repeat: "n",
type: "rangenumber"
}]
}, {
n: "ROUNDDOWN",
t: 0,
d: "Rounds a number to a certain number of decimal places, always rounding down to the next valid increment.",
a: "Rounds down a number.",
m: [2, 2],
p: [{
name: "value",
detail: "The value to round to `places` number of places, always rounding down.",
example: "99.44",
require: "m",
repeat: "n",
type: "rangenumber"
}, {
name: "places",
detail: "The number of decimal places to which to round.",
example: "1",
require: "m",
repeat: "n",
type: "rangenumber"
}]
}, {
n: "ROUNDUP",
t: 0,
d: "Rounds a number to a certain number of decimal places, always rounding up to the next valid increment.",
a: "Rounds up a number.",
m: [2, 2],
p: [{
name: "value",
detail: "The value to round to `places` number of places, always rounding up.",
example: "99.44",
require: "m",
repeat: "n",
type: "rangenumber"
}, {
name: "places",
detail: "The number of decimal places to which to round.",
example: "1",
require: "m",
repeat: "n",
type: "rangenumber"
}]
}, {
n: "SERIESSUM",
t: 0,
d: "Given parameters `x`, `n`, `m`, and `a`, returns the power series sum a",
a: "Sum of a power series.",
m: [4, 4],
p: [{
name: "x",
detail: "The input to the power series. Varies depending on the type of approximation, may be angle, exponent, or some other value.",
example: "1",
require: "m",
repeat: "n",
type: "rangenumber"
}, {
name: "n",
detail: "The initial power to which to raise `x` in the power series.",
example: "0",
require: "m",
repeat: "n",
type: "rangenumber"
}, {
name: "m",
detail: "The additive increment by which to increase `x`.",
example: "1",
require: "m",
repeat: "n",
type: "rangenumber"
}, {
name: "a",
detail: "The array or range containing the coefficients of the power series.",
example: "{FACT(0)",
require: "m",
repeat: "n",
type: "rangenumber"
}]
}, {
n: "SIGN",
t: 0,
d: "Given an input number, returns `-1` if it is negative, `1` if positive, and `0` if it is zero.",
a: "Sign of a provided number (+/-/0).",
m: [1, 1],
p: [{
name: "value",
detail: "The value whose sign will be evaluated.",
example: "-42",
require: "m",
repeat: "n",
type: "rangenumber"
}]
}, {
n: "SIN",
t: 0,
d: "Returns the sine of an angle provided in radians.",
a: "Sine of an angle provided in radians.",
m: [1, 1],
p: [{
name: "angle",
detail: "The angle to find the sine of, in radians.",
example: "PI()",
require: "m",
repeat: "n",
type: "rangenumber"
}]
}, {
n: "SINH",
t: 0,
d: "Returns the hyperbolic sine of any real number.",
a: "Hyperbolic sine of any real number.",
m: [1, 1],
p: [{
name: "value",
detail: "Any real value to calculate the hyperbolic sine of.",
example: "A2",
require: "m",
repeat: "n",
type: "rangenumber"
}]
}, {
n: "SQRT",
t: 0,
d: "Returns the positive square root of a positive number.",
a: "Positive square root of a positive number.",
m: [1, 1],
p: [{
name: "value",
detail: "The number for which to calculate the positive square root.",
example: "9",
require: "m",
repeat: "n",
type: "rangenumber"
}]
}, {
n: "SQRTPI",
t: 0,
d: "Returns the positive square root of the product of Pi and the given positive number.",
a: "Square root of the product of pi and number.",
m: [1, 1],
p: [{
name: "value",
detail: "The number which will be multiplied by Pi and have the product's square root returned",
example: "9",
require: "m",
repeat: "n",
type: "rangenumber"
}]
}, {
n: "GAMMALN",
t: 1,
d: "Returns the logarithm of a specified Gamma function, base e (Euler's number).",
a: "Logarithm of gamma function.",
m: [1, 1],
p: [{
name: "value",
detail: "The input to the Gamma function. The natural logarithm of Gamma(`value`) will be returned.",
example: "4",
require: "m",
repeat: "n",
type: "rangenumber"
}]
}, {
n: "COS",
t: 0,
d: "Returns the cosine of an angle provided in radians.",
a: "Cosine of an angle provided in radians.",
m: [1, 1],
p: [{
name: "angle",
detail: "The angle to find the cosine of, in radians.",
example: "PI()",
require: "m",
repeat: "n",
type: "rangenumber"
}]
}, {
n: "TRUNC",
t: 0,
d: "Truncates a number to a certain number of significant digits by omitting less significant digits.",
a: "Truncates a number.",
m: [1, 2],
p: [{
name: "value",
detail: "The value to be truncated.",
example: "3.141592654",
require: "m",
repeat: "n",
type: "rangenumber"
}, {
name: "places",
detail: "The number of significant digits to the right of the decimal point to retain.",
example: "2",
require: "o",
repeat: "n",
type: "rangenumber"
}]
}, {
n: "QUOTIENT",
t: 0,
d: "Returns one number divided by another.",
a: "One number divided by another.",
m: [2, 2],
p: [{
name: "dividend",
detail: "The number to be divided.",
example: "4",
require: "m",
repeat: "n",
type: "rangenumber"
}, {
name: "divisor",
detail: "The number to divide by.",
example: "2",
require: "m",
repeat: "n",
type: "rangenumber"
}]
}, {
n: "POWER",
t: 0,
d: "Returns a number raised to a power.",
a: "A number raised to a power.",
m: [2, 2],
p: [{
name: "base",
detail: "The number to raise to the `exponent` power.",
example: "4",
require: "m",
repeat: "n",
type: "rangenumber"
}, {
name: "exponent",
detail: "The exponent to raise `base` to.",
example: "0.5",
require: "m",
repeat: "n",
type: "rangenumber"
}]
}, {
n: "SUMIFS",
t: 0,
d: "Returns the sum of a range depending on multiple criteria.",
a: "Sums a range depending on multiple criteria.",
m: [3, 257],
p: [{
name: "sum_range",
detail: "The range to sum.",
example: "A1:A10",
require: "m",
repeat: "n",
type: "range"
}, {
name: "criteria_range1",
detail: "The range to check against criterion1.",
example: " B1:B10",
require: "m",
repeat: "n",
type: "range"
}, {
name: "criterion1",
detail: "The pattern or test to apply to criteria_range1.",
example: ' ">20"',
require: "m",
repeat: "n",
type: "rangeall"
}, {
name: "criteria_range2",
detail: "Additional ranges to check.",
example: " C1:C10",
require: "o",
repeat: "y",
type: "rangeall"
}]
}, {
n: "COUNTIFS",
t: 1,
d: "Returns the count of a range depending on multiple criteria.",
a: "Count values depending on multiple criteria.",
m: [2, 256],
p: [{
name: "criteria_range1",
detail: "The range to check against `criterion1`.",
example: "A1:A10",
require: "m",
repeat: "n",
type: "range"
}, {
name: "criterion1",
detail: "The pattern or test to apply to `criteria_range1`.",
example: ' ">20"',
require: "m",
repeat: "n",
type: "rangeall"
}, {
name: "criteria_range2",
detail: "Additional ranges to check.",
example: " B1:B10",
require: "o",
repeat: "y",
type: "rangeall"
}]
}, {
n: "PRODUCT",
t: 0,
d: "Returns the result of multiplying a series of numbers together.",
a: "Result of multiplying a series of numbers together.",
m: [1, 255],
p: [{
name: "factor1",
detail: "The first number or range to calculate for the product.",
example: "A2:A100",
require: "m",
repeat: "n",
type: "rangenumber"
}, {
name: "factor2",
detail: "More numbers or ranges to calculate for the product.",
example: "2",
require: "o",
repeat: "y",
type: "rangenumber"
}]
}, {
n: "HARMEAN",
t: 1,
d: "Calculates the harmonic mean of a dataset.",
a: "The harmonic mean of a dataset.",
m: [1, 255],
p: [{
name: "value1",
detail: "The first value or range of the population.",
example: "1",
require: "m",
repeat: "n",
type: "rangenumber"
}, {
name: "value2",
detail: "Additional values or ranges to include in the population.",
example: "2",
require: "o",
repeat: "y",
type: "rangenumber"
}]
}, {
n: "HYPGEOMDIST",
t: 1,
d: "Calculates the probability of drawing a certain number of successes in a certain number of tries given a population of a certain size containing a certain number of successes, without replacement of draws.",
a: "Hypergeometric distribution probability.",
m: [5, 5],
p: [{
name: "num_successes",
detail: "The desired number of successes.",
example: "4",
require: "m",
repeat: "n",
type: "rangenumber"
}, {
name: "num_draws",
detail: "The number of permitted draws.",
example: "12",
require: "m",
repeat: "n",
type: "rangenumber"
}, {
name: "successes_in_pop",
detail: "The total number of successes in the population.",
example: "20",
require: "m",
repeat: "n",
type: "rangenumber"
}, {
name: "pop_size",
detail: "The total size of the population",
example: "40",
require: "m",
repeat: "n",
type: "rangenumber"
}, {
name: "cumulative",
detail: "Determine the logical value of the function form. \n\nIf cumulative is TRUE(), HYPGEOM.DIST returns the cumulative distribution function;\n\nif FALSE(), it returns the probability density function.",
example: "TRUE()",
require: "m",
repeat: "n",
type: "rangeall"
}]
}, {
n: "INTERCEPT",
t: 1,
d: "Calculates the y-value at which the line resulting from linear regression of a dataset will intersect the y-axis (x=0).",
a: "Y-intercept of line derived via linear regression.",
m: [2, 2],
p: [{
name: "data_y",
detail: "The range representing the array or matrix of dependent data.",
example: "A2:A100",
require: "m",
repeat: "n",
type: "rangenumber"
}, {
name: "data_x",
detail: "The range representing the array or matrix of independent data.",
example: "B2:B100",
require: "m",
repeat: "n",
type: "rangenumber"
}]
}, {
n: "KURT",
t: 1,
d: 'Calculates the kurtosis of a dataset, which describes the shape, and in particular the "peakedness" of that dataset.',
a: "Kurtosis of a dataset.",
m: [1, 255],
p: [{
name: "value1",
detail: "The first value or range of the dataset.",
example: "1",
require: "m",
repeat: "n",
type: "rangenumber"
}, {
name: "value2",
detail: "Additional values or ranges to include in the dataset.",
example: "2",
require: "o",
repeat: "y",
type: "rangenumber"
}]
}, {
n: "LARGE",
t: 1,
d: "Returns the nth largest element from a data set, where n is user-defined.",
a: "Nth largest element from a data set.",
m: [2, 2],
p: [{
name: "data",
detail: "Array or range containing the dataset to consider.",
example: "A2:B100",
require: "m",
repeat: "n",
type: "rangenumber"
}, {
name: "n",
detail: "The rank from largest to smallest of the element to return.",
example: "4",
require: "m",
repeat: "n",
type: "rangenumber"
}]
}, {
n: "STDEVA",
t: 1,
d: "Calculates the standard deviation based on a sample, setting text to the value `0`.",
a: "Standard deviation of sample (text as 0).",
m: [1, 255],
p: [{
name: "value1",
detail: "The first value or range of the sample.",
example: "1",
require: "m",
repeat: "n",
type: "rangenumber"
}, {
name: "value2",
detail: "Additional values or ranges to include in the sample.",
example: "2",
require: "o",
repeat: "y",
type: "rangenumber"
}]
}, {
n: "STDEVP",
t: 1,
d: "Calculates the standard deviation based on an entire population.",
a: "Standard deviation of an entire population.",
m: [1, 255],
p: [{
name: "value1",
detail: "The first value or range of the population.",
example: "1",
require: "m",
repeat: "n",
type: "rangenumber"
}, {
name: "value2",
detail: "Additional values or ranges to include in the population.",
example: "2",
require: "o",
repeat: "y",
type: "rangenumber"
}]
}, {
n: "GEOMEAN",
t: 1,
d: "Calculates the geometric mean of a dataset.",
a: "The geometric mean of a dataset.",
m: [1, 255],
p: [{
name: "value1",
detail: "The first value or range of the population.",
example: "1",
require: "m",
repeat: "n",
type: "rangeall"
}, {
name: "value2",
detail: "Additional values or ranges to include in the population.",
example: "2",
require: "o",
repeat: "y",
type: "rangeall"
}]
}, {
n: "RANK_EQ",
t: 1,
d: "Returns the rank of a specified value in a dataset. If there is more than one entry of the same value in the dataset, the top rank of the entries will be returned.",
a: "Top rank of a specified value in a dataset.",
m: [2, 3],
p: [{
name: "value",
detail: "The value whose rank will be determined.",
example: "A10",
require: "m",
repeat: "n",
type: "rangenumber"
}, {
name: "data",
detail: "The array or range containing the dataset to consider.",
example: "A1:A100",
require: "m",
repeat: "n",
type: "range"
}, {
name: "is_ascending",
detail: "Whether to consider the values in `data` in descending or ascending order. If omitted, the default is descending (FALSE).",
example: "TRUE()",
require: "o",
repeat: "n",
type: "rangeall"
}]
}, {
n: "RANK_AVG",
t: 1,
d: "Returns the rank of a specified value in a dataset. If there is more than one entry of the same value in the dataset, the average rank of the entries will be returned.",
a: "Average rank of a specified value in a dataset.",
m: [2, 3],
p: [{
name: "value",
detail: "The value whose rank will be determined.",
example: "A10",
require: "m",
repeat: "n",
type: "rangenumber"
}, {
name: "data",
detail: "The array or range containing the dataset to consider.",
example: "A1:A100",
require: "m",
repeat: "n",
type: "range"
}, {
name: "is_ascending",
detail: "Whether to consider the values in `data` in descending or ascending order. If omitted, the default is descending (FALSE).",
example: "TRUE()",
require: "o",
repeat: "n",
type: "rangeall"
}]
}, {
n: "PERCENTRANK_EXC",
t: 1,
d: "Returns the percentage rank (percentile) from 0 to 1 exclusive of a specified value in a dataset.",
a: "Percentage rank (percentile) from 0 to 1 exclusive.",
m: [2, 3],
p: [{
name: "data",
detail: "The array or range containing the dataset to consider.",
example: "A1:A100",
require: "m",
repeat: "n",
type: "rangenumber"
}, {
name: "value",
detail: "The value whose percentage rank will be determined.",
example: "A2",
require: "m",
repeat: "n",
type: "rangenumber"
}, {
name: "significant_digits",
detail: "The number of significant figures to use in the calculation. Default is 3.",
example: "4",
require: "o",
repeat: "n",
type: "rangenumber"
}]
}, {
n: "PERCENTRANK_INC",
t: 1,
d: "Returns the percentage rank (percentile) from 0 to 1 inclusive of a specified value in a dataset.",
a: "Percentage rank (percentile) from 0 to 1 inclusive.",
m: [2, 3],
p: [{
name: "data",
detail: "The array or range containing the dataset to consider.",
example: "A1:A100",
require: "m",
repeat: "n",
type: "rangenumber"
}, {
name: "value",
detail: "The value whose percentage rank will be determined.",
example: " A2",
require: "m",
repeat: "n",
type: "rangenumber"
}, {
name: "significant_digits",
detail: "The number of significant figures to use in the calculation. Default is 3.",
example: "4",
require: "o",
repeat: "n",
type: "rangenumber"
}]
}, {
n: "FORECAST",
t: 1,
d: "Calculates the expected y-value for a specified x based on a linear regression of a dataset.",
a: "Expected y-value based of linear regression.",
m: [3, 3],
p: [{
name: "x",
detail: "The value on the x-axis to forecast.",
example: "A1",
require: "m",
repeat: "n",
type: "rangenumber"
}, {
name: "data_y",
detail: "The range representing the array or matrix of dependent data.",
example: "A2:A100",
require: "m",
repeat: "n",
type: "rangenumber"
}, {
name: "data_x",
detail: "The range representing the array or matrix of independent data.",
example: "B2:B100",
require: "m",
repeat: "n",
type: "rangenumber"
}]
}, {
n: "FISHERINV",
t: 1,
d: "Returns the inverse Fisher transformation of a specified value.",
a: "Inverse fisher transformation of a specified value.",
m: [1, 1],
p: [{
name: "value",
detail: "The value for which to calculate the inverse Fisher transformation.",
example: "0.962",
require: "m",
repeat: "n",
type: "rangenumber"
}]
}, {
n: "FISHER",
t: 1,
d: "Returns the Fisher transformation of a specified value.",
a: "Fisher transformation of a specified value.",
m: [1, 1],
p: [{
name: "value",
detail: "The value for which to calculate the Fisher transformation.",
example: "0.962",
require: "m",
repeat: "n",
type: "rangenumber"
}]
}, {
n: "MODE_SNGL",
t: 1,
d: "Returns the most commonly occurring value in a dataset.",
a: "Most commonly occurring value in a dataset.",
m: [1, 255],
p: [{
name: "value1",
detail: "The first value or range to consider when calculating mode.",
example: "A2:A100",
require: "m",
repeat: "n",
type: "rangenumber"
}, {
name: "value2",
detail: "Additional values or ranges to consider when calculating mode.",
example: "B2:B100",
require: "o",
repeat: "y",
type: "rangenumber"
}]
}, {
n: "WEIBULL_DIST",
t: 1,
d: "Returns the value of the Weibull distribution function (or Weibull cumulative distribution function) for a specified shape and scale.",
a: "Weibull distribution function.",
m: [4, 4],
p: [{
name: "x",
detail: "The input to the Weibull distribution function.",
example: "2.4",
require: "m",
repeat: "n",
type: "rangenumber"
}, {
name: "shape",
detail: "The shape parameter of the Weibull distribution function.",
example: "2",
require: "m",
repeat: "n",
type: "rangenumber"
}, {
name: "scale",
detail: "The scale parameter of the Weibull distribution function.",
example: "3",
require: "m",
repeat: "n",
type: "rangenumber"
}, {
name: "cumulative",
detail: "Whether to use the cumulative distribution function.",
example: "TRUE()",
require: "m",
repeat: "n",
type: "rangeall"
}]
}, {
n: "COUNT",
t: 1,
d: "Returns the number of numeric values in a dataset.",
a: "The number of numeric values in dataset.",
m: [1, 255],
p: [{
name: "value1",
detail: "The first value or range to consider when counting.",
example: "A2:A100",
require: "m",
repeat: "n",
type: "rangeall"
}, {
name: "value2",
detail: "Additional values or ranges to consider when counting.",
example: "B2:B100",
require: "o",
repeat: "y",
type: "rangeall"
}]
}, {
n: "COUNTA",
t: 1,
d: "Returns the number of values in a dataset.",
a: "The number of values in a dataset.",
m: [1, 255],
p: [{
name: "value1",
detail: "The first value or range to consider when counting.",
example: "A2:A100",
require: "m",
repeat: "n",
type: "rangeall"
}, {
name: "value2",
detail: "Additional values or ranges to consider when counting.",
example: "B2:B100",
require: "o",
repeat: "y",
type: "rangeall"
}]
}, {
n: "AVEDEV",
t: 1,
d: "Calculates the average of the magnitudes of deviations of data from a dataset's mean.",
a: "Average magnitude of deviations from mean.",
m: [1, 255],
p: [{
name: "value1",
detail: "The first value or range of the sample.",
example: "1",
require: "m",
repeat: "n",
type: "rangenumber"
}, {
name: "value2",
detail: "Additional values or ranges to include in the sample.",
example: "2",
require: "o",
repeat: "y",
type: "rangenumber"
}]
}, {
n: "AVERAGE",
t: 1,
d: "Returns the numerical average value in a dataset, ignoring text.",
a: "Numerical average value in a dataset, ignoring text.",
m: [1, 255],
p: [{
name: "value1",
detail: "The first value or range to consider when calculating the average value.",
example: "A2:A100",
require: "m",
repeat: "n",
type: "rangeall"
}, {
name: "value2",
detail: "Additional values or ranges to consider when calculating the average value.",
example: "B2:B100",
require: "o",
repeat: "y",
type: "rangeall"
}]
}, {
n: "AVERAGEA",
t: 1,
d: "Returns the numerical average value in a dataset.",
a: "Numerical average value in a dataset.",
m: [1, 255],
p: [{
name: "value1",
detail: "The first value or range to consider when calculating the average value.",
example: "A2:A100",
require: "m",
repeat: "n",
type: "rangeall"
}, {
name: "value2",
detail: "Additional values or ranges to consider when calculating the average value.",
example: "B2:B100",
require: "o",
repeat: "y",
type: "rangeall"
}]
}, {
n: "BINOM_DIST",
t: 1,
d: "Calculates the probability of drawing a certain number of successes (or a maximum number of successes) in a certain number of tries given a population of a certain size containing a certain number of successes, with replacement of draws.",
a: "Binomial distribution probability.",
m: [4, 4],
p: [{
name: "num_successes",
detail: "The number of successes for which to calculate the probability in `num_trials` trials.",
example: "4",
require: "m",
repeat: "n",
type: "rangenumber"
}, {
name: "num_trials",
detail: "The number of independent trials.",
example: "100",
require: "m",
repeat: "n",
type: "rangenumber"
}, {
name: "prob_success",
detail: "The probability of success in any given trial.",
example: "0.005",
require: "m",
repeat: "n",
type: "rangenumber"
}, {
name: "cumulative",
detail: "Whether to use the binomial cumulative distribution.",
example: "FALSE()",
require: "m",
repeat: "n",
type: "rangeall"
}]
}, {
n: "BINOM_INV",
t: 1,
d: "Calculates the smallest value for which the cumulative binomial distribution is greater than or equal to a specified criteria.",
a: "Inverse cumulative binomial distribution function.",
m: [3, 3],
p: [{
name: "num_trials",
detail: "The number of independent trials.",
example: "100",
require: "m",
rep