Merge branch 'master' into Page-Setup-Page-Order
This commit is contained in:
commit
0489e785d2
|
@ -17,7 +17,7 @@ before_script:
|
||||||
- composer install --ignore-platform-reqs
|
- composer install --ignore-platform-reqs
|
||||||
|
|
||||||
script:
|
script:
|
||||||
- ./vendor/bin/phpunit
|
- ./vendor/bin/phpunit --color=always --coverage-text
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
include:
|
include:
|
||||||
|
|
|
@ -10,6 +10,7 @@ and this project adheres to [Semantic Versioning](https://semver.org).
|
||||||
### Added
|
### Added
|
||||||
|
|
||||||
- Implemented Page Order for Xlsx and Xls Readers, and provided Page Settings (Orientation, Scale, Horizontal/Vertical Centering, Page Order, Margins) support for Ods, Gnumeric and Xls Readers [#1559](https://github.com/PHPOffice/PhpSpreadsheet/pull/1559)
|
- Implemented Page Order for Xlsx and Xls Readers, and provided Page Settings (Orientation, Scale, Horizontal/Vertical Centering, Page Order, Margins) support for Ods, Gnumeric and Xls Readers [#1559](https://github.com/PHPOffice/PhpSpreadsheet/pull/1559)
|
||||||
|
- Implementation of the Excel `LOGNORM.DIST()`, `NORM.S.DIST()`, `GAMMA()` and `GAUSS()` functions. [#1588](https://github.com/PHPOffice/PhpSpreadsheet/pull/1588)
|
||||||
|
|
||||||
### Changed
|
### Changed
|
||||||
|
|
||||||
|
|
|
@ -28,7 +28,7 @@
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"check": [
|
"check": [
|
||||||
"php-cs-fixer fix --ansi --dry-run --diff",
|
"php-cs-fixer fix --ansi --dry-run --diff",
|
||||||
"phpcs --report-width=200 samples/ src/ tests/ --ignore=samples/Header.php --standard=PSR2 -n",
|
"phpcs --report-width=200 samples/ src/ tests/ --ignore=samples/Header.php --standard=PSR12 -n",
|
||||||
"phpunit --color=always"
|
"phpunit --color=always"
|
||||||
],
|
],
|
||||||
"fix": [
|
"fix": [
|
||||||
|
|
|
@ -14,7 +14,7 @@ CUBEVALUE | **Not yet Implemented**
|
||||||
|
|
||||||
## CATEGORY_DATABASE
|
## CATEGORY_DATABASE
|
||||||
|
|
||||||
Excel Function | PhpSpreadsheet Function
|
Excel Function | PhpSpreadsheet Function
|
||||||
--------------------|-------------------------------------------
|
--------------------|-------------------------------------------
|
||||||
DAVERAGE | \PhpOffice\PhpSpreadsheet\Calculation\Database::DAVERAGE
|
DAVERAGE | \PhpOffice\PhpSpreadsheet\Calculation\Database::DAVERAGE
|
||||||
DCOUNT | \PhpOffice\PhpSpreadsheet\Calculation\Database::DCOUNT
|
DCOUNT | \PhpOffice\PhpSpreadsheet\Calculation\Database::DCOUNT
|
||||||
|
@ -229,6 +229,7 @@ AREAS | **Not yet Implemented**
|
||||||
CHOOSE | \PhpOffice\PhpSpreadsheet\Calculation\LookupRef::CHOOSE
|
CHOOSE | \PhpOffice\PhpSpreadsheet\Calculation\LookupRef::CHOOSE
|
||||||
COLUMN | \PhpOffice\PhpSpreadsheet\Calculation\LookupRef::COLUMN
|
COLUMN | \PhpOffice\PhpSpreadsheet\Calculation\LookupRef::COLUMN
|
||||||
COLUMNS | \PhpOffice\PhpSpreadsheet\Calculation\LookupRef::COLUMNS
|
COLUMNS | \PhpOffice\PhpSpreadsheet\Calculation\LookupRef::COLUMNS
|
||||||
|
FILTER | **Not yet Implemented**
|
||||||
FORMULATEXT | \PhpOffice\PhpSpreadsheet\Calculation\LookupRef::FORMULATEXT
|
FORMULATEXT | \PhpOffice\PhpSpreadsheet\Calculation\LookupRef::FORMULATEXT
|
||||||
GETPIVOTDATA | **Not yet Implemented**
|
GETPIVOTDATA | **Not yet Implemented**
|
||||||
HLOOKUP | \PhpOffice\PhpSpreadsheet\Calculation\LookupRef::HLOOKUP
|
HLOOKUP | \PhpOffice\PhpSpreadsheet\Calculation\LookupRef::HLOOKUP
|
||||||
|
@ -241,8 +242,13 @@ OFFSET | \PhpOffice\PhpSpreadsheet\Calculation\LookupRef::OFFSET
|
||||||
ROW | \PhpOffice\PhpSpreadsheet\Calculation\LookupRef::ROW
|
ROW | \PhpOffice\PhpSpreadsheet\Calculation\LookupRef::ROW
|
||||||
ROWS | \PhpOffice\PhpSpreadsheet\Calculation\LookupRef::ROWS
|
ROWS | \PhpOffice\PhpSpreadsheet\Calculation\LookupRef::ROWS
|
||||||
RTD | **Not yet Implemented**
|
RTD | **Not yet Implemented**
|
||||||
|
SORT | **Not yet Implemented**
|
||||||
|
SORTBY | **Not yet Implemented**
|
||||||
TRANSPOSE | \PhpOffice\PhpSpreadsheet\Calculation\LookupRef::TRANSPOSE
|
TRANSPOSE | \PhpOffice\PhpSpreadsheet\Calculation\LookupRef::TRANSPOSE
|
||||||
|
UNIQUE | **Not yet Implemented**
|
||||||
VLOOKUP | \PhpOffice\PhpSpreadsheet\Calculation\LookupRef::VLOOKUP
|
VLOOKUP | \PhpOffice\PhpSpreadsheet\Calculation\LookupRef::VLOOKUP
|
||||||
|
XLOOKUP | **Not yet Implemented**
|
||||||
|
XMATCH | **Not yet Implemented**
|
||||||
|
|
||||||
## CATEGORY_MATH_AND_TRIG
|
## CATEGORY_MATH_AND_TRIG
|
||||||
|
|
||||||
|
@ -253,6 +259,7 @@ ACOS | acos
|
||||||
ACOSH | acosh
|
ACOSH | acosh
|
||||||
ACOT | \PhpOffice\PhpSpreadsheet\Calculation\MathTrig::ACOT
|
ACOT | \PhpOffice\PhpSpreadsheet\Calculation\MathTrig::ACOT
|
||||||
ACOTH | \PhpOffice\PhpSpreadsheet\Calculation\MathTrig::ACOTH
|
ACOTH | \PhpOffice\PhpSpreadsheet\Calculation\MathTrig::ACOTH
|
||||||
|
AGGREGATE | **Not yet Implemented**
|
||||||
ARABIC | \PhpOffice\PhpSpreadsheet\Calculation\MathTrig::ARABIC
|
ARABIC | \PhpOffice\PhpSpreadsheet\Calculation\MathTrig::ARABIC
|
||||||
ASIN | asin
|
ASIN | asin
|
||||||
ASINH | asinh
|
ASINH | asinh
|
||||||
|
@ -261,13 +268,17 @@ ATAN2 | \PhpOffice\PhpSpreadsheet\Calculation\MathTrig::ATAN2
|
||||||
ATANH | atanh
|
ATANH | atanh
|
||||||
BASE | \PhpOffice\PhpSpreadsheet\Calculation\MathTrig::BASE
|
BASE | \PhpOffice\PhpSpreadsheet\Calculation\MathTrig::BASE
|
||||||
CEILING | \PhpOffice\PhpSpreadsheet\Calculation\MathTrig::CEILING
|
CEILING | \PhpOffice\PhpSpreadsheet\Calculation\MathTrig::CEILING
|
||||||
|
CEILING.MATH | **Not yet Implemented**
|
||||||
|
CEILING.PRECISE | **Not yet Implemented**
|
||||||
COMBIN | \PhpOffice\PhpSpreadsheet\Calculation\MathTrig::COMBIN
|
COMBIN | \PhpOffice\PhpSpreadsheet\Calculation\MathTrig::COMBIN
|
||||||
|
COMBINA | **Not yet Implemented**
|
||||||
COS | cos
|
COS | cos
|
||||||
COSH | cosh
|
COSH | cosh
|
||||||
COT | \PhpOffice\PhpSpreadsheet\Calculation\MathTrig::COT
|
COT | \PhpOffice\PhpSpreadsheet\Calculation\MathTrig::COT
|
||||||
COTH | \PhpOffice\PhpSpreadsheet\Calculation\MathTrig::COTH
|
COTH | \PhpOffice\PhpSpreadsheet\Calculation\MathTrig::COTH
|
||||||
CSC | \PhpOffice\PhpSpreadsheet\Calculation\MathTrig::CSC
|
CSC | \PhpOffice\PhpSpreadsheet\Calculation\MathTrig::CSC
|
||||||
CSCH | \PhpOffice\PhpSpreadsheet\Calculation\MathTrig::CSCH
|
CSCH | \PhpOffice\PhpSpreadsheet\Calculation\MathTrig::CSCH
|
||||||
|
DECIMAL | **Not yet Implemented**
|
||||||
DEGREES | rad2deg
|
DEGREES | rad2deg
|
||||||
EVEN | \PhpOffice\PhpSpreadsheet\Calculation\MathTrig::EVEN
|
EVEN | \PhpOffice\PhpSpreadsheet\Calculation\MathTrig::EVEN
|
||||||
EXP | exp
|
EXP | exp
|
||||||
|
@ -278,6 +289,7 @@ FLOOR.MATH | \PhpOffice\PhpSpreadsheet\Calculation\MathTrig::FLOORMATH
|
||||||
FLOOR.PRECISE | \PhpOffice\PhpSpreadsheet\Calculation\MathTrig::FLOORPRECISE
|
FLOOR.PRECISE | \PhpOffice\PhpSpreadsheet\Calculation\MathTrig::FLOORPRECISE
|
||||||
GCD | \PhpOffice\PhpSpreadsheet\Calculation\MathTrig::GCD
|
GCD | \PhpOffice\PhpSpreadsheet\Calculation\MathTrig::GCD
|
||||||
INT | \PhpOffice\PhpSpreadsheet\Calculation\MathTrig::INT
|
INT | \PhpOffice\PhpSpreadsheet\Calculation\MathTrig::INT
|
||||||
|
ISO.CEILING | **Not yet Implemented**
|
||||||
LCM | \PhpOffice\PhpSpreadsheet\Calculation\MathTrig::LCM
|
LCM | \PhpOffice\PhpSpreadsheet\Calculation\MathTrig::LCM
|
||||||
LN | log
|
LN | log
|
||||||
LOG | \PhpOffice\PhpSpreadsheet\Calculation\MathTrig::logBase
|
LOG | \PhpOffice\PhpSpreadsheet\Calculation\MathTrig::logBase
|
||||||
|
@ -288,6 +300,7 @@ MMULT | \PhpOffice\PhpSpreadsheet\Calculation\MathTrig::MMULT
|
||||||
MOD | \PhpOffice\PhpSpreadsheet\Calculation\MathTrig::MOD
|
MOD | \PhpOffice\PhpSpreadsheet\Calculation\MathTrig::MOD
|
||||||
MROUND | \PhpOffice\PhpSpreadsheet\Calculation\MathTrig::MROUND
|
MROUND | \PhpOffice\PhpSpreadsheet\Calculation\MathTrig::MROUND
|
||||||
MULTINOMIAL | \PhpOffice\PhpSpreadsheet\Calculation\MathTrig::MULTINOMIAL
|
MULTINOMIAL | \PhpOffice\PhpSpreadsheet\Calculation\MathTrig::MULTINOMIAL
|
||||||
|
MUNIT | **Not yet Implemented**
|
||||||
ODD | \PhpOffice\PhpSpreadsheet\Calculation\MathTrig::ODD
|
ODD | \PhpOffice\PhpSpreadsheet\Calculation\MathTrig::ODD
|
||||||
PI | pi
|
PI | pi
|
||||||
POWER | \PhpOffice\PhpSpreadsheet\Calculation\MathTrig::POWER
|
POWER | \PhpOffice\PhpSpreadsheet\Calculation\MathTrig::POWER
|
||||||
|
@ -295,6 +308,7 @@ PRODUCT | \PhpOffice\PhpSpreadsheet\Calculation\MathTrig::PRODUCT
|
||||||
QUOTIENT | \PhpOffice\PhpSpreadsheet\Calculation\MathTrig::QUOTIENT
|
QUOTIENT | \PhpOffice\PhpSpreadsheet\Calculation\MathTrig::QUOTIENT
|
||||||
RADIANS | deg2rad
|
RADIANS | deg2rad
|
||||||
RAND | \PhpOffice\PhpSpreadsheet\Calculation\MathTrig::RAND
|
RAND | \PhpOffice\PhpSpreadsheet\Calculation\MathTrig::RAND
|
||||||
|
RANDARRAY | **Not yet Implemented**
|
||||||
RANDBETWEEN | \PhpOffice\PhpSpreadsheet\Calculation\MathTrig::RAND
|
RANDBETWEEN | \PhpOffice\PhpSpreadsheet\Calculation\MathTrig::RAND
|
||||||
ROMAN | \PhpOffice\PhpSpreadsheet\Calculation\MathTrig::ROMAN
|
ROMAN | \PhpOffice\PhpSpreadsheet\Calculation\MathTrig::ROMAN
|
||||||
ROUND | round
|
ROUND | round
|
||||||
|
@ -303,6 +317,7 @@ ROUNDUP | \PhpOffice\PhpSpreadsheet\Calculation\MathTrig::ROUNDUP
|
||||||
SEC | \PhpOffice\PhpSpreadsheet\Calculation\MathTrig::SEC
|
SEC | \PhpOffice\PhpSpreadsheet\Calculation\MathTrig::SEC
|
||||||
SECH | \PhpOffice\PhpSpreadsheet\Calculation\MathTrig::SECH
|
SECH | \PhpOffice\PhpSpreadsheet\Calculation\MathTrig::SECH
|
||||||
SERIESSUM | \PhpOffice\PhpSpreadsheet\Calculation\MathTrig::SERIESSUM
|
SERIESSUM | \PhpOffice\PhpSpreadsheet\Calculation\MathTrig::SERIESSUM
|
||||||
|
SEQUENCE | **Not yet Implemented**
|
||||||
SIGN | \PhpOffice\PhpSpreadsheet\Calculation\MathTrig::SIGN
|
SIGN | \PhpOffice\PhpSpreadsheet\Calculation\MathTrig::SIGN
|
||||||
SIN | sin
|
SIN | sin
|
||||||
SINH | sinh
|
SINH | sinh
|
||||||
|
@ -323,99 +338,157 @@ TRUNC | \PhpOffice\PhpSpreadsheet\Calculation\MathTrig::TRUNC
|
||||||
|
|
||||||
## CATEGORY_STATISTICAL
|
## CATEGORY_STATISTICAL
|
||||||
|
|
||||||
Excel Function | PhpSpreadsheet Function
|
Excel Function | PhpSpreadsheet Function
|
||||||
--------------------|-------------------------------------------
|
-------------------------|-------------------------------------------
|
||||||
AVEDEV | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::AVEDEV
|
AVEDEV | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::AVEDEV
|
||||||
AVERAGE | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::AVERAGE
|
AVERAGE | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::AVERAGE
|
||||||
AVERAGEA | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::AVERAGEA
|
AVERAGEA | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::AVERAGEA
|
||||||
AVERAGEIF | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::AVERAGEIF
|
AVERAGEIF | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::AVERAGEIF
|
||||||
AVERAGEIFS | **Not yet Implemented**
|
AVERAGEIFS | **Not yet Implemented**
|
||||||
BETADIST | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::BETADIST
|
BETADIST | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::BETADIST
|
||||||
BETAINV | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::BETAINV
|
BETA.DIST | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::BETADIST
|
||||||
BINOMDIST | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::BINOMDIST
|
BETAINV | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::BETAINV
|
||||||
CHIDIST | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::CHIDIST
|
BETA.INV | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::BETAINV
|
||||||
CHIINV | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::CHIINV
|
BINOMDIST | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::BINOMDIST
|
||||||
CHITEST | **Not yet Implemented**
|
BINOM.DIST | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::BINOMDIST
|
||||||
CONFIDENCE | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::CONFIDENCE
|
BINOM.DIST.RANGE | **Not yet Implemented**
|
||||||
CORREL | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::CORREL
|
BINOM.INV | **Not yet Implemented**
|
||||||
COUNT | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::COUNT
|
CHIDIST | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::CHIDIST
|
||||||
COUNTA | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::COUNTA
|
CHISQ.DIST | **Not yet Implemented**
|
||||||
COUNTBLANK | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::COUNTBLANK
|
CHISQ.DIST.RT | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::CHIDIST
|
||||||
COUNTIF | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::COUNTIF
|
CHIINV | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::CHIINV
|
||||||
COUNTIFS | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::COUNTIFS
|
CHISQ.INV | **Not yet Implemented**
|
||||||
COVAR | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::COVAR
|
CHISQ.INV.RT | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::CHIINV
|
||||||
CRITBINOM | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::CRITBINOM
|
CHITEST | **Not yet Implemented**
|
||||||
DEVSQ | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::DEVSQ
|
CHISQ.TEST | **Not yet Implemented**
|
||||||
EXPONDIST | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::EXPONDIST
|
CONFIDENCE | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::CONFIDENCE
|
||||||
FDIST | **Not yet Implemented**
|
CONFIDENCE.NORM | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::CONFIDENCE
|
||||||
FINV | **Not yet Implemented**
|
CONFIDENCE.T | **Not yet Implemented**
|
||||||
FISHER | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::FISHER
|
CORREL | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::CORREL
|
||||||
FISHERINV | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::FISHERINV
|
COUNT | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::COUNT
|
||||||
FORECAST | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::FORECAST
|
COUNTA | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::COUNTA
|
||||||
FREQUENCY | **Not yet Implemented**
|
COUNTBLANK | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::COUNTBLANK
|
||||||
FTEST | **Not yet Implemented**
|
COUNTIF | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::COUNTIF
|
||||||
GAMMADIST | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::GAMMADIST
|
COUNTIFS | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::COUNTIFS
|
||||||
GAMMAINV | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::GAMMAINV
|
COVAR | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::COVAR
|
||||||
GAMMALN | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::GAMMALN
|
COVARIANCE.P | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::COVAR
|
||||||
GEOMEAN | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::GEOMEAN
|
COVARIANCE.S | **Not yet Implemented**
|
||||||
GROWTH | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::GROWTH
|
CRITBINOM | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::CRITBINOM
|
||||||
HARMEAN | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::HARMEAN
|
DEVSQ | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::DEVSQ
|
||||||
HYPGEOMDIST | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::HYPGEOMDIST
|
EXPONDIST | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::EXPONDIST
|
||||||
INTERCEPT | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::INTERCEPT
|
EXPON.DIST | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::EXPONDIST
|
||||||
KURT | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::KURT
|
FDIST | **Not yet Implemented**
|
||||||
LARGE | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::LARGE
|
F.DIST | **Not yet Implemented**
|
||||||
LINEST | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::LINEST
|
F.DIST.RT | **Not yet Implemented**
|
||||||
LOGEST | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::LOGEST
|
FINV | **Not yet Implemented**
|
||||||
LOGINV | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::LOGINV
|
F.INV | **Not yet Implemented**
|
||||||
LOGNORMDIST | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::LOGNORMDIST
|
F.INV.RT | **Not yet Implemented**
|
||||||
MAX | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::MAX
|
F.TEST | **Not yet Implemented**
|
||||||
MAXA | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::MAXA
|
FISHER | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::FISHER
|
||||||
MAXIFS | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::MAXIFS
|
FISHERINV | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::FISHERINV
|
||||||
MEDIAN | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::MEDIAN
|
FORECAST | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::FORECAST
|
||||||
MEDIANIF | **Not yet Implemented**
|
FORECAST.ETS | **Not yet Implemented**
|
||||||
MIN | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::MIN
|
FORECAST.ETS.CONFINT | **Not yet Implemented**
|
||||||
MINA | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::MINA
|
FORECAST.ETS.SEASONALITY | **Not yet Implemented**
|
||||||
MINIFS | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::MINIFS
|
FORECAST.ETS.STAT | **Not yet Implemented**
|
||||||
MODE | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::MODE
|
FORECAST.LINEAR | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::FORECAST
|
||||||
MODE.SNGL | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::MODE
|
FREQUENCY | **Not yet Implemented**
|
||||||
NEGBINOMDIST | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::NEGBINOMDIST
|
FTEST | **Not yet Implemented**
|
||||||
NORMDIST | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::NORMDIST
|
GAMMA | **Not yet Implemented**
|
||||||
NORMINV | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::NORMINV
|
GAMMADIST | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::GAMMADIST
|
||||||
NORMSDIST | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::NORMSDIST
|
GAMMA.DIST | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::GAMMADIST
|
||||||
NORMSINV | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::NORMSINV
|
GAMMAINV | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::GAMMAINV
|
||||||
PEARSON | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::CORREL
|
GAMMA.INV | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::GAMMAINV
|
||||||
PERCENTILE | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::PERCENTILE
|
GAMMALN | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::GAMMALN
|
||||||
PERCENTRANK | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::PERCENTRANK
|
GAMMALN.PRECISE | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::GAMMALN
|
||||||
PERMUT | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::PERMUT
|
GAUSS | **Not yet Implemented**
|
||||||
POISSON | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::POISSON
|
GEOMEAN | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::GEOMEAN
|
||||||
PROB | **Not yet Implemented**
|
GROWTH | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::GROWTH
|
||||||
QUARTILE | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::QUARTILE
|
HARMEAN | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::HARMEAN
|
||||||
RANK | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::RANK
|
HYPGEOMDIST | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::HYPGEOMDIST
|
||||||
RSQ | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::RSQ
|
INTERCEPT | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::INTERCEPT
|
||||||
SKEW | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::SKEW
|
KURT | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::KURT
|
||||||
SLOPE | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::SLOPE
|
LARGE | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::LARGE
|
||||||
SMALL | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::SMALL
|
LINEST | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::LINEST
|
||||||
STANDARDIZE | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::STANDARDIZE
|
LOGEST | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::LOGEST
|
||||||
STDEV | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::STDEV
|
LOGINV | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::LOGINV
|
||||||
STDEV.P | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::STDEVP
|
LOGNORMDIST | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::LOGNORMDIST
|
||||||
STDEV.S | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::STDEV
|
LOGNORM.DIST | **Not yet Implemented**
|
||||||
STDEVA | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::STDEVA
|
LOGNORM.INV | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::LOGINV
|
||||||
STDEVP | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::STDEVP
|
MAX | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::MAX
|
||||||
STDEVPA | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::STDEVPA
|
MAXA | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::MAXA
|
||||||
STEYX | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::STEYX
|
MAXIFS | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::MAXIFS
|
||||||
TDIST | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::TDIST
|
MEDIAN | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::MEDIAN
|
||||||
TINV | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::TINV
|
MEDIANIF | **Not yet Implemented**
|
||||||
TREND | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::TREND
|
MIN | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::MIN
|
||||||
TRIMMEAN | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::TRIMMEAN
|
MINA | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::MINA
|
||||||
TTEST | **Not yet Implemented**
|
MINIFS | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::MINIFS
|
||||||
VAR | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::VARFunc
|
MODE | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::MODE
|
||||||
VAR.P | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::VARP
|
MODE.MULT | **Not yet Implemented**
|
||||||
VAR.S | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::VARFunc
|
MODE.SNGL | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::MODE
|
||||||
VARA | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::VARA
|
NEGBINOMDIST | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::NEGBINOMDIST
|
||||||
VARP | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::VARP
|
NEGBINOM.DIST | **Not yet Implemented**
|
||||||
VARPA | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::VARPA
|
NORMDIST | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::NORMDIST
|
||||||
WEIBULL | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::WEIBULL
|
NORM.DIST | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::NORMDIST
|
||||||
ZTEST | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::ZTEST
|
NORMINV | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::NORMINV
|
||||||
|
NORM.INV | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::NORMINV
|
||||||
|
NORMSDIST | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::NORMSDIST
|
||||||
|
NORM.S.DIST | **Not yet Implemented**
|
||||||
|
NORMSINV | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::NORMSINV
|
||||||
|
NORM.S.INV | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::NORMSINV
|
||||||
|
PEARSON | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::CORREL
|
||||||
|
PERCENTILE | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::PERCENTILE
|
||||||
|
PERCENTILE.EXC | **Not yet Implemented**
|
||||||
|
PERCENTILE.INC | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::PERCENTILE
|
||||||
|
PERCENTRANK | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::PERCENTRANK
|
||||||
|
PERCENTRANK.EXC | **Not yet Implemented**
|
||||||
|
PERCENTRANK.INC | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::PERCENTRANK
|
||||||
|
PERMUT | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::PERMUT
|
||||||
|
PERMUTATIONA | **Not yet Implemented**
|
||||||
|
PHI | **Not yet Implemented**
|
||||||
|
POISSON | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::POISSON
|
||||||
|
POISSON.DIST | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::POISSON
|
||||||
|
PROB | **Not yet Implemented**
|
||||||
|
QUARTILE | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::QUARTILE
|
||||||
|
QUARTILE.EXC | **Not yet Implemented**
|
||||||
|
QUARTILE.INC | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::QUARTILE
|
||||||
|
RANK | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::RANK
|
||||||
|
RANK.AVG | **Not yet Implemented**
|
||||||
|
RANK.EQ | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::RANK
|
||||||
|
RSQ | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::RSQ
|
||||||
|
SKEW | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::SKEW
|
||||||
|
SKEW.P | **Not yet Implemented**
|
||||||
|
SLOPE | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::SLOPE
|
||||||
|
SMALL | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::SMALL
|
||||||
|
STANDARDIZE | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::STANDARDIZE
|
||||||
|
STDEV | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::STDEV
|
||||||
|
STDEV.P | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::STDEVP
|
||||||
|
STDEV.S | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::STDEV
|
||||||
|
STDEVA | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::STDEVA
|
||||||
|
STDEVP | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::STDEVP
|
||||||
|
STDEVPA | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::STDEVPA
|
||||||
|
STEYX | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::STEYX
|
||||||
|
TDIST | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::TDIST
|
||||||
|
T.DIST | **Not yet Implemented**
|
||||||
|
T.DIST.2T | **Not yet Implemented**
|
||||||
|
T.DIST.RT | **Not yet Implemented**
|
||||||
|
TINV | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::TINV
|
||||||
|
T.INV | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::TINV
|
||||||
|
T.INV.2T | **Not yet Implemented**
|
||||||
|
TREND | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::TREND
|
||||||
|
TRIMMEAN | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::TRIMMEAN
|
||||||
|
TTEST | **Not yet Implemented**
|
||||||
|
T.TEST | **Not yet Implemented**
|
||||||
|
VAR | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::VARFunc
|
||||||
|
VAR.P | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::VARP
|
||||||
|
VAR.S | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::VARFunc
|
||||||
|
VARA | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::VARA
|
||||||
|
VARP | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::VARP
|
||||||
|
VARPA | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::VARPA
|
||||||
|
WEIBULL | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::WEIBULL
|
||||||
|
WEIBULL.DIST | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::WEIBULL
|
||||||
|
ZTEST | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::ZTEST
|
||||||
|
Z.TEST | \PhpOffice\PhpSpreadsheet\Calculation\Statistical::ZTEST
|
||||||
|
|
||||||
## CATEGORY_TEXT_AND_DATA
|
## CATEGORY_TEXT_AND_DATA
|
||||||
|
|
||||||
|
@ -428,6 +501,7 @@ CLEAN | \PhpOffice\PhpSpreadsheet\Calculation\TextData::TRIMNONPRI
|
||||||
CODE | \PhpOffice\PhpSpreadsheet\Calculation\TextData::ASCIICODE
|
CODE | \PhpOffice\PhpSpreadsheet\Calculation\TextData::ASCIICODE
|
||||||
CONCAT | \PhpOffice\PhpSpreadsheet\Calculation\TextData::CONCATENATE
|
CONCAT | \PhpOffice\PhpSpreadsheet\Calculation\TextData::CONCATENATE
|
||||||
CONCATENATE | \PhpOffice\PhpSpreadsheet\Calculation\TextData::CONCATENATE
|
CONCATENATE | \PhpOffice\PhpSpreadsheet\Calculation\TextData::CONCATENATE
|
||||||
|
DBCS | **Not yet Implemented**
|
||||||
DOLLAR | \PhpOffice\PhpSpreadsheet\Calculation\TextData::DOLLAR
|
DOLLAR | \PhpOffice\PhpSpreadsheet\Calculation\TextData::DOLLAR
|
||||||
EXACT | \PhpOffice\PhpSpreadsheet\Calculation\TextData::EXACT
|
EXACT | \PhpOffice\PhpSpreadsheet\Calculation\TextData::EXACT
|
||||||
FIND | \PhpOffice\PhpSpreadsheet\Calculation\TextData::SEARCHSENSITIVE
|
FIND | \PhpOffice\PhpSpreadsheet\Calculation\TextData::SEARCHSENSITIVE
|
||||||
|
@ -460,3 +534,11 @@ UNICHAR | \PhpOffice\PhpSpreadsheet\Calculation\TextData::CHARACTER
|
||||||
UNICODE | \PhpOffice\PhpSpreadsheet\Calculation\TextData::ASCIICODE
|
UNICODE | \PhpOffice\PhpSpreadsheet\Calculation\TextData::ASCIICODE
|
||||||
UPPER | \PhpOffice\PhpSpreadsheet\Calculation\TextData::UPPERCASE
|
UPPER | \PhpOffice\PhpSpreadsheet\Calculation\TextData::UPPERCASE
|
||||||
VALUE | \PhpOffice\PhpSpreadsheet\Calculation\TextData::VALUE
|
VALUE | \PhpOffice\PhpSpreadsheet\Calculation\TextData::VALUE
|
||||||
|
|
||||||
|
## CATEGORY_WEB
|
||||||
|
|
||||||
|
Excel Function | PhpSpreadsheet Function
|
||||||
|
--------------------|-------------------------------------------
|
||||||
|
ENCODEURL | **Not yet Implemented**
|
||||||
|
FILTERXML | **Not yet Implemented**
|
||||||
|
WEBSERVICE | \PhpOffice\PhpSpreadsheet\Calculation\Web::WEBSERVICE
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -253,6 +253,11 @@ class Calculation
|
||||||
'functionCall' => [LookupRef::class, 'cellAddress'],
|
'functionCall' => [LookupRef::class, 'cellAddress'],
|
||||||
'argumentCount' => '2-5',
|
'argumentCount' => '2-5',
|
||||||
],
|
],
|
||||||
|
'AGGREGATE' => [
|
||||||
|
'category' => Category::CATEGORY_MATH_AND_TRIG,
|
||||||
|
'functionCall' => [Functions::class, 'DUMMY'],
|
||||||
|
'argumentCount' => '3+',
|
||||||
|
],
|
||||||
'AMORDEGRC' => [
|
'AMORDEGRC' => [
|
||||||
'category' => Category::CATEGORY_FINANCIAL,
|
'category' => Category::CATEGORY_FINANCIAL,
|
||||||
'functionCall' => [Financial::class, 'AMORDEGRC'],
|
'functionCall' => [Financial::class, 'AMORDEGRC'],
|
||||||
|
@ -368,11 +373,21 @@ class Calculation
|
||||||
'functionCall' => [Statistical::class, 'BETADIST'],
|
'functionCall' => [Statistical::class, 'BETADIST'],
|
||||||
'argumentCount' => '3-5',
|
'argumentCount' => '3-5',
|
||||||
],
|
],
|
||||||
|
'BETA.DIST' => [
|
||||||
|
'category' => Category::CATEGORY_STATISTICAL,
|
||||||
|
'functionCall' => [Functions::class, 'DUMMY'],
|
||||||
|
'argumentCount' => '4-6',
|
||||||
|
],
|
||||||
'BETAINV' => [
|
'BETAINV' => [
|
||||||
'category' => Category::CATEGORY_STATISTICAL,
|
'category' => Category::CATEGORY_STATISTICAL,
|
||||||
'functionCall' => [Statistical::class, 'BETAINV'],
|
'functionCall' => [Statistical::class, 'BETAINV'],
|
||||||
'argumentCount' => '3-5',
|
'argumentCount' => '3-5',
|
||||||
],
|
],
|
||||||
|
'BETA.INV' => [
|
||||||
|
'category' => Category::CATEGORY_STATISTICAL,
|
||||||
|
'functionCall' => [Statistical::class, 'BETAINV'],
|
||||||
|
'argumentCount' => '3-5',
|
||||||
|
],
|
||||||
'BIN2DEC' => [
|
'BIN2DEC' => [
|
||||||
'category' => Category::CATEGORY_ENGINEERING,
|
'category' => Category::CATEGORY_ENGINEERING,
|
||||||
'functionCall' => [Engineering::class, 'BINTODEC'],
|
'functionCall' => [Engineering::class, 'BINTODEC'],
|
||||||
|
@ -393,6 +408,21 @@ class Calculation
|
||||||
'functionCall' => [Statistical::class, 'BINOMDIST'],
|
'functionCall' => [Statistical::class, 'BINOMDIST'],
|
||||||
'argumentCount' => '4',
|
'argumentCount' => '4',
|
||||||
],
|
],
|
||||||
|
'BINOM.DIST' => [
|
||||||
|
'category' => Category::CATEGORY_STATISTICAL,
|
||||||
|
'functionCall' => [Statistical::class, 'BINOMDIST'],
|
||||||
|
'argumentCount' => '4',
|
||||||
|
],
|
||||||
|
'BINOM.DIST.RANGE' => [
|
||||||
|
'category' => Category::CATEGORY_STATISTICAL,
|
||||||
|
'functionCall' => [Functions::class, 'DUMMY'],
|
||||||
|
'argumentCount' => '3,4',
|
||||||
|
],
|
||||||
|
'BINOM.INV' => [
|
||||||
|
'category' => Category::CATEGORY_STATISTICAL,
|
||||||
|
'functionCall' => [Functions::class, 'DUMMY'],
|
||||||
|
'argumentCount' => '3',
|
||||||
|
],
|
||||||
'BITAND' => [
|
'BITAND' => [
|
||||||
'category' => Category::CATEGORY_ENGINEERING,
|
'category' => Category::CATEGORY_ENGINEERING,
|
||||||
'functionCall' => [Engineering::class, 'BITAND'],
|
'functionCall' => [Engineering::class, 'BITAND'],
|
||||||
|
@ -423,6 +453,16 @@ class Calculation
|
||||||
'functionCall' => [MathTrig::class, 'CEILING'],
|
'functionCall' => [MathTrig::class, 'CEILING'],
|
||||||
'argumentCount' => '2',
|
'argumentCount' => '2',
|
||||||
],
|
],
|
||||||
|
'CEILING.MATH' => [
|
||||||
|
'category' => Category::CATEGORY_MATH_AND_TRIG,
|
||||||
|
'functionCall' => [Functions::class, 'DUMMY'],
|
||||||
|
'argumentCount' => '3',
|
||||||
|
],
|
||||||
|
'CEILING.PRECISE' => [
|
||||||
|
'category' => Category::CATEGORY_MATH_AND_TRIG,
|
||||||
|
'functionCall' => [Functions::class, 'DUMMY'],
|
||||||
|
'argumentCount' => '2',
|
||||||
|
],
|
||||||
'CELL' => [
|
'CELL' => [
|
||||||
'category' => Category::CATEGORY_INFORMATION,
|
'category' => Category::CATEGORY_INFORMATION,
|
||||||
'functionCall' => [Functions::class, 'DUMMY'],
|
'functionCall' => [Functions::class, 'DUMMY'],
|
||||||
|
@ -438,16 +478,41 @@ class Calculation
|
||||||
'functionCall' => [Statistical::class, 'CHIDIST'],
|
'functionCall' => [Statistical::class, 'CHIDIST'],
|
||||||
'argumentCount' => '2',
|
'argumentCount' => '2',
|
||||||
],
|
],
|
||||||
|
'CHISQ.DIST' => [
|
||||||
|
'category' => Category::CATEGORY_STATISTICAL,
|
||||||
|
'functionCall' => [Functions::class, 'DUMMY'],
|
||||||
|
'argumentCount' => '3',
|
||||||
|
],
|
||||||
|
'CHISQ.DIST.RT' => [
|
||||||
|
'category' => Category::CATEGORY_STATISTICAL,
|
||||||
|
'functionCall' => [Statistical::class, 'CHIDIST'],
|
||||||
|
'argumentCount' => '2',
|
||||||
|
],
|
||||||
'CHIINV' => [
|
'CHIINV' => [
|
||||||
'category' => Category::CATEGORY_STATISTICAL,
|
'category' => Category::CATEGORY_STATISTICAL,
|
||||||
'functionCall' => [Statistical::class, 'CHIINV'],
|
'functionCall' => [Statistical::class, 'CHIINV'],
|
||||||
'argumentCount' => '2',
|
'argumentCount' => '2',
|
||||||
],
|
],
|
||||||
|
'CHISQ.INV' => [
|
||||||
|
'category' => Category::CATEGORY_STATISTICAL,
|
||||||
|
'functionCall' => [Functions::class, 'DUMMY'],
|
||||||
|
'argumentCount' => '2',
|
||||||
|
],
|
||||||
|
'CHISQ.INV.RT' => [
|
||||||
|
'category' => Category::CATEGORY_STATISTICAL,
|
||||||
|
'functionCall' => [Statistical::class, 'CHIINV'],
|
||||||
|
'argumentCount' => '2',
|
||||||
|
],
|
||||||
'CHITEST' => [
|
'CHITEST' => [
|
||||||
'category' => Category::CATEGORY_STATISTICAL,
|
'category' => Category::CATEGORY_STATISTICAL,
|
||||||
'functionCall' => [Functions::class, 'DUMMY'],
|
'functionCall' => [Functions::class, 'DUMMY'],
|
||||||
'argumentCount' => '2',
|
'argumentCount' => '2',
|
||||||
],
|
],
|
||||||
|
'CHISQ.TEST' => [
|
||||||
|
'category' => Category::CATEGORY_STATISTICAL,
|
||||||
|
'functionCall' => [Functions::class, 'DUMMY'],
|
||||||
|
'argumentCount' => '2',
|
||||||
|
],
|
||||||
'CHOOSE' => [
|
'CHOOSE' => [
|
||||||
'category' => Category::CATEGORY_LOOKUP_AND_REFERENCE,
|
'category' => Category::CATEGORY_LOOKUP_AND_REFERENCE,
|
||||||
'functionCall' => [LookupRef::class, 'CHOOSE'],
|
'functionCall' => [LookupRef::class, 'CHOOSE'],
|
||||||
|
@ -479,6 +544,11 @@ class Calculation
|
||||||
'functionCall' => [MathTrig::class, 'COMBIN'],
|
'functionCall' => [MathTrig::class, 'COMBIN'],
|
||||||
'argumentCount' => '2',
|
'argumentCount' => '2',
|
||||||
],
|
],
|
||||||
|
'COMBINA' => [
|
||||||
|
'category' => Category::CATEGORY_MATH_AND_TRIG,
|
||||||
|
'functionCall' => [Functions::class, 'DUMMY'],
|
||||||
|
'argumentCount' => '2',
|
||||||
|
],
|
||||||
'COMPLEX' => [
|
'COMPLEX' => [
|
||||||
'category' => Category::CATEGORY_ENGINEERING,
|
'category' => Category::CATEGORY_ENGINEERING,
|
||||||
'functionCall' => [Engineering::class, 'COMPLEX'],
|
'functionCall' => [Engineering::class, 'COMPLEX'],
|
||||||
|
@ -499,6 +569,16 @@ class Calculation
|
||||||
'functionCall' => [Statistical::class, 'CONFIDENCE'],
|
'functionCall' => [Statistical::class, 'CONFIDENCE'],
|
||||||
'argumentCount' => '3',
|
'argumentCount' => '3',
|
||||||
],
|
],
|
||||||
|
'CONFIDENCE.NORM' => [
|
||||||
|
'category' => Category::CATEGORY_STATISTICAL,
|
||||||
|
'functionCall' => [Statistical::class, 'CONFIDENCE'],
|
||||||
|
'argumentCount' => '3',
|
||||||
|
],
|
||||||
|
'CONFIDENCE.T' => [
|
||||||
|
'category' => Category::CATEGORY_STATISTICAL,
|
||||||
|
'functionCall' => [Functions::class, 'DUMMY'],
|
||||||
|
'argumentCount' => '3',
|
||||||
|
],
|
||||||
'CONVERT' => [
|
'CONVERT' => [
|
||||||
'category' => Category::CATEGORY_ENGINEERING,
|
'category' => Category::CATEGORY_ENGINEERING,
|
||||||
'functionCall' => [Engineering::class, 'CONVERTUOM'],
|
'functionCall' => [Engineering::class, 'CONVERTUOM'],
|
||||||
|
@ -589,6 +669,16 @@ class Calculation
|
||||||
'functionCall' => [Statistical::class, 'COVAR'],
|
'functionCall' => [Statistical::class, 'COVAR'],
|
||||||
'argumentCount' => '2',
|
'argumentCount' => '2',
|
||||||
],
|
],
|
||||||
|
'COVARIANCE.P' => [
|
||||||
|
'category' => Category::CATEGORY_STATISTICAL,
|
||||||
|
'functionCall' => [Statistical::class, 'COVAR'],
|
||||||
|
'argumentCount' => '2',
|
||||||
|
],
|
||||||
|
'COVARIANCE.S' => [
|
||||||
|
'category' => Category::CATEGORY_STATISTICAL,
|
||||||
|
'functionCall' => [Functions::class, 'DUMMY'],
|
||||||
|
'argumentCount' => '2',
|
||||||
|
],
|
||||||
'CRITBINOM' => [
|
'CRITBINOM' => [
|
||||||
'category' => Category::CATEGORY_STATISTICAL,
|
'category' => Category::CATEGORY_STATISTICAL,
|
||||||
'functionCall' => [Statistical::class, 'CRITBINOM'],
|
'functionCall' => [Statistical::class, 'CRITBINOM'],
|
||||||
|
@ -689,6 +779,11 @@ class Calculation
|
||||||
'functionCall' => [Financial::class, 'DB'],
|
'functionCall' => [Financial::class, 'DB'],
|
||||||
'argumentCount' => '4,5',
|
'argumentCount' => '4,5',
|
||||||
],
|
],
|
||||||
|
'DBCS' => [
|
||||||
|
'category' => Category::CATEGORY_TEXT_AND_DATA,
|
||||||
|
'functionCall' => [Functions::class, 'DUMMY'],
|
||||||
|
'argumentCount' => '1',
|
||||||
|
],
|
||||||
'DCOUNT' => [
|
'DCOUNT' => [
|
||||||
'category' => Category::CATEGORY_DATABASE,
|
'category' => Category::CATEGORY_DATABASE,
|
||||||
'functionCall' => [Database::class, 'DCOUNT'],
|
'functionCall' => [Database::class, 'DCOUNT'],
|
||||||
|
@ -719,6 +814,11 @@ class Calculation
|
||||||
'functionCall' => [Engineering::class, 'DECTOOCT'],
|
'functionCall' => [Engineering::class, 'DECTOOCT'],
|
||||||
'argumentCount' => '1,2',
|
'argumentCount' => '1,2',
|
||||||
],
|
],
|
||||||
|
'DECIMAL' => [
|
||||||
|
'category' => Category::CATEGORY_MATH_AND_TRIG,
|
||||||
|
'functionCall' => [Functions::class, 'DUMMY'],
|
||||||
|
'argumentCount' => '2',
|
||||||
|
],
|
||||||
'DEGREES' => [
|
'DEGREES' => [
|
||||||
'category' => Category::CATEGORY_MATH_AND_TRIG,
|
'category' => Category::CATEGORY_MATH_AND_TRIG,
|
||||||
'functionCall' => 'rad2deg',
|
'functionCall' => 'rad2deg',
|
||||||
|
@ -814,6 +914,11 @@ class Calculation
|
||||||
'functionCall' => [Financial::class, 'EFFECT'],
|
'functionCall' => [Financial::class, 'EFFECT'],
|
||||||
'argumentCount' => '2',
|
'argumentCount' => '2',
|
||||||
],
|
],
|
||||||
|
'ENCODEURL' => [
|
||||||
|
'category' => Category::CATEGORY_WEB,
|
||||||
|
'functionCall' => [Functions::class, 'DUMMY'],
|
||||||
|
'argumentCount' => '1',
|
||||||
|
],
|
||||||
'EOMONTH' => [
|
'EOMONTH' => [
|
||||||
'category' => Category::CATEGORY_DATE_AND_TIME,
|
'category' => Category::CATEGORY_DATE_AND_TIME,
|
||||||
'functionCall' => [DateTime::class, 'EOMONTH'],
|
'functionCall' => [DateTime::class, 'EOMONTH'],
|
||||||
|
@ -864,6 +969,11 @@ class Calculation
|
||||||
'functionCall' => [Statistical::class, 'EXPONDIST'],
|
'functionCall' => [Statistical::class, 'EXPONDIST'],
|
||||||
'argumentCount' => '3',
|
'argumentCount' => '3',
|
||||||
],
|
],
|
||||||
|
'EXPON.DIST' => [
|
||||||
|
'category' => Category::CATEGORY_STATISTICAL,
|
||||||
|
'functionCall' => [Statistical::class, 'EXPONDIST'],
|
||||||
|
'argumentCount' => '3',
|
||||||
|
],
|
||||||
'FACT' => [
|
'FACT' => [
|
||||||
'category' => Category::CATEGORY_MATH_AND_TRIG,
|
'category' => Category::CATEGORY_MATH_AND_TRIG,
|
||||||
'functionCall' => [MathTrig::class, 'FACT'],
|
'functionCall' => [MathTrig::class, 'FACT'],
|
||||||
|
@ -884,6 +994,26 @@ class Calculation
|
||||||
'functionCall' => [Functions::class, 'DUMMY'],
|
'functionCall' => [Functions::class, 'DUMMY'],
|
||||||
'argumentCount' => '3',
|
'argumentCount' => '3',
|
||||||
],
|
],
|
||||||
|
'F.DIST' => [
|
||||||
|
'category' => Category::CATEGORY_STATISTICAL,
|
||||||
|
'functionCall' => [Statistical::class, 'FDIST2'],
|
||||||
|
'argumentCount' => '4',
|
||||||
|
],
|
||||||
|
'F.DIST.RT' => [
|
||||||
|
'category' => Category::CATEGORY_STATISTICAL,
|
||||||
|
'functionCall' => [Functions::class, 'DUMMY'],
|
||||||
|
'argumentCount' => '3',
|
||||||
|
],
|
||||||
|
'FILTER' => [
|
||||||
|
'category' => Category::CATEGORY_LOOKUP_AND_REFERENCE,
|
||||||
|
'functionCall' => [Functions::class, 'DUMMY'],
|
||||||
|
'argumentCount' => '3+',
|
||||||
|
],
|
||||||
|
'FILTERXML' => [
|
||||||
|
'category' => Category::CATEGORY_WEB,
|
||||||
|
'functionCall' => [Functions::class, 'DUMMY'],
|
||||||
|
'argumentCount' => '2',
|
||||||
|
],
|
||||||
'FIND' => [
|
'FIND' => [
|
||||||
'category' => Category::CATEGORY_TEXT_AND_DATA,
|
'category' => Category::CATEGORY_TEXT_AND_DATA,
|
||||||
'functionCall' => [TextData::class, 'SEARCHSENSITIVE'],
|
'functionCall' => [TextData::class, 'SEARCHSENSITIVE'],
|
||||||
|
@ -899,6 +1029,16 @@ class Calculation
|
||||||
'functionCall' => [Functions::class, 'DUMMY'],
|
'functionCall' => [Functions::class, 'DUMMY'],
|
||||||
'argumentCount' => '3',
|
'argumentCount' => '3',
|
||||||
],
|
],
|
||||||
|
'F.INV' => [
|
||||||
|
'category' => Category::CATEGORY_STATISTICAL,
|
||||||
|
'functionCall' => [Functions::class, 'DUMMY'],
|
||||||
|
'argumentCount' => '3',
|
||||||
|
],
|
||||||
|
'F.INV.RT' => [
|
||||||
|
'category' => Category::CATEGORY_STATISTICAL,
|
||||||
|
'functionCall' => [Functions::class, 'DUMMY'],
|
||||||
|
'argumentCount' => '3',
|
||||||
|
],
|
||||||
'FISHER' => [
|
'FISHER' => [
|
||||||
'category' => Category::CATEGORY_STATISTICAL,
|
'category' => Category::CATEGORY_STATISTICAL,
|
||||||
'functionCall' => [Statistical::class, 'FISHER'],
|
'functionCall' => [Statistical::class, 'FISHER'],
|
||||||
|
@ -934,6 +1074,31 @@ class Calculation
|
||||||
'functionCall' => [Statistical::class, 'FORECAST'],
|
'functionCall' => [Statistical::class, 'FORECAST'],
|
||||||
'argumentCount' => '3',
|
'argumentCount' => '3',
|
||||||
],
|
],
|
||||||
|
'FORECAST.ETS' => [
|
||||||
|
'category' => Category::CATEGORY_STATISTICAL,
|
||||||
|
'functionCall' => [Functions::class, 'DUMMY'],
|
||||||
|
'argumentCount' => '3-6',
|
||||||
|
],
|
||||||
|
'FORECAST.ETS.CONFINT' => [
|
||||||
|
'category' => Category::CATEGORY_STATISTICAL,
|
||||||
|
'functionCall' => [Functions::class, 'DUMMY'],
|
||||||
|
'argumentCount' => '3-6',
|
||||||
|
],
|
||||||
|
'FORECAST.ETS.SEASONALITY' => [
|
||||||
|
'category' => Category::CATEGORY_STATISTICAL,
|
||||||
|
'functionCall' => [Functions::class, 'DUMMY'],
|
||||||
|
'argumentCount' => '2-4',
|
||||||
|
],
|
||||||
|
'FORECAST.ETS.STAT' => [
|
||||||
|
'category' => Category::CATEGORY_STATISTICAL,
|
||||||
|
'functionCall' => [Functions::class, 'DUMMY'],
|
||||||
|
'argumentCount' => '3-6',
|
||||||
|
],
|
||||||
|
'FORECAST.LINEAR' => [
|
||||||
|
'category' => Category::CATEGORY_STATISTICAL,
|
||||||
|
'functionCall' => [Statistical::class, 'FORECAST'],
|
||||||
|
'argumentCount' => '3',
|
||||||
|
],
|
||||||
'FORMULATEXT' => [
|
'FORMULATEXT' => [
|
||||||
'category' => Category::CATEGORY_LOOKUP_AND_REFERENCE,
|
'category' => Category::CATEGORY_LOOKUP_AND_REFERENCE,
|
||||||
'functionCall' => [LookupRef::class, 'FORMULATEXT'],
|
'functionCall' => [LookupRef::class, 'FORMULATEXT'],
|
||||||
|
@ -951,6 +1116,11 @@ class Calculation
|
||||||
'functionCall' => [Functions::class, 'DUMMY'],
|
'functionCall' => [Functions::class, 'DUMMY'],
|
||||||
'argumentCount' => '2',
|
'argumentCount' => '2',
|
||||||
],
|
],
|
||||||
|
'F.TEST' => [
|
||||||
|
'category' => Category::CATEGORY_STATISTICAL,
|
||||||
|
'functionCall' => [Functions::class, 'DUMMY'],
|
||||||
|
'argumentCount' => '2',
|
||||||
|
],
|
||||||
'FV' => [
|
'FV' => [
|
||||||
'category' => Category::CATEGORY_FINANCIAL,
|
'category' => Category::CATEGORY_FINANCIAL,
|
||||||
'functionCall' => [Financial::class, 'FV'],
|
'functionCall' => [Financial::class, 'FV'],
|
||||||
|
@ -961,21 +1131,46 @@ class Calculation
|
||||||
'functionCall' => [Financial::class, 'FVSCHEDULE'],
|
'functionCall' => [Financial::class, 'FVSCHEDULE'],
|
||||||
'argumentCount' => '2',
|
'argumentCount' => '2',
|
||||||
],
|
],
|
||||||
|
'GAMMA' => [
|
||||||
|
'category' => Category::CATEGORY_STATISTICAL,
|
||||||
|
'functionCall' => [Statistical::class, 'GAMMAFunction'],
|
||||||
|
'argumentCount' => '1',
|
||||||
|
],
|
||||||
'GAMMADIST' => [
|
'GAMMADIST' => [
|
||||||
'category' => Category::CATEGORY_STATISTICAL,
|
'category' => Category::CATEGORY_STATISTICAL,
|
||||||
'functionCall' => [Statistical::class, 'GAMMADIST'],
|
'functionCall' => [Statistical::class, 'GAMMADIST'],
|
||||||
'argumentCount' => '4',
|
'argumentCount' => '4',
|
||||||
],
|
],
|
||||||
|
'GAMMA.DIST' => [
|
||||||
|
'category' => Category::CATEGORY_STATISTICAL,
|
||||||
|
'functionCall' => [Statistical::class, 'GAMMADIST'],
|
||||||
|
'argumentCount' => '4',
|
||||||
|
],
|
||||||
'GAMMAINV' => [
|
'GAMMAINV' => [
|
||||||
'category' => Category::CATEGORY_STATISTICAL,
|
'category' => Category::CATEGORY_STATISTICAL,
|
||||||
'functionCall' => [Statistical::class, 'GAMMAINV'],
|
'functionCall' => [Statistical::class, 'GAMMAINV'],
|
||||||
'argumentCount' => '3',
|
'argumentCount' => '3',
|
||||||
],
|
],
|
||||||
|
'GAMMA.INV' => [
|
||||||
|
'category' => Category::CATEGORY_STATISTICAL,
|
||||||
|
'functionCall' => [Statistical::class, 'GAMMAINV'],
|
||||||
|
'argumentCount' => '3',
|
||||||
|
],
|
||||||
'GAMMALN' => [
|
'GAMMALN' => [
|
||||||
'category' => Category::CATEGORY_STATISTICAL,
|
'category' => Category::CATEGORY_STATISTICAL,
|
||||||
'functionCall' => [Statistical::class, 'GAMMALN'],
|
'functionCall' => [Statistical::class, 'GAMMALN'],
|
||||||
'argumentCount' => '1',
|
'argumentCount' => '1',
|
||||||
],
|
],
|
||||||
|
'GAMMALN.PRECISE' => [
|
||||||
|
'category' => Category::CATEGORY_STATISTICAL,
|
||||||
|
'functionCall' => [Statistical::class, 'GAMMALN'],
|
||||||
|
'argumentCount' => '1',
|
||||||
|
],
|
||||||
|
'GAUSS' => [
|
||||||
|
'category' => Category::CATEGORY_STATISTICAL,
|
||||||
|
'functionCall' => [Statistical::class, 'GAUSS'],
|
||||||
|
'argumentCount' => '1',
|
||||||
|
],
|
||||||
'GCD' => [
|
'GCD' => [
|
||||||
'category' => Category::CATEGORY_MATH_AND_TRIG,
|
'category' => Category::CATEGORY_MATH_AND_TRIG,
|
||||||
'functionCall' => [MathTrig::class, 'GCD'],
|
'functionCall' => [MathTrig::class, 'GCD'],
|
||||||
|
@ -1275,6 +1470,11 @@ class Calculation
|
||||||
'functionCall' => [Functions::class, 'isNumber'],
|
'functionCall' => [Functions::class, 'isNumber'],
|
||||||
'argumentCount' => '1',
|
'argumentCount' => '1',
|
||||||
],
|
],
|
||||||
|
'ISO.CEILING' => [
|
||||||
|
'category' => Category::CATEGORY_MATH_AND_TRIG,
|
||||||
|
'functionCall' => [Functions::class, 'DUMMY'],
|
||||||
|
'argumentCount' => '1,2',
|
||||||
|
],
|
||||||
'ISODD' => [
|
'ISODD' => [
|
||||||
'category' => Category::CATEGORY_INFORMATION,
|
'category' => Category::CATEGORY_INFORMATION,
|
||||||
'functionCall' => [Functions::class, 'isOdd'],
|
'functionCall' => [Functions::class, 'isOdd'],
|
||||||
|
@ -1375,6 +1575,16 @@ class Calculation
|
||||||
'functionCall' => [Statistical::class, 'LOGNORMDIST'],
|
'functionCall' => [Statistical::class, 'LOGNORMDIST'],
|
||||||
'argumentCount' => '3',
|
'argumentCount' => '3',
|
||||||
],
|
],
|
||||||
|
'LOGNORM.DIST' => [
|
||||||
|
'category' => Category::CATEGORY_STATISTICAL,
|
||||||
|
'functionCall' => [Statistical::class, 'LOGNORMDIST2'],
|
||||||
|
'argumentCount' => '4',
|
||||||
|
],
|
||||||
|
'LOGNORM.INV' => [
|
||||||
|
'category' => Category::CATEGORY_STATISTICAL,
|
||||||
|
'functionCall' => [Statistical::class, 'LOGINV'],
|
||||||
|
'argumentCount' => '3',
|
||||||
|
],
|
||||||
'LOOKUP' => [
|
'LOOKUP' => [
|
||||||
'category' => Category::CATEGORY_LOOKUP_AND_REFERENCE,
|
'category' => Category::CATEGORY_LOOKUP_AND_REFERENCE,
|
||||||
'functionCall' => [LookupRef::class, 'LOOKUP'],
|
'functionCall' => [LookupRef::class, 'LOOKUP'],
|
||||||
|
@ -1480,6 +1690,11 @@ class Calculation
|
||||||
'functionCall' => [Statistical::class, 'MODE'],
|
'functionCall' => [Statistical::class, 'MODE'],
|
||||||
'argumentCount' => '1+',
|
'argumentCount' => '1+',
|
||||||
],
|
],
|
||||||
|
'MODE.MULT' => [
|
||||||
|
'category' => Category::CATEGORY_STATISTICAL,
|
||||||
|
'functionCall' => [Functions::class, 'DUMMY'],
|
||||||
|
'argumentCount' => '1+',
|
||||||
|
],
|
||||||
'MODE.SNGL' => [
|
'MODE.SNGL' => [
|
||||||
'category' => Category::CATEGORY_STATISTICAL,
|
'category' => Category::CATEGORY_STATISTICAL,
|
||||||
'functionCall' => [Statistical::class, 'MODE'],
|
'functionCall' => [Statistical::class, 'MODE'],
|
||||||
|
@ -1500,6 +1715,11 @@ class Calculation
|
||||||
'functionCall' => [MathTrig::class, 'MULTINOMIAL'],
|
'functionCall' => [MathTrig::class, 'MULTINOMIAL'],
|
||||||
'argumentCount' => '1+',
|
'argumentCount' => '1+',
|
||||||
],
|
],
|
||||||
|
'MUNIT' => [
|
||||||
|
'category' => Category::CATEGORY_MATH_AND_TRIG,
|
||||||
|
'functionCall' => [Functions::class, 'DUMMY'],
|
||||||
|
'argumentCount' => '1',
|
||||||
|
],
|
||||||
'N' => [
|
'N' => [
|
||||||
'category' => Category::CATEGORY_INFORMATION,
|
'category' => Category::CATEGORY_INFORMATION,
|
||||||
'functionCall' => [Functions::class, 'n'],
|
'functionCall' => [Functions::class, 'n'],
|
||||||
|
@ -1515,6 +1735,11 @@ class Calculation
|
||||||
'functionCall' => [Statistical::class, 'NEGBINOMDIST'],
|
'functionCall' => [Statistical::class, 'NEGBINOMDIST'],
|
||||||
'argumentCount' => '3',
|
'argumentCount' => '3',
|
||||||
],
|
],
|
||||||
|
'NEGBINOM.DIST' => [
|
||||||
|
'category' => Category::CATEGORY_STATISTICAL,
|
||||||
|
'functionCall' => [Functions::class, 'DUMMY'],
|
||||||
|
'argumentCount' => '4',
|
||||||
|
],
|
||||||
'NETWORKDAYS' => [
|
'NETWORKDAYS' => [
|
||||||
'category' => Category::CATEGORY_DATE_AND_TIME,
|
'category' => Category::CATEGORY_DATE_AND_TIME,
|
||||||
'functionCall' => [DateTime::class, 'NETWORKDAYS'],
|
'functionCall' => [DateTime::class, 'NETWORKDAYS'],
|
||||||
|
@ -1535,21 +1760,41 @@ class Calculation
|
||||||
'functionCall' => [Statistical::class, 'NORMDIST'],
|
'functionCall' => [Statistical::class, 'NORMDIST'],
|
||||||
'argumentCount' => '4',
|
'argumentCount' => '4',
|
||||||
],
|
],
|
||||||
|
'NORM.DIST' => [
|
||||||
|
'category' => Category::CATEGORY_STATISTICAL,
|
||||||
|
'functionCall' => [Statistical::class, 'NORMDIST'],
|
||||||
|
'argumentCount' => '4',
|
||||||
|
],
|
||||||
'NORMINV' => [
|
'NORMINV' => [
|
||||||
'category' => Category::CATEGORY_STATISTICAL,
|
'category' => Category::CATEGORY_STATISTICAL,
|
||||||
'functionCall' => [Statistical::class, 'NORMINV'],
|
'functionCall' => [Statistical::class, 'NORMINV'],
|
||||||
'argumentCount' => '3',
|
'argumentCount' => '3',
|
||||||
],
|
],
|
||||||
|
'NORM.INV' => [
|
||||||
|
'category' => Category::CATEGORY_STATISTICAL,
|
||||||
|
'functionCall' => [Statistical::class, 'NORMINV'],
|
||||||
|
'argumentCount' => '3',
|
||||||
|
],
|
||||||
'NORMSDIST' => [
|
'NORMSDIST' => [
|
||||||
'category' => Category::CATEGORY_STATISTICAL,
|
'category' => Category::CATEGORY_STATISTICAL,
|
||||||
'functionCall' => [Statistical::class, 'NORMSDIST'],
|
'functionCall' => [Statistical::class, 'NORMSDIST'],
|
||||||
'argumentCount' => '1',
|
'argumentCount' => '1',
|
||||||
],
|
],
|
||||||
|
'NORM.S.DIST' => [
|
||||||
|
'category' => Category::CATEGORY_STATISTICAL,
|
||||||
|
'functionCall' => [Statistical::class, 'NORMSDIST2'],
|
||||||
|
'argumentCount' => '1,2',
|
||||||
|
],
|
||||||
'NORMSINV' => [
|
'NORMSINV' => [
|
||||||
'category' => Category::CATEGORY_STATISTICAL,
|
'category' => Category::CATEGORY_STATISTICAL,
|
||||||
'functionCall' => [Statistical::class, 'NORMSINV'],
|
'functionCall' => [Statistical::class, 'NORMSINV'],
|
||||||
'argumentCount' => '1',
|
'argumentCount' => '1',
|
||||||
],
|
],
|
||||||
|
'NORM.S.INV' => [
|
||||||
|
'category' => Category::CATEGORY_STATISTICAL,
|
||||||
|
'functionCall' => [Statistical::class, 'NORMSINV'],
|
||||||
|
'argumentCount' => '1',
|
||||||
|
],
|
||||||
'NOT' => [
|
'NOT' => [
|
||||||
'category' => Category::CATEGORY_LOGICAL,
|
'category' => Category::CATEGORY_LOGICAL,
|
||||||
'functionCall' => [Logical::class, 'NOT'],
|
'functionCall' => [Logical::class, 'NOT'],
|
||||||
|
@ -1642,21 +1887,51 @@ class Calculation
|
||||||
'functionCall' => [Statistical::class, 'PERCENTILE'],
|
'functionCall' => [Statistical::class, 'PERCENTILE'],
|
||||||
'argumentCount' => '2',
|
'argumentCount' => '2',
|
||||||
],
|
],
|
||||||
|
'PERCENTILE.EXC' => [
|
||||||
|
'category' => Category::CATEGORY_STATISTICAL,
|
||||||
|
'functionCall' => [Functions::class, 'DUMMY'],
|
||||||
|
'argumentCount' => '2',
|
||||||
|
],
|
||||||
|
'PERCENTILE.INC' => [
|
||||||
|
'category' => Category::CATEGORY_STATISTICAL,
|
||||||
|
'functionCall' => [Statistical::class, 'PERCENTILE'],
|
||||||
|
'argumentCount' => '2',
|
||||||
|
],
|
||||||
'PERCENTRANK' => [
|
'PERCENTRANK' => [
|
||||||
'category' => Category::CATEGORY_STATISTICAL,
|
'category' => Category::CATEGORY_STATISTICAL,
|
||||||
'functionCall' => [Statistical::class, 'PERCENTRANK'],
|
'functionCall' => [Statistical::class, 'PERCENTRANK'],
|
||||||
'argumentCount' => '2,3',
|
'argumentCount' => '2,3',
|
||||||
],
|
],
|
||||||
|
'PERCENTRANK.EXC' => [
|
||||||
|
'category' => Category::CATEGORY_STATISTICAL,
|
||||||
|
'functionCall' => [Functions::class, 'DUMMY'],
|
||||||
|
'argumentCount' => '2,3',
|
||||||
|
],
|
||||||
|
'PERCENTRANK.INC' => [
|
||||||
|
'category' => Category::CATEGORY_STATISTICAL,
|
||||||
|
'functionCall' => [Statistical::class, 'PERCENTRANK'],
|
||||||
|
'argumentCount' => '2,3',
|
||||||
|
],
|
||||||
'PERMUT' => [
|
'PERMUT' => [
|
||||||
'category' => Category::CATEGORY_STATISTICAL,
|
'category' => Category::CATEGORY_STATISTICAL,
|
||||||
'functionCall' => [Statistical::class, 'PERMUT'],
|
'functionCall' => [Statistical::class, 'PERMUT'],
|
||||||
'argumentCount' => '2',
|
'argumentCount' => '2',
|
||||||
],
|
],
|
||||||
|
'PERMUTATIONA' => [
|
||||||
|
'category' => Category::CATEGORY_STATISTICAL,
|
||||||
|
'functionCall' => [Functions::class, 'DUMMY'],
|
||||||
|
'argumentCount' => '2',
|
||||||
|
],
|
||||||
'PHONETIC' => [
|
'PHONETIC' => [
|
||||||
'category' => Category::CATEGORY_TEXT_AND_DATA,
|
'category' => Category::CATEGORY_TEXT_AND_DATA,
|
||||||
'functionCall' => [Functions::class, 'DUMMY'],
|
'functionCall' => [Functions::class, 'DUMMY'],
|
||||||
'argumentCount' => '1',
|
'argumentCount' => '1',
|
||||||
],
|
],
|
||||||
|
'PHI' => [
|
||||||
|
'category' => Category::CATEGORY_STATISTICAL,
|
||||||
|
'functionCall' => [Functions::class, 'DUMMY'],
|
||||||
|
'argumentCount' => '1',
|
||||||
|
],
|
||||||
'PI' => [
|
'PI' => [
|
||||||
'category' => Category::CATEGORY_MATH_AND_TRIG,
|
'category' => Category::CATEGORY_MATH_AND_TRIG,
|
||||||
'functionCall' => 'pi',
|
'functionCall' => 'pi',
|
||||||
|
@ -1672,6 +1947,11 @@ class Calculation
|
||||||
'functionCall' => [Statistical::class, 'POISSON'],
|
'functionCall' => [Statistical::class, 'POISSON'],
|
||||||
'argumentCount' => '3',
|
'argumentCount' => '3',
|
||||||
],
|
],
|
||||||
|
'POISSON.DIST' => [
|
||||||
|
'category' => Category::CATEGORY_STATISTICAL,
|
||||||
|
'functionCall' => [Statistical::class, 'POISSON'],
|
||||||
|
'argumentCount' => '3',
|
||||||
|
],
|
||||||
'POWER' => [
|
'POWER' => [
|
||||||
'category' => Category::CATEGORY_MATH_AND_TRIG,
|
'category' => Category::CATEGORY_MATH_AND_TRIG,
|
||||||
'functionCall' => [MathTrig::class, 'POWER'],
|
'functionCall' => [MathTrig::class, 'POWER'],
|
||||||
|
@ -1722,6 +2002,16 @@ class Calculation
|
||||||
'functionCall' => [Statistical::class, 'QUARTILE'],
|
'functionCall' => [Statistical::class, 'QUARTILE'],
|
||||||
'argumentCount' => '2',
|
'argumentCount' => '2',
|
||||||
],
|
],
|
||||||
|
'QUARTILE.EXC' => [
|
||||||
|
'category' => Category::CATEGORY_STATISTICAL,
|
||||||
|
'functionCall' => [Functions::class, 'DUMMY'],
|
||||||
|
'argumentCount' => '2',
|
||||||
|
],
|
||||||
|
'QUARTILE.INC' => [
|
||||||
|
'category' => Category::CATEGORY_STATISTICAL,
|
||||||
|
'functionCall' => [Statistical::class, 'QUARTILE'],
|
||||||
|
'argumentCount' => '2',
|
||||||
|
],
|
||||||
'QUOTIENT' => [
|
'QUOTIENT' => [
|
||||||
'category' => Category::CATEGORY_MATH_AND_TRIG,
|
'category' => Category::CATEGORY_MATH_AND_TRIG,
|
||||||
'functionCall' => [MathTrig::class, 'QUOTIENT'],
|
'functionCall' => [MathTrig::class, 'QUOTIENT'],
|
||||||
|
@ -1737,6 +2027,11 @@ class Calculation
|
||||||
'functionCall' => [MathTrig::class, 'RAND'],
|
'functionCall' => [MathTrig::class, 'RAND'],
|
||||||
'argumentCount' => '0',
|
'argumentCount' => '0',
|
||||||
],
|
],
|
||||||
|
'RANDARRAY' => [
|
||||||
|
'category' => Category::CATEGORY_MATH_AND_TRIG,
|
||||||
|
'functionCall' => [Functions::class, 'DUMMY'],
|
||||||
|
'argumentCount' => '0-5',
|
||||||
|
],
|
||||||
'RANDBETWEEN' => [
|
'RANDBETWEEN' => [
|
||||||
'category' => Category::CATEGORY_MATH_AND_TRIG,
|
'category' => Category::CATEGORY_MATH_AND_TRIG,
|
||||||
'functionCall' => [MathTrig::class, 'RAND'],
|
'functionCall' => [MathTrig::class, 'RAND'],
|
||||||
|
@ -1747,6 +2042,16 @@ class Calculation
|
||||||
'functionCall' => [Statistical::class, 'RANK'],
|
'functionCall' => [Statistical::class, 'RANK'],
|
||||||
'argumentCount' => '2,3',
|
'argumentCount' => '2,3',
|
||||||
],
|
],
|
||||||
|
'RANK.AVG' => [
|
||||||
|
'category' => Category::CATEGORY_STATISTICAL,
|
||||||
|
'functionCall' => [Functions::class, 'DUMMY'],
|
||||||
|
'argumentCount' => '2,3',
|
||||||
|
],
|
||||||
|
'RANK.EQ' => [
|
||||||
|
'category' => Category::CATEGORY_STATISTICAL,
|
||||||
|
'functionCall' => [Statistical::class, 'RANK'],
|
||||||
|
'argumentCount' => '2,3',
|
||||||
|
],
|
||||||
'RATE' => [
|
'RATE' => [
|
||||||
'category' => Category::CATEGORY_FINANCIAL,
|
'category' => Category::CATEGORY_FINANCIAL,
|
||||||
'functionCall' => [Financial::class, 'RATE'],
|
'functionCall' => [Financial::class, 'RATE'],
|
||||||
|
@ -1853,6 +2158,11 @@ class Calculation
|
||||||
'functionCall' => [DateTime::class, 'SECOND'],
|
'functionCall' => [DateTime::class, 'SECOND'],
|
||||||
'argumentCount' => '1',
|
'argumentCount' => '1',
|
||||||
],
|
],
|
||||||
|
'SEQUENCE' => [
|
||||||
|
'category' => Category::CATEGORY_MATH_AND_TRIG,
|
||||||
|
'functionCall' => [Functions::class, 'DUMMY'],
|
||||||
|
'argumentCount' => '2',
|
||||||
|
],
|
||||||
'SERIESSUM' => [
|
'SERIESSUM' => [
|
||||||
'category' => Category::CATEGORY_MATH_AND_TRIG,
|
'category' => Category::CATEGORY_MATH_AND_TRIG,
|
||||||
'functionCall' => [MathTrig::class, 'SERIESSUM'],
|
'functionCall' => [MathTrig::class, 'SERIESSUM'],
|
||||||
|
@ -1888,6 +2198,11 @@ class Calculation
|
||||||
'functionCall' => [Statistical::class, 'SKEW'],
|
'functionCall' => [Statistical::class, 'SKEW'],
|
||||||
'argumentCount' => '1+',
|
'argumentCount' => '1+',
|
||||||
],
|
],
|
||||||
|
'SKEW.P' => [
|
||||||
|
'category' => Category::CATEGORY_STATISTICAL,
|
||||||
|
'functionCall' => [Functions::class, 'DUMMY'],
|
||||||
|
'argumentCount' => '1+',
|
||||||
|
],
|
||||||
'SLN' => [
|
'SLN' => [
|
||||||
'category' => Category::CATEGORY_FINANCIAL,
|
'category' => Category::CATEGORY_FINANCIAL,
|
||||||
'functionCall' => [Financial::class, 'SLN'],
|
'functionCall' => [Financial::class, 'SLN'],
|
||||||
|
@ -1903,6 +2218,16 @@ class Calculation
|
||||||
'functionCall' => [Statistical::class, 'SMALL'],
|
'functionCall' => [Statistical::class, 'SMALL'],
|
||||||
'argumentCount' => '2',
|
'argumentCount' => '2',
|
||||||
],
|
],
|
||||||
|
'SORT' => [
|
||||||
|
'category' => Category::CATEGORY_LOOKUP_AND_REFERENCE,
|
||||||
|
'functionCall' => [Functions::class, 'DUMMY'],
|
||||||
|
'argumentCount' => '1+',
|
||||||
|
],
|
||||||
|
'SORTBY' => [
|
||||||
|
'category' => Category::CATEGORY_LOOKUP_AND_REFERENCE,
|
||||||
|
'functionCall' => [Functions::class, 'DUMMY'],
|
||||||
|
'argumentCount' => '2+',
|
||||||
|
],
|
||||||
'SQRT' => [
|
'SQRT' => [
|
||||||
'category' => Category::CATEGORY_MATH_AND_TRIG,
|
'category' => Category::CATEGORY_MATH_AND_TRIG,
|
||||||
'functionCall' => 'sqrt',
|
'functionCall' => 'sqrt',
|
||||||
|
@ -2049,6 +2374,21 @@ class Calculation
|
||||||
'functionCall' => [Statistical::class, 'TDIST'],
|
'functionCall' => [Statistical::class, 'TDIST'],
|
||||||
'argumentCount' => '3',
|
'argumentCount' => '3',
|
||||||
],
|
],
|
||||||
|
'T.DIST' => [
|
||||||
|
'category' => Category::CATEGORY_STATISTICAL,
|
||||||
|
'functionCall' => [Functions::class, 'DUMMY'],
|
||||||
|
'argumentCount' => '3',
|
||||||
|
],
|
||||||
|
'T.DIST.2T' => [
|
||||||
|
'category' => Category::CATEGORY_STATISTICAL,
|
||||||
|
'functionCall' => [Functions::class, 'DUMMY'],
|
||||||
|
'argumentCount' => '2',
|
||||||
|
],
|
||||||
|
'T.DIST.RT' => [
|
||||||
|
'category' => Category::CATEGORY_STATISTICAL,
|
||||||
|
'functionCall' => [Functions::class, 'DUMMY'],
|
||||||
|
'argumentCount' => '2',
|
||||||
|
],
|
||||||
'TEXT' => [
|
'TEXT' => [
|
||||||
'category' => Category::CATEGORY_TEXT_AND_DATA,
|
'category' => Category::CATEGORY_TEXT_AND_DATA,
|
||||||
'functionCall' => [TextData::class, 'TEXTFORMAT'],
|
'functionCall' => [TextData::class, 'TEXTFORMAT'],
|
||||||
|
@ -2074,6 +2414,16 @@ class Calculation
|
||||||
'functionCall' => [Statistical::class, 'TINV'],
|
'functionCall' => [Statistical::class, 'TINV'],
|
||||||
'argumentCount' => '2',
|
'argumentCount' => '2',
|
||||||
],
|
],
|
||||||
|
'T.INV' => [
|
||||||
|
'category' => Category::CATEGORY_STATISTICAL,
|
||||||
|
'functionCall' => [Statistical::class, 'TINV'],
|
||||||
|
'argumentCount' => '2',
|
||||||
|
],
|
||||||
|
'T.INV.2T' => [
|
||||||
|
'category' => Category::CATEGORY_STATISTICAL,
|
||||||
|
'functionCall' => [Functions::class, 'DUMMY'],
|
||||||
|
'argumentCount' => '2',
|
||||||
|
],
|
||||||
'TODAY' => [
|
'TODAY' => [
|
||||||
'category' => Category::CATEGORY_DATE_AND_TIME,
|
'category' => Category::CATEGORY_DATE_AND_TIME,
|
||||||
'functionCall' => [DateTime::class, 'DATENOW'],
|
'functionCall' => [DateTime::class, 'DATENOW'],
|
||||||
|
@ -2114,6 +2464,11 @@ class Calculation
|
||||||
'functionCall' => [Functions::class, 'DUMMY'],
|
'functionCall' => [Functions::class, 'DUMMY'],
|
||||||
'argumentCount' => '4',
|
'argumentCount' => '4',
|
||||||
],
|
],
|
||||||
|
'T.TEST' => [
|
||||||
|
'category' => Category::CATEGORY_STATISTICAL,
|
||||||
|
'functionCall' => [Functions::class, 'DUMMY'],
|
||||||
|
'argumentCount' => '4',
|
||||||
|
],
|
||||||
'TYPE' => [
|
'TYPE' => [
|
||||||
'category' => Category::CATEGORY_INFORMATION,
|
'category' => Category::CATEGORY_INFORMATION,
|
||||||
'functionCall' => [Functions::class, 'TYPE'],
|
'functionCall' => [Functions::class, 'TYPE'],
|
||||||
|
@ -2129,6 +2484,11 @@ class Calculation
|
||||||
'functionCall' => [TextData::class, 'ASCIICODE'],
|
'functionCall' => [TextData::class, 'ASCIICODE'],
|
||||||
'argumentCount' => '1',
|
'argumentCount' => '1',
|
||||||
],
|
],
|
||||||
|
'UNIQUE' => [
|
||||||
|
'category' => Category::CATEGORY_LOOKUP_AND_REFERENCE,
|
||||||
|
'functionCall' => [Functions::class, 'DUMMY'],
|
||||||
|
'argumentCount' => '1+',
|
||||||
|
],
|
||||||
'UPPER' => [
|
'UPPER' => [
|
||||||
'category' => Category::CATEGORY_TEXT_AND_DATA,
|
'category' => Category::CATEGORY_TEXT_AND_DATA,
|
||||||
'functionCall' => [TextData::class, 'UPPERCASE'],
|
'functionCall' => [TextData::class, 'UPPERCASE'],
|
||||||
|
@ -2204,6 +2564,11 @@ class Calculation
|
||||||
'functionCall' => [Statistical::class, 'WEIBULL'],
|
'functionCall' => [Statistical::class, 'WEIBULL'],
|
||||||
'argumentCount' => '4',
|
'argumentCount' => '4',
|
||||||
],
|
],
|
||||||
|
'WEIBULL.DIST' => [
|
||||||
|
'category' => Category::CATEGORY_STATISTICAL,
|
||||||
|
'functionCall' => [Statistical::class, 'WEIBULL'],
|
||||||
|
'argumentCount' => '4',
|
||||||
|
],
|
||||||
'WORKDAY' => [
|
'WORKDAY' => [
|
||||||
'category' => Category::CATEGORY_DATE_AND_TIME,
|
'category' => Category::CATEGORY_DATE_AND_TIME,
|
||||||
'functionCall' => [DateTime::class, 'WORKDAY'],
|
'functionCall' => [DateTime::class, 'WORKDAY'],
|
||||||
|
@ -2219,11 +2584,21 @@ class Calculation
|
||||||
'functionCall' => [Financial::class, 'XIRR'],
|
'functionCall' => [Financial::class, 'XIRR'],
|
||||||
'argumentCount' => '2,3',
|
'argumentCount' => '2,3',
|
||||||
],
|
],
|
||||||
|
'XLOOKUP' => [
|
||||||
|
'category' => Category::CATEGORY_LOOKUP_AND_REFERENCE,
|
||||||
|
'functionCall' => [Functions::class, 'DUMMY'],
|
||||||
|
'argumentCount' => '3-6',
|
||||||
|
],
|
||||||
'XNPV' => [
|
'XNPV' => [
|
||||||
'category' => Category::CATEGORY_FINANCIAL,
|
'category' => Category::CATEGORY_FINANCIAL,
|
||||||
'functionCall' => [Financial::class, 'XNPV'],
|
'functionCall' => [Financial::class, 'XNPV'],
|
||||||
'argumentCount' => '3',
|
'argumentCount' => '3',
|
||||||
],
|
],
|
||||||
|
'XMATCH' => [
|
||||||
|
'category' => Category::CATEGORY_LOOKUP_AND_REFERENCE,
|
||||||
|
'functionCall' => [Functions::class, 'DUMMY'],
|
||||||
|
'argumentCount' => '2,3',
|
||||||
|
],
|
||||||
'XOR' => [
|
'XOR' => [
|
||||||
'category' => Category::CATEGORY_LOGICAL,
|
'category' => Category::CATEGORY_LOGICAL,
|
||||||
'functionCall' => [Logical::class, 'logicalXor'],
|
'functionCall' => [Logical::class, 'logicalXor'],
|
||||||
|
@ -2259,6 +2634,11 @@ class Calculation
|
||||||
'functionCall' => [Statistical::class, 'ZTEST'],
|
'functionCall' => [Statistical::class, 'ZTEST'],
|
||||||
'argumentCount' => '2-3',
|
'argumentCount' => '2-3',
|
||||||
],
|
],
|
||||||
|
'Z.TEST' => [
|
||||||
|
'category' => Category::CATEGORY_STATISTICAL,
|
||||||
|
'functionCall' => [Statistical::class, 'ZTEST'],
|
||||||
|
'argumentCount' => '2-3',
|
||||||
|
],
|
||||||
];
|
];
|
||||||
|
|
||||||
// Internal functions used for special control purposes
|
// Internal functions used for special control purposes
|
||||||
|
@ -2751,8 +3131,8 @@ class Calculation
|
||||||
}
|
}
|
||||||
// Return strings wrapped in quotes
|
// Return strings wrapped in quotes
|
||||||
return self::FORMULA_STRING_QUOTE . $value . self::FORMULA_STRING_QUOTE;
|
return self::FORMULA_STRING_QUOTE . $value . self::FORMULA_STRING_QUOTE;
|
||||||
// Convert numeric errors to NaN error
|
|
||||||
} elseif ((is_float($value)) && ((is_nan($value)) || (is_infinite($value)))) {
|
} elseif ((is_float($value)) && ((is_nan($value)) || (is_infinite($value)))) {
|
||||||
|
// Convert numeric errors to NaN error
|
||||||
return Functions::NAN();
|
return Functions::NAN();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3394,22 +3774,22 @@ class Calculation
|
||||||
$pCellParent = ($pCell !== null) ? $pCell->getWorksheet() : null;
|
$pCellParent = ($pCell !== null) ? $pCell->getWorksheet() : null;
|
||||||
|
|
||||||
$regexpMatchString = '/^(' . self::CALCULATION_REGEXP_FUNCTION .
|
$regexpMatchString = '/^(' . self::CALCULATION_REGEXP_FUNCTION .
|
||||||
'|' . self::CALCULATION_REGEXP_CELLREF .
|
'|' . self::CALCULATION_REGEXP_CELLREF .
|
||||||
'|' . self::CALCULATION_REGEXP_NUMBER .
|
'|' . self::CALCULATION_REGEXP_NUMBER .
|
||||||
'|' . self::CALCULATION_REGEXP_STRING .
|
'|' . self::CALCULATION_REGEXP_STRING .
|
||||||
'|' . self::CALCULATION_REGEXP_OPENBRACE .
|
'|' . self::CALCULATION_REGEXP_OPENBRACE .
|
||||||
'|' . self::CALCULATION_REGEXP_NAMEDRANGE .
|
'|' . self::CALCULATION_REGEXP_NAMEDRANGE .
|
||||||
'|' . self::CALCULATION_REGEXP_ERROR .
|
'|' . self::CALCULATION_REGEXP_ERROR .
|
||||||
')/sui';
|
')/sui';
|
||||||
|
|
||||||
// Start with initialisation
|
// Start with initialisation
|
||||||
$index = 0;
|
$index = 0;
|
||||||
$stack = new Stack();
|
$stack = new Stack();
|
||||||
$output = [];
|
$output = [];
|
||||||
$expectingOperator = false; // We use this test in syntax-checking the expression to determine when a
|
$expectingOperator = false; // We use this test in syntax-checking the expression to determine when a
|
||||||
// - is a negation or + is a positive operator rather than an operation
|
// - is a negation or + is a positive operator rather than an operation
|
||||||
$expectingOperand = false; // We use this test in syntax-checking the expression to determine whether an operand
|
$expectingOperand = false; // We use this test in syntax-checking the expression to determine whether an operand
|
||||||
// should be null in a function call
|
// should be null in a function call
|
||||||
|
|
||||||
// IF branch pruning
|
// IF branch pruning
|
||||||
// currently pending storeKey (last item of the storeKeysStack
|
// currently pending storeKey (last item of the storeKeysStack
|
||||||
|
@ -3792,7 +4172,7 @@ class Calculation
|
||||||
((preg_match('/^' . self::CALCULATION_REGEXP_CELLREF . '.*/Ui', substr($formula, $index), $match)) &&
|
((preg_match('/^' . self::CALCULATION_REGEXP_CELLREF . '.*/Ui', substr($formula, $index), $match)) &&
|
||||||
($output[count($output) - 1]['type'] == 'Cell Reference') ||
|
($output[count($output) - 1]['type'] == 'Cell Reference') ||
|
||||||
(preg_match('/^' . self::CALCULATION_REGEXP_NAMEDRANGE . '.*/miu', substr($formula, $index), $match)) &&
|
(preg_match('/^' . self::CALCULATION_REGEXP_NAMEDRANGE . '.*/miu', substr($formula, $index), $match)) &&
|
||||||
($output[count($output) - 1]['type'] == 'Named Range' || $output[count($output) - 1]['type'] == 'Value')
|
($output[count($output) - 1]['type'] == 'Named Range' || $output[count($output) - 1]['type'] == 'Value')
|
||||||
)) {
|
)) {
|
||||||
while ($stack->count() > 0 &&
|
while ($stack->count() > 0 &&
|
||||||
($o2 = $stack->last()) &&
|
($o2 = $stack->last()) &&
|
||||||
|
@ -4571,7 +4951,7 @@ class Calculation
|
||||||
} else {
|
} else {
|
||||||
if ((Functions::getCompatibilityMode() != Functions::COMPATIBILITY_OPENOFFICE) &&
|
if ((Functions::getCompatibilityMode() != Functions::COMPATIBILITY_OPENOFFICE) &&
|
||||||
((is_string($operand1) && !is_numeric($operand1) && strlen($operand1) > 0) ||
|
((is_string($operand1) && !is_numeric($operand1) && strlen($operand1) > 0) ||
|
||||||
(is_string($operand2) && !is_numeric($operand2) && strlen($operand2) > 0))) {
|
(is_string($operand2) && !is_numeric($operand2) && strlen($operand2) > 0))) {
|
||||||
$result = Functions::VALUE();
|
$result = Functions::VALUE();
|
||||||
} else {
|
} else {
|
||||||
// If we're dealing with non-matrix operations, execute the necessary operation
|
// If we're dealing with non-matrix operations, execute the necessary operation
|
||||||
|
@ -4600,7 +4980,7 @@ class Calculation
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
$result = $operand1 / $operand2;
|
$result = $operand1 / $operand2;
|
||||||
|
|
||||||
break;
|
break;
|
||||||
// Power
|
// Power
|
||||||
|
|
|
@ -779,7 +779,7 @@ class Statistical
|
||||||
/**
|
/**
|
||||||
* BETAINV.
|
* BETAINV.
|
||||||
*
|
*
|
||||||
* Returns the inverse of the beta distribution.
|
* Returns the inverse of the Beta distribution.
|
||||||
*
|
*
|
||||||
* @param float $probability Probability at which you want to evaluate the distribution
|
* @param float $probability Probability at which you want to evaluate the distribution
|
||||||
* @param float $alpha Parameter to the distribution
|
* @param float $alpha Parameter to the distribution
|
||||||
|
@ -1475,6 +1475,62 @@ class Statistical
|
||||||
return Functions::VALUE();
|
return Functions::VALUE();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static function betaFunction($a, $b)
|
||||||
|
{
|
||||||
|
return (self::gamma($a) * self::gamma($b)) / self::gamma($a + $b);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static function regularizedIncompleteBeta($value, $a, $b)
|
||||||
|
{
|
||||||
|
return self::incompleteBeta($value, $a, $b) / self::betaFunction($a, $b);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* F.DIST.
|
||||||
|
*
|
||||||
|
* Returns the F probability distribution.
|
||||||
|
* You can use this function to determine whether two data sets have different degrees of diversity.
|
||||||
|
* For example, you can examine the test scores of men and women entering high school, and determine
|
||||||
|
* if the variability in the females is different from that found in the males.
|
||||||
|
*
|
||||||
|
* @param float $value Value of the function
|
||||||
|
* @param int $u The numerator degrees of freedom
|
||||||
|
* @param int $v The denominator degrees of freedom
|
||||||
|
* @param bool $cumulative If cumulative is TRUE, F.DIST returns the cumulative distribution function;
|
||||||
|
* if FALSE, it returns the probability density function.
|
||||||
|
*
|
||||||
|
* @return float|string
|
||||||
|
*/
|
||||||
|
public static function FDIST2($value, $u, $v, $cumulative)
|
||||||
|
{
|
||||||
|
$value = Functions::flattenSingleValue($value);
|
||||||
|
$u = Functions::flattenSingleValue($u);
|
||||||
|
$v = Functions::flattenSingleValue($v);
|
||||||
|
$cumulative = Functions::flattenSingleValue($cumulative);
|
||||||
|
|
||||||
|
if (is_numeric($value) && is_numeric($u) && is_numeric($v)) {
|
||||||
|
if ($value < 0 || $u < 1 || $v < 1) {
|
||||||
|
return Functions::NAN();
|
||||||
|
}
|
||||||
|
|
||||||
|
$cumulative = (bool) $cumulative;
|
||||||
|
$u = (int) $u;
|
||||||
|
$v = (int) $v;
|
||||||
|
|
||||||
|
if ($cumulative) {
|
||||||
|
$adjustedValue = ($u * $value) / ($u * $value + $v);
|
||||||
|
|
||||||
|
return self::incompleteBeta($adjustedValue, $u / 2, $v / 2);
|
||||||
|
}
|
||||||
|
|
||||||
|
return (self::gamma(($v + $u) / 2) / (self::gamma($u / 2) * self::gamma($v / 2))) *
|
||||||
|
(($u / $v) ** ($u / 2)) *
|
||||||
|
(($value ** (($u - 2) / 2)) / ((1 + ($u / $v) * $value) ** (($u + $v) / 2)));
|
||||||
|
}
|
||||||
|
|
||||||
|
return Functions::VALUE();
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* FISHER.
|
* FISHER.
|
||||||
*
|
*
|
||||||
|
@ -1556,6 +1612,27 @@ class Statistical
|
||||||
return $bestFitLinear->getValueOfYForX($xValue);
|
return $bestFitLinear->getValueOfYForX($xValue);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* GAMMA.
|
||||||
|
*
|
||||||
|
* Return the gamma function value.
|
||||||
|
*
|
||||||
|
* @param float $value
|
||||||
|
*
|
||||||
|
* @return float|string The result, or a string containing an error
|
||||||
|
*/
|
||||||
|
public static function GAMMAFunction($value)
|
||||||
|
{
|
||||||
|
$value = Functions::flattenSingleValue($value);
|
||||||
|
if (!is_numeric($value)) {
|
||||||
|
return Functions::VALUE();
|
||||||
|
} elseif ((((int) $value) == ((float) $value)) && $value <= 0.0) {
|
||||||
|
return Functions::NAN();
|
||||||
|
}
|
||||||
|
|
||||||
|
return self::gamma($value);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* GAMMADIST.
|
* GAMMADIST.
|
||||||
*
|
*
|
||||||
|
@ -1593,7 +1670,7 @@ class Statistical
|
||||||
/**
|
/**
|
||||||
* GAMMAINV.
|
* GAMMAINV.
|
||||||
*
|
*
|
||||||
* Returns the inverse of the beta distribution.
|
* Returns the inverse of the Gamma distribution.
|
||||||
*
|
*
|
||||||
* @param float $probability Probability at which you want to evaluate the distribution
|
* @param float $probability Probability at which you want to evaluate the distribution
|
||||||
* @param float $alpha Parameter to the distribution
|
* @param float $alpha Parameter to the distribution
|
||||||
|
@ -1677,6 +1754,26 @@ class Statistical
|
||||||
return Functions::VALUE();
|
return Functions::VALUE();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* GAUSS.
|
||||||
|
*
|
||||||
|
* Calculates the probability that a member of a standard normal population will fall between
|
||||||
|
* the mean and z standard deviations from the mean.
|
||||||
|
*
|
||||||
|
* @param float $value
|
||||||
|
*
|
||||||
|
* @return float|string The result, or a string containing an error
|
||||||
|
*/
|
||||||
|
public static function GAUSS($value)
|
||||||
|
{
|
||||||
|
$value = Functions::flattenSingleValue($value);
|
||||||
|
if (!is_numeric($value)) {
|
||||||
|
return Functions::VALUE();
|
||||||
|
}
|
||||||
|
|
||||||
|
return self::NORMDIST($value, 0, 1, true) - 0.5;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* GEOMEAN.
|
* GEOMEAN.
|
||||||
*
|
*
|
||||||
|
@ -2117,6 +2214,42 @@ class Statistical
|
||||||
return Functions::VALUE();
|
return Functions::VALUE();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* LOGNORM.DIST.
|
||||||
|
*
|
||||||
|
* Returns the lognormal distribution of x, where ln(x) is normally distributed
|
||||||
|
* with parameters mean and standard_dev.
|
||||||
|
*
|
||||||
|
* @param float $value
|
||||||
|
* @param float $mean
|
||||||
|
* @param float $stdDev
|
||||||
|
* @param bool $cumulative
|
||||||
|
*
|
||||||
|
* @return float|string The result, or a string containing an error
|
||||||
|
*/
|
||||||
|
public static function LOGNORMDIST2($value, $mean, $stdDev, $cumulative = false)
|
||||||
|
{
|
||||||
|
$value = Functions::flattenSingleValue($value);
|
||||||
|
$mean = Functions::flattenSingleValue($mean);
|
||||||
|
$stdDev = Functions::flattenSingleValue($stdDev);
|
||||||
|
$cumulative = (bool) Functions::flattenSingleValue($cumulative);
|
||||||
|
|
||||||
|
if ((is_numeric($value)) && (is_numeric($mean)) && (is_numeric($stdDev))) {
|
||||||
|
if (($value <= 0) || ($stdDev <= 0)) {
|
||||||
|
return Functions::NAN();
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($cumulative === true) {
|
||||||
|
return self::NORMSDIST2((log($value) - $mean) / $stdDev, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
return (1 / (sqrt(2 * M_PI) * $stdDev * $value)) *
|
||||||
|
exp(0 - ((log($value) - $mean) ** 2 / (2 * $stdDev ** 2)));
|
||||||
|
}
|
||||||
|
|
||||||
|
return Functions::VALUE();
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* MAX.
|
* MAX.
|
||||||
*
|
*
|
||||||
|
@ -2623,10 +2756,36 @@ class Statistical
|
||||||
public static function NORMSDIST($value)
|
public static function NORMSDIST($value)
|
||||||
{
|
{
|
||||||
$value = Functions::flattenSingleValue($value);
|
$value = Functions::flattenSingleValue($value);
|
||||||
|
if (!is_numeric($value)) {
|
||||||
|
return Functions::VALUE();
|
||||||
|
}
|
||||||
|
|
||||||
return self::NORMDIST($value, 0, 1, true);
|
return self::NORMDIST($value, 0, 1, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* NORM.S.DIST.
|
||||||
|
*
|
||||||
|
* Returns the standard normal cumulative distribution function. The distribution has
|
||||||
|
* a mean of 0 (zero) and a standard deviation of one. Use this function in place of a
|
||||||
|
* table of standard normal curve areas.
|
||||||
|
*
|
||||||
|
* @param float $value
|
||||||
|
* @param bool $cumulative
|
||||||
|
*
|
||||||
|
* @return float|string The result, or a string containing an error
|
||||||
|
*/
|
||||||
|
public static function NORMSDIST2($value, $cumulative)
|
||||||
|
{
|
||||||
|
$value = Functions::flattenSingleValue($value);
|
||||||
|
if (!is_numeric($value)) {
|
||||||
|
return Functions::VALUE();
|
||||||
|
}
|
||||||
|
$cumulative = (bool) Functions::flattenSingleValue($cumulative);
|
||||||
|
|
||||||
|
return self::NORMDIST($value, 0, 1, $cumulative);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* NORMSINV.
|
* NORMSINV.
|
||||||
*
|
*
|
||||||
|
|
|
@ -17,8 +17,10 @@ class CorrelTest extends TestCase
|
||||||
* @dataProvider providerCORREL
|
* @dataProvider providerCORREL
|
||||||
*
|
*
|
||||||
* @param mixed $expectedResult
|
* @param mixed $expectedResult
|
||||||
|
* @param mixed $xargs
|
||||||
|
* @param mixed $yargs
|
||||||
*/
|
*/
|
||||||
public function testCORREL($expectedResult, array $xargs, array $yargs): void
|
public function testCORREL($expectedResult, $xargs, $yargs): void
|
||||||
{
|
{
|
||||||
$result = Statistical::CORREL($xargs, $yargs);
|
$result = Statistical::CORREL($xargs, $yargs);
|
||||||
self::assertEqualsWithDelta($expectedResult, $result, 1E-12);
|
self::assertEqualsWithDelta($expectedResult, $result, 1E-12);
|
||||||
|
|
|
@ -0,0 +1,25 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace PhpOffice\PhpSpreadsheetTests\Calculation\Functions\Statistical;
|
||||||
|
|
||||||
|
use PhpOffice\PhpSpreadsheet\Calculation\Statistical;
|
||||||
|
use PHPUnit\Framework\TestCase;
|
||||||
|
|
||||||
|
class FDist2Test extends TestCase
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* @dataProvider providerFDIST2
|
||||||
|
*
|
||||||
|
* @param mixed $expectedResult
|
||||||
|
*/
|
||||||
|
public function testFDIST2($expectedResult, ...$args): void
|
||||||
|
{
|
||||||
|
$result = Statistical::FDIST2(...$args);
|
||||||
|
self::assertEqualsWithDelta($expectedResult, $result, 1E-12);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function providerFDIST2(): array
|
||||||
|
{
|
||||||
|
return require 'tests/data/Calculation/Statistical/FDIST2.php';
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,26 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace PhpOffice\PhpSpreadsheetTests\Calculation\Functions\Statistical;
|
||||||
|
|
||||||
|
use PhpOffice\PhpSpreadsheet\Calculation\Statistical;
|
||||||
|
use PHPUnit\Framework\TestCase;
|
||||||
|
|
||||||
|
class GammaTest extends TestCase
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* @dataProvider providerGAMMA
|
||||||
|
*
|
||||||
|
* @param mixed $expectedResult
|
||||||
|
* @param mixed $testValue
|
||||||
|
*/
|
||||||
|
public function testGAMMA($expectedResult, $testValue): void
|
||||||
|
{
|
||||||
|
$result = Statistical::GAMMAFunction($testValue);
|
||||||
|
self::assertEqualsWithDelta($expectedResult, $result, 1E-12);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function providerGAMMA(): array
|
||||||
|
{
|
||||||
|
return require 'tests/data/Calculation/Statistical/GAMMA.php';
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,26 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace PhpOffice\PhpSpreadsheetTests\Calculation\Functions\Statistical;
|
||||||
|
|
||||||
|
use PhpOffice\PhpSpreadsheet\Calculation\Statistical;
|
||||||
|
use PHPUnit\Framework\TestCase;
|
||||||
|
|
||||||
|
class GaussTest extends TestCase
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* @dataProvider providerGAUSS
|
||||||
|
*
|
||||||
|
* @param mixed $expectedResult
|
||||||
|
* @param mixed $testValue
|
||||||
|
*/
|
||||||
|
public function testGAUSS($expectedResult, $testValue): void
|
||||||
|
{
|
||||||
|
$result = Statistical::GAUSS($testValue);
|
||||||
|
self::assertEqualsWithDelta($expectedResult, $result, 1E-12);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function providerGAUSS(): array
|
||||||
|
{
|
||||||
|
return require 'tests/data/Calculation/Statistical/GAUSS.php';
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,25 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace PhpOffice\PhpSpreadsheetTests\Calculation\Functions\Statistical;
|
||||||
|
|
||||||
|
use PhpOffice\PhpSpreadsheet\Calculation\Statistical;
|
||||||
|
use PHPUnit\Framework\TestCase;
|
||||||
|
|
||||||
|
class KurtTest extends TestCase
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* @dataProvider providerKURT
|
||||||
|
*
|
||||||
|
* @param mixed $expectedResult
|
||||||
|
*/
|
||||||
|
public function testKURT($expectedResult, ...$values): void
|
||||||
|
{
|
||||||
|
$result = Statistical::KURT(...$values);
|
||||||
|
self::assertEqualsWithDelta($expectedResult, $result, 1E-12);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function providerKURT()
|
||||||
|
{
|
||||||
|
return require 'tests/data/Calculation/Statistical/KURT.php';
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,25 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace PhpOffice\PhpSpreadsheetTests\Calculation\Functions\Statistical;
|
||||||
|
|
||||||
|
use PhpOffice\PhpSpreadsheet\Calculation\Statistical;
|
||||||
|
use PHPUnit\Framework\TestCase;
|
||||||
|
|
||||||
|
class LogNormDist2Test extends TestCase
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* @dataProvider providerLOGNORMDIST2
|
||||||
|
*
|
||||||
|
* @param mixed $expectedResult
|
||||||
|
*/
|
||||||
|
public function testLOGNORMDIST2($expectedResult, ...$args): void
|
||||||
|
{
|
||||||
|
$result = Statistical::LOGNORMDIST2(...$args);
|
||||||
|
self::assertEqualsWithDelta($expectedResult, $result, 1E-12);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function providerLOGNORMDIST2(): array
|
||||||
|
{
|
||||||
|
return require 'tests/data/Calculation/Statistical/LOGNORMDIST2.php';
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,25 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace PhpOffice\PhpSpreadsheetTests\Calculation\Functions\Statistical;
|
||||||
|
|
||||||
|
use PhpOffice\PhpSpreadsheet\Calculation\Statistical;
|
||||||
|
use PHPUnit\Framework\TestCase;
|
||||||
|
|
||||||
|
class LogNormDistTest extends TestCase
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* @dataProvider providerLOGNORMDIST
|
||||||
|
*
|
||||||
|
* @param mixed $expectedResult
|
||||||
|
*/
|
||||||
|
public function testLOGNORMDIST($expectedResult, ...$args): void
|
||||||
|
{
|
||||||
|
$result = Statistical::LOGNORMDIST(...$args);
|
||||||
|
self::assertEqualsWithDelta($expectedResult, $result, 1E-12);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function providerLOGNORMDIST(): array
|
||||||
|
{
|
||||||
|
return require 'tests/data/Calculation/Statistical/LOGNORMDIST.php';
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,25 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace PhpOffice\PhpSpreadsheetTests\Calculation\Functions\Statistical;
|
||||||
|
|
||||||
|
use PhpOffice\PhpSpreadsheet\Calculation\Statistical;
|
||||||
|
use PHPUnit\Framework\TestCase;
|
||||||
|
|
||||||
|
class NormDistTest extends TestCase
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* @dataProvider providerNORMDIST
|
||||||
|
*
|
||||||
|
* @param mixed $expectedResult
|
||||||
|
*/
|
||||||
|
public function testNORMDIST($expectedResult, ...$args): void
|
||||||
|
{
|
||||||
|
$result = Statistical::NORMDIST(...$args);
|
||||||
|
self::assertEqualsWithDelta($expectedResult, $result, 1E-12);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function providerNORMDIST(): array
|
||||||
|
{
|
||||||
|
return require 'tests/data/Calculation/Statistical/NORMDIST.php';
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,25 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace PhpOffice\PhpSpreadsheetTests\Calculation\Functions\Statistical;
|
||||||
|
|
||||||
|
use PhpOffice\PhpSpreadsheet\Calculation\Statistical;
|
||||||
|
use PHPUnit\Framework\TestCase;
|
||||||
|
|
||||||
|
class NormInvTest extends TestCase
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* @dataProvider providerNORMINV
|
||||||
|
*
|
||||||
|
* @param mixed $expectedResult
|
||||||
|
*/
|
||||||
|
public function testNORMINV($expectedResult, ...$args): void
|
||||||
|
{
|
||||||
|
$result = Statistical::NORMINV(...$args);
|
||||||
|
self::assertEqualsWithDelta($expectedResult, $result, 1E-12);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function providerNORMINV()
|
||||||
|
{
|
||||||
|
return require 'tests/data/Calculation/Statistical/NORMINV.php';
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,25 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace PhpOffice\PhpSpreadsheetTests\Calculation\Functions\Statistical;
|
||||||
|
|
||||||
|
use PhpOffice\PhpSpreadsheet\Calculation\Statistical;
|
||||||
|
use PHPUnit\Framework\TestCase;
|
||||||
|
|
||||||
|
class NormSDist2Test extends TestCase
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* @dataProvider providerNORMSDIST2
|
||||||
|
*
|
||||||
|
* @param mixed $expectedResult
|
||||||
|
*/
|
||||||
|
public function testNORMSDIST2($expectedResult, ...$args): void
|
||||||
|
{
|
||||||
|
$result = Statistical::NORMSDIST2(...$args);
|
||||||
|
self::assertEqualsWithDelta($expectedResult, $result, 1E-12);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function providerNORMSDIST2(): array
|
||||||
|
{
|
||||||
|
return require 'tests/data/Calculation/Statistical/NORMSDIST2.php';
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,26 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace PhpOffice\PhpSpreadsheetTests\Calculation\Functions\Statistical;
|
||||||
|
|
||||||
|
use PhpOffice\PhpSpreadsheet\Calculation\Statistical;
|
||||||
|
use PHPUnit\Framework\TestCase;
|
||||||
|
|
||||||
|
class NormSDistTest extends TestCase
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* @dataProvider providerNORMSDIST
|
||||||
|
*
|
||||||
|
* @param mixed $expectedResult
|
||||||
|
* @param mixed $testValue
|
||||||
|
*/
|
||||||
|
public function testNORMSDIST($expectedResult, $testValue): void
|
||||||
|
{
|
||||||
|
$result = Statistical::NORMSDIST($testValue);
|
||||||
|
self::assertEqualsWithDelta($expectedResult, $result, 1E-12);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function providerNORMSDIST(): array
|
||||||
|
{
|
||||||
|
return require 'tests/data/Calculation/Statistical/NORMSDIST.php';
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,26 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace PhpOffice\PhpSpreadsheetTests\Calculation\Functions\Statistical;
|
||||||
|
|
||||||
|
use PhpOffice\PhpSpreadsheet\Calculation\Statistical;
|
||||||
|
use PHPUnit\Framework\TestCase;
|
||||||
|
|
||||||
|
class NormSInvTest extends TestCase
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* @dataProvider providerNORMSINV
|
||||||
|
*
|
||||||
|
* @param mixed $expectedResult
|
||||||
|
* @param mixed $testValue
|
||||||
|
*/
|
||||||
|
public function testNORMSINV($expectedResult, $testValue): void
|
||||||
|
{
|
||||||
|
$result = Statistical::NORMSINV($testValue);
|
||||||
|
self::assertEqualsWithDelta($expectedResult, $result, 1E-12);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function providerNORMSINV(): array
|
||||||
|
{
|
||||||
|
return require 'tests/data/Calculation/Statistical/NORMSINV.php';
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,25 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace PhpOffice\PhpSpreadsheetTests\Calculation\Functions\Statistical;
|
||||||
|
|
||||||
|
use PhpOffice\PhpSpreadsheet\Calculation\Statistical;
|
||||||
|
use PHPUnit\Framework\TestCase;
|
||||||
|
|
||||||
|
class StandardizeTest extends TestCase
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* @dataProvider providerSTANDARDIZE
|
||||||
|
*
|
||||||
|
* @param mixed $expectedResult
|
||||||
|
*/
|
||||||
|
public function testSTANDARDIZE($expectedResult, ...$args): void
|
||||||
|
{
|
||||||
|
$result = Statistical::STANDARDIZE(...$args);
|
||||||
|
self::assertEqualsWithDelta($expectedResult, $result, 1E-12);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function providerSTANDARDIZE(): array
|
||||||
|
{
|
||||||
|
return require 'tests/data/Calculation/Statistical/STANDARDIZE.php';
|
||||||
|
}
|
||||||
|
}
|
|
@ -21,4 +21,12 @@ return [
|
||||||
0.685470581054,
|
0.685470581054,
|
||||||
2, 8, 10, 1, 3,
|
2, 8, 10, 1, 3,
|
||||||
],
|
],
|
||||||
|
[
|
||||||
|
'#VALUE!',
|
||||||
|
2, 'NAN', 10, 1, 3,
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'#NUM!',
|
||||||
|
2, -8, 10, 1, 3,
|
||||||
|
],
|
||||||
];
|
];
|
||||||
|
|
|
@ -21,4 +21,12 @@ return [
|
||||||
0.303225844664,
|
0.303225844664,
|
||||||
0.2, 4, 5, 0, 1,
|
0.2, 4, 5, 0, 1,
|
||||||
],
|
],
|
||||||
|
[
|
||||||
|
'#VALUE!',
|
||||||
|
0.2, 'NAN', 5, 0, 1,
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'#NUM!',
|
||||||
|
0.2, -4, 5, 0, 1,
|
||||||
|
],
|
||||||
];
|
];
|
||||||
|
|
|
@ -45,4 +45,16 @@ return [
|
||||||
0.999105034804,
|
0.999105034804,
|
||||||
65, 100, 0.5, true,
|
65, 100, 0.5, true,
|
||||||
],
|
],
|
||||||
|
[
|
||||||
|
'#VALUE!',
|
||||||
|
'NAN', 100, 0.5, true,
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'#NUM!',
|
||||||
|
-5, 100, 0.5, true,
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'#NUM!',
|
||||||
|
5, 100, 1.5, true,
|
||||||
|
],
|
||||||
];
|
];
|
||||||
|
|
|
@ -33,4 +33,12 @@ return [
|
||||||
0.046011705689,
|
0.046011705689,
|
||||||
8, 3,
|
8, 3,
|
||||||
],
|
],
|
||||||
|
[
|
||||||
|
'#VALUE!',
|
||||||
|
'NAN', 3,
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'#NUM!',
|
||||||
|
-8, 3,
|
||||||
|
],
|
||||||
];
|
];
|
||||||
|
|
|
@ -33,4 +33,8 @@ return [
|
||||||
4.108344935632,
|
4.108344935632,
|
||||||
0.25, 3,
|
0.25, 3,
|
||||||
],
|
],
|
||||||
|
[
|
||||||
|
'#VALUE!',
|
||||||
|
0.25, 'NAN',
|
||||||
|
],
|
||||||
];
|
];
|
||||||
|
|
|
@ -13,4 +13,16 @@ return [
|
||||||
0.013719747903,
|
0.013719747903,
|
||||||
0.05, 0.07, 100,
|
0.05, 0.07, 100,
|
||||||
],
|
],
|
||||||
|
[
|
||||||
|
'#VALUE!',
|
||||||
|
'NAN', 0.07, 100,
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'#NUM!',
|
||||||
|
1.05, 0.07, 100,
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'#NUM!',
|
||||||
|
0.05, -0.07, 100,
|
||||||
|
],
|
||||||
];
|
];
|
||||||
|
|
|
@ -11,4 +11,19 @@ return [
|
||||||
[2, 10, 7, 17, 14, 16, 8, 12, 11, 15, 18, 3, 4, 1, 6, 5, 13, 19, 20, 9],
|
[2, 10, 7, 17, 14, 16, 8, 12, 11, 15, 18, 3, 4, 1, 6, 5, 13, 19, 20, 9],
|
||||||
[22.9, 45.78, 33.49, 49.77, 40.94, 36.18, 21.05, 50.57, 31.32, 53.76, 55.66, 27.61, 11.15, 10.11, 37.9, 31.08, 45.48, 63.83, 63.6, 27.01],
|
[22.9, 45.78, 33.49, 49.77, 40.94, 36.18, 21.05, 50.57, 31.32, 53.76, 55.66, 27.61, 11.15, 10.11, 37.9, 31.08, 45.48, 63.83, 63.6, 27.01],
|
||||||
],
|
],
|
||||||
|
[
|
||||||
|
'#VALUE!',
|
||||||
|
3,
|
||||||
|
9,
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'#N/A',
|
||||||
|
[],
|
||||||
|
[],
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'#DIV/0!',
|
||||||
|
[3],
|
||||||
|
[9],
|
||||||
|
],
|
||||||
];
|
];
|
||||||
|
|
|
@ -9,4 +9,12 @@ return [
|
||||||
0.393469340287,
|
0.393469340287,
|
||||||
0.5, 1, true,
|
0.5, 1, true,
|
||||||
],
|
],
|
||||||
|
[
|
||||||
|
'#VALUE!',
|
||||||
|
0.5, 'NAN', true,
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'#NUM!',
|
||||||
|
-0.5, 1, true,
|
||||||
|
],
|
||||||
];
|
];
|
||||||
|
|
|
@ -0,0 +1,17 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
return [
|
||||||
|
[0.0012237917087, 15.2069, 6, 4, false],
|
||||||
|
[0.99000004300276, 15.2069, 6, 4, true],
|
||||||
|
[0.0241472644208, 5, 1, 2, false],
|
||||||
|
[0.84515425472852, 5, 1, 2, true],
|
||||||
|
[0.0006669496615, 65, 2, 1, false],
|
||||||
|
[0.9126295943339, 65, 2, 1, true],
|
||||||
|
[4.7306581130012E-6, 65, 8, 5, false],
|
||||||
|
[0.99987479238344, 65, 8, 5, true],
|
||||||
|
[0.0017323823929, 7.5, 13, 8, false],
|
||||||
|
[0.9961476916638, 7.5, 13, 8, true],
|
||||||
|
['#NUM!', -1, 1, 2, false],
|
||||||
|
['#NUM!', -1, 0.5, 2, false],
|
||||||
|
['#VALUE!', 'NAN', 1, 2, false],
|
||||||
|
];
|
|
@ -13,4 +13,12 @@ return [
|
||||||
1.098612288668,
|
1.098612288668,
|
||||||
0.8,
|
0.8,
|
||||||
],
|
],
|
||||||
|
[
|
||||||
|
'#VALUE!',
|
||||||
|
'NAN',
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'#NUM!',
|
||||||
|
-2,
|
||||||
|
],
|
||||||
];
|
];
|
||||||
|
|
|
@ -17,4 +17,8 @@ return [
|
||||||
0.992631520201,
|
0.992631520201,
|
||||||
2.8,
|
2.8,
|
||||||
],
|
],
|
||||||
|
[
|
||||||
|
'#VALUE!',
|
||||||
|
'NAN',
|
||||||
|
],
|
||||||
];
|
];
|
||||||
|
|
|
@ -0,0 +1,13 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
return [
|
||||||
|
[1.329340388179, 2.5],
|
||||||
|
[0.267865934620, -3.75],
|
||||||
|
[9.513507698669, 0.1],
|
||||||
|
[1.0, 1.0],
|
||||||
|
[0.886226925453, 1.5],
|
||||||
|
[17.837861981813, 4.8],
|
||||||
|
[52.342777784553, 5.5],
|
||||||
|
['#NUM!', -1],
|
||||||
|
['#VALUE!', 'NAN'],
|
||||||
|
];
|
|
@ -9,4 +9,12 @@ return [
|
||||||
0.576809918873,
|
0.576809918873,
|
||||||
6, 3, 2, true,
|
6, 3, 2, true,
|
||||||
],
|
],
|
||||||
|
[
|
||||||
|
'#VALUE!',
|
||||||
|
6, 'NAN', 2, true,
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'#NUM!',
|
||||||
|
-6, 3, 2, true,
|
||||||
|
],
|
||||||
];
|
];
|
||||||
|
|
|
@ -5,4 +5,12 @@ return [
|
||||||
5.348120627447,
|
5.348120627447,
|
||||||
0.5, 3, 2,
|
0.5, 3, 2,
|
||||||
],
|
],
|
||||||
|
[
|
||||||
|
'#VALUE!',
|
||||||
|
'NAN', 3, 2,
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'#NUM!',
|
||||||
|
-0.5, 3, 2,
|
||||||
|
],
|
||||||
];
|
];
|
||||||
|
|
|
@ -5,4 +5,12 @@ return [
|
||||||
2.453736570842,
|
2.453736570842,
|
||||||
4.5,
|
4.5,
|
||||||
],
|
],
|
||||||
|
[
|
||||||
|
'#VALUE!',
|
||||||
|
'NAN',
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'#NUM!',
|
||||||
|
-4.5,
|
||||||
|
],
|
||||||
];
|
];
|
||||||
|
|
|
@ -0,0 +1,10 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
return [
|
||||||
|
[0.4772498680518, 2],
|
||||||
|
[-0.4999997133484, -5],
|
||||||
|
[0.0, 0],
|
||||||
|
[0.0398278372770, 0.1],
|
||||||
|
[0.4937903346742, 2.5],
|
||||||
|
['#VALUE!', 'NAN'],
|
||||||
|
];
|
|
@ -0,0 +1,12 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
return[
|
||||||
|
[
|
||||||
|
-0.1517996372084,
|
||||||
|
[3, 4, 5, 2, 3, 4, 5, 6, 4, 7],
|
||||||
|
],
|
||||||
|
[
|
||||||
|
0.532657874050135,
|
||||||
|
[4, 5, 4, 4, 4, 4, 4, 2, 3, 5, 5, 3],
|
||||||
|
],
|
||||||
|
];
|
|
@ -0,0 +1,9 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
return[
|
||||||
|
[0.0390835557068, 4, 3.5, 1.2],
|
||||||
|
[0.066417114799, 12, 10, 5],
|
||||||
|
['#NUM!', -1.1, -2.2, 3.3],
|
||||||
|
['#NUM!', 1.1, -2.2, -3.3],
|
||||||
|
['#VALUE!', 'NAN', 0.1, 0.2],
|
||||||
|
];
|
|
@ -0,0 +1,23 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
return[
|
||||||
|
[0.0390835557068, 4, 3.5, 1.2, true],
|
||||||
|
[0.0176175966818, 4, 3.5, 1.2, false],
|
||||||
|
[0.0162328457851, 0.5, 10, 5, true],
|
||||||
|
[0.0162104821842, 0.5, 10, 5, false],
|
||||||
|
[0.0664171147992, 12, 10, 5, true],
|
||||||
|
[0.0021488646273, 12, 10, 5, false],
|
||||||
|
[0.0201708646513, 8, 7, 2.4, true],
|
||||||
|
[0.0025400389694, 8, 7, 2.4, false],
|
||||||
|
[0.0390835557068, 4, 3.5, 1.2, true],
|
||||||
|
[0.0176175966818, 4, 3.5, 1.2, false],
|
||||||
|
[0.0847348867430, 3, 2.5, 1.02, true],
|
||||||
|
[0.0507335863525, 3, 2.5, 1.02, false],
|
||||||
|
[0.2618068896629, 1.1, 2.2, 3.3, true],
|
||||||
|
[0.0896756593248, 1.1, 2.2, 3.3, false],
|
||||||
|
[0.7566441984111, 1.1, -2.2, 3.3, true],
|
||||||
|
[0.0862879718374, 1.1, -2.2, 3.3, false],
|
||||||
|
['#NUM!', -1.1, -2.2, 3.3, true],
|
||||||
|
['#NUM!', 1.1, -2.2, -3.3, true],
|
||||||
|
['#VALUE!', 'NAN', 0.1, 0.2, true],
|
||||||
|
];
|
|
@ -0,0 +1,11 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
return [
|
||||||
|
[0.9087887802741, 42, 40, 1.5, true],
|
||||||
|
[0.109340049784, 42, 40, 1.5, false],
|
||||||
|
[0.0176032663382, 50, 40, 20, false],
|
||||||
|
[0.2524925375469, 0.8, 1, 0.3, true],
|
||||||
|
[0.8413447460685, 68, 65.5, 2.5, true],
|
||||||
|
['#NUM!', 42, 40, -1.5, true],
|
||||||
|
['#VALUE!', 42, 'ALPHA', 1.5, true],
|
||||||
|
];
|
|
@ -0,0 +1,11 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
return [
|
||||||
|
[42.000002008416, 0.908789, 40, 1.5],
|
||||||
|
[5.50669420572, 0.6, 5, 2],
|
||||||
|
[63.813775624441, 0.25, 65.5, 2.5],
|
||||||
|
['#NUM!', -0.5, 2.2, 3.3],
|
||||||
|
['#NUM!', 1.5, 2.2, 3.3],
|
||||||
|
['#NUM!', 0.5, 2.2, -3.3],
|
||||||
|
['#VALUE!', 'NAN', 0.1, 0.2],
|
||||||
|
];
|
|
@ -0,0 +1,12 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
return [
|
||||||
|
[0.908788780274, 1.333333333333],
|
||||||
|
[0.788144601416, 0.8],
|
||||||
|
[0.841344746068, 1.0],
|
||||||
|
[0.158655253931, -1.0],
|
||||||
|
[0.066807201269, -1.5],
|
||||||
|
[0.5, 0],
|
||||||
|
[0.989275889978, 2.3],
|
||||||
|
['#VALUE!', 'NAN'],
|
||||||
|
];
|
|
@ -0,0 +1,17 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
return [
|
||||||
|
[0.908788780274, 1.333333333333, true],
|
||||||
|
[0.164010074676, 1.333333333333, false],
|
||||||
|
[0.352065326764, 0.5, false],
|
||||||
|
[0.788144601416, 0.8, true],
|
||||||
|
[0.841344746068, 1.0, true],
|
||||||
|
[0.158655253931, -1.0, true],
|
||||||
|
[0.066807201269, -1.5, true],
|
||||||
|
[0.129517595666, -1.5, false],
|
||||||
|
[0.5, 0, true],
|
||||||
|
[0.398942280401, 0, false],
|
||||||
|
[0.989275889978, 2.3, true],
|
||||||
|
[0.028327037742, 2.3, false],
|
||||||
|
['#VALUE!', 'NAN', true],
|
||||||
|
];
|
|
@ -0,0 +1,8 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
return [
|
||||||
|
[1.33333467227723, 0.908789],
|
||||||
|
[-0.67448975022342, 0.25],
|
||||||
|
[0.12566134687610, 0.55],
|
||||||
|
[1.28155156414015, 0.9],
|
||||||
|
];
|
|
@ -0,0 +1,12 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
return [
|
||||||
|
[1.333333333333, 42, 40, 1.5],
|
||||||
|
[0.25, 5.5, 5, 2],
|
||||||
|
[20, 5.5, 1.5, 0.2],
|
||||||
|
[-2.0, 12, 15, 1.5],
|
||||||
|
[-0.4, -2, 0, 5],
|
||||||
|
[-0.676, 63.81, 65.5, 2.5],
|
||||||
|
['#NUM!', 1.1, -2.2, -3.3],
|
||||||
|
['#VALUE!', 'NAN', 0.1, 0.2],
|
||||||
|
];
|
|
@ -11,4 +11,14 @@ return [
|
||||||
[3, 7.9, 8, 9.2, 12, 10.5, 15, 15.5, 17],
|
[3, 7.9, 8, 9.2, 12, 10.5, 15, 15.5, 17],
|
||||||
[1, 2, 3, 4, 4.5, 5, 6, 7, 8],
|
[1, 2, 3, 4, 4.5, 5, 6, 7, 8],
|
||||||
],
|
],
|
||||||
|
[
|
||||||
|
'#N/A',
|
||||||
|
[],
|
||||||
|
[],
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'#DIV/0!',
|
||||||
|
[2],
|
||||||
|
[1],
|
||||||
|
],
|
||||||
];
|
];
|
||||||
|
|
Loading…
Reference in New Issue