305 changed files with 69617 additions and 0 deletions
@ -0,0 +1,21 @@ |
|||||
|
MIT License |
||||
|
|
||||
|
Copyright (c) 2019 PhpSpreadsheet Authors |
||||
|
|
||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy |
||||
|
of this software and associated documentation files (the "Software"), to deal |
||||
|
in the Software without restriction, including without limitation the rights |
||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell |
||||
|
copies of the Software, and to permit persons to whom the Software is |
||||
|
furnished to do so, subject to the following conditions: |
||||
|
|
||||
|
The above copyright notice and this permission notice shall be included in all |
||||
|
copies or substantial portions of the Software. |
||||
|
|
||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR |
||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, |
||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE |
||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER |
||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, |
||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE |
||||
|
SOFTWARE. |
||||
@ -0,0 +1,46 @@ |
|||||
|
<?php |
||||
|
|
||||
|
namespace PhpOffice\PhpSpreadsheet\Calculation\Database; |
||||
|
|
||||
|
use PhpOffice\PhpSpreadsheet\Calculation\Statistical\Maximum; |
||||
|
|
||||
|
class DMax extends DatabaseAbstract |
||||
|
{ |
||||
|
/** |
||||
|
* DMAX. |
||||
|
* |
||||
|
* Returns the largest number in a column of a list or database that matches conditions you that |
||||
|
* specify. |
||||
|
* |
||||
|
* Excel Function: |
||||
|
* DMAX(database,field,criteria) |
||||
|
* |
||||
|
* @param mixed[] $database The range of cells that makes up the list or database. |
||||
|
* A database is a list of related data in which rows of related |
||||
|
* information are records, and columns of data are fields. The |
||||
|
* first row of the list contains labels for each column. |
||||
|
* @param int|string $field Indicates which column is used in the function. Enter the |
||||
|
* column label enclosed between double quotation marks, such as |
||||
|
* "Age" or "Yield," or a number (without quotation marks) that |
||||
|
* represents the position of the column within the list: 1 for |
||||
|
* the first column, 2 for the second column, and so on. |
||||
|
* @param mixed[] $criteria The range of cells that contains the conditions you specify. |
||||
|
* You can use any range for the criteria argument, as long as it |
||||
|
* includes at least one column label and at least one cell below |
||||
|
* the column label in which you specify a condition for the |
||||
|
* column. |
||||
|
* |
||||
|
* @return null|float|string |
||||
|
*/ |
||||
|
public static function evaluate($database, $field, $criteria) |
||||
|
{ |
||||
|
$field = self::fieldExtract($database, $field); |
||||
|
if ($field === null) { |
||||
|
return null; |
||||
|
} |
||||
|
|
||||
|
return Maximum::max( |
||||
|
self::getFilteredColumn($database, $field, $criteria) |
||||
|
); |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,46 @@ |
|||||
|
<?php |
||||
|
|
||||
|
namespace PhpOffice\PhpSpreadsheet\Calculation\Database; |
||||
|
|
||||
|
use PhpOffice\PhpSpreadsheet\Calculation\Statistical\Minimum; |
||||
|
|
||||
|
class DMin extends DatabaseAbstract |
||||
|
{ |
||||
|
/** |
||||
|
* DMIN. |
||||
|
* |
||||
|
* Returns the smallest number in a column of a list or database that matches conditions you that |
||||
|
* specify. |
||||
|
* |
||||
|
* Excel Function: |
||||
|
* DMIN(database,field,criteria) |
||||
|
* |
||||
|
* @param mixed[] $database The range of cells that makes up the list or database. |
||||
|
* A database is a list of related data in which rows of related |
||||
|
* information are records, and columns of data are fields. The |
||||
|
* first row of the list contains labels for each column. |
||||
|
* @param int|string $field Indicates which column is used in the function. Enter the |
||||
|
* column label enclosed between double quotation marks, such as |
||||
|
* "Age" or "Yield," or a number (without quotation marks) that |
||||
|
* represents the position of the column within the list: 1 for |
||||
|
* the first column, 2 for the second column, and so on. |
||||
|
* @param mixed[] $criteria The range of cells that contains the conditions you specify. |
||||
|
* You can use any range for the criteria argument, as long as it |
||||
|
* includes at least one column label and at least one cell below |
||||
|
* the column label in which you specify a condition for the |
||||
|
* column. |
||||
|
* |
||||
|
* @return null|float|string |
||||
|
*/ |
||||
|
public static function evaluate($database, $field, $criteria) |
||||
|
{ |
||||
|
$field = self::fieldExtract($database, $field); |
||||
|
if ($field === null) { |
||||
|
return null; |
||||
|
} |
||||
|
|
||||
|
return Minimum::min( |
||||
|
self::getFilteredColumn($database, $field, $criteria) |
||||
|
); |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,45 @@ |
|||||
|
<?php |
||||
|
|
||||
|
namespace PhpOffice\PhpSpreadsheet\Calculation\Database; |
||||
|
|
||||
|
use PhpOffice\PhpSpreadsheet\Calculation\MathTrig; |
||||
|
|
||||
|
class DProduct extends DatabaseAbstract |
||||
|
{ |
||||
|
/** |
||||
|
* DPRODUCT. |
||||
|
* |
||||
|
* Multiplies the values in a column of a list or database that match conditions that you specify. |
||||
|
* |
||||
|
* Excel Function: |
||||
|
* DPRODUCT(database,field,criteria) |
||||
|
* |
||||
|
* @param mixed[] $database The range of cells that makes up the list or database. |
||||
|
* A database is a list of related data in which rows of related |
||||
|
* information are records, and columns of data are fields. The |
||||
|
* first row of the list contains labels for each column. |
||||
|
* @param int|string $field Indicates which column is used in the function. Enter the |
||||
|
* column label enclosed between double quotation marks, such as |
||||
|
* "Age" or "Yield," or a number (without quotation marks) that |
||||
|
* represents the position of the column within the list: 1 for |
||||
|
* the first column, 2 for the second column, and so on. |
||||
|
* @param mixed[] $criteria The range of cells that contains the conditions you specify. |
||||
|
* You can use any range for the criteria argument, as long as it |
||||
|
* includes at least one column label and at least one cell below |
||||
|
* the column label in which you specify a condition for the |
||||
|
* column. |
||||
|
* |
||||
|
* @return null|float|string |
||||
|
*/ |
||||
|
public static function evaluate($database, $field, $criteria) |
||||
|
{ |
||||
|
$field = self::fieldExtract($database, $field); |
||||
|
if ($field === null) { |
||||
|
return null; |
||||
|
} |
||||
|
|
||||
|
return MathTrig\Operations::product( |
||||
|
self::getFilteredColumn($database, $field, $criteria) |
||||
|
); |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,46 @@ |
|||||
|
<?php |
||||
|
|
||||
|
namespace PhpOffice\PhpSpreadsheet\Calculation\Database; |
||||
|
|
||||
|
use PhpOffice\PhpSpreadsheet\Calculation\Statistical\StandardDeviations; |
||||
|
|
||||
|
class DStDev extends DatabaseAbstract |
||||
|
{ |
||||
|
/** |
||||
|
* DSTDEV. |
||||
|
* |
||||
|
* Estimates the standard deviation of a population based on a sample by using the numbers in a |
||||
|
* column of a list or database that match conditions that you specify. |
||||
|
* |
||||
|
* Excel Function: |
||||
|
* DSTDEV(database,field,criteria) |
||||
|
* |
||||
|
* @param mixed[] $database The range of cells that makes up the list or database. |
||||
|
* A database is a list of related data in which rows of related |
||||
|
* information are records, and columns of data are fields. The |
||||
|
* first row of the list contains labels for each column. |
||||
|
* @param int|string $field Indicates which column is used in the function. Enter the |
||||
|
* column label enclosed between double quotation marks, such as |
||||
|
* "Age" or "Yield," or a number (without quotation marks) that |
||||
|
* represents the position of the column within the list: 1 for |
||||
|
* the first column, 2 for the second column, and so on. |
||||
|
* @param mixed[] $criteria The range of cells that contains the conditions you specify. |
||||
|
* You can use any range for the criteria argument, as long as it |
||||
|
* includes at least one column label and at least one cell below |
||||
|
* the column label in which you specify a condition for the |
||||
|
* column. |
||||
|
* |
||||
|
* @return null|float|string |
||||
|
*/ |
||||
|
public static function evaluate($database, $field, $criteria) |
||||
|
{ |
||||
|
$field = self::fieldExtract($database, $field); |
||||
|
if ($field === null) { |
||||
|
return null; |
||||
|
} |
||||
|
|
||||
|
return StandardDeviations::STDEV( |
||||
|
self::getFilteredColumn($database, $field, $criteria) |
||||
|
); |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,46 @@ |
|||||
|
<?php |
||||
|
|
||||
|
namespace PhpOffice\PhpSpreadsheet\Calculation\Database; |
||||
|
|
||||
|
use PhpOffice\PhpSpreadsheet\Calculation\Statistical\StandardDeviations; |
||||
|
|
||||
|
class DStDevP extends DatabaseAbstract |
||||
|
{ |
||||
|
/** |
||||
|
* DSTDEVP. |
||||
|
* |
||||
|
* Calculates the standard deviation of a population based on the entire population by using the |
||||
|
* numbers in a column of a list or database that match conditions that you specify. |
||||
|
* |
||||
|
* Excel Function: |
||||
|
* DSTDEVP(database,field,criteria) |
||||
|
* |
||||
|
* @param mixed[] $database The range of cells that makes up the list or database. |
||||
|
* A database is a list of related data in which rows of related |
||||
|
* information are records, and columns of data are fields. The |
||||
|
* first row of the list contains labels for each column. |
||||
|
* @param int|string $field Indicates which column is used in the function. Enter the |
||||
|
* column label enclosed between double quotation marks, such as |
||||
|
* "Age" or "Yield," or a number (without quotation marks) that |
||||
|
* represents the position of the column within the list: 1 for |
||||
|
* the first column, 2 for the second column, and so on. |
||||
|
* @param mixed[] $criteria The range of cells that contains the conditions you specify. |
||||
|
* You can use any range for the criteria argument, as long as it |
||||
|
* includes at least one column label and at least one cell below |
||||
|
* the column label in which you specify a condition for the |
||||
|
* column. |
||||
|
* |
||||
|
* @return null|float|string |
||||
|
*/ |
||||
|
public static function evaluate($database, $field, $criteria) |
||||
|
{ |
||||
|
$field = self::fieldExtract($database, $field); |
||||
|
if ($field === null) { |
||||
|
return null; |
||||
|
} |
||||
|
|
||||
|
return StandardDeviations::STDEVP( |
||||
|
self::getFilteredColumn($database, $field, $criteria) |
||||
|
); |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,45 @@ |
|||||
|
<?php |
||||
|
|
||||
|
namespace PhpOffice\PhpSpreadsheet\Calculation\Database; |
||||
|
|
||||
|
use PhpOffice\PhpSpreadsheet\Calculation\MathTrig; |
||||
|
|
||||
|
class DSum extends DatabaseAbstract |
||||
|
{ |
||||
|
/** |
||||
|
* DSUM. |
||||
|
* |
||||
|
* Adds the numbers in a column of a list or database that match conditions that you specify. |
||||
|
* |
||||
|
* Excel Function: |
||||
|
* DSUM(database,field,criteria) |
||||
|
* |
||||
|
* @param mixed[] $database The range of cells that makes up the list or database. |
||||
|
* A database is a list of related data in which rows of related |
||||
|
* information are records, and columns of data are fields. The |
||||
|
* first row of the list contains labels for each column. |
||||
|
* @param int|string $field Indicates which column is used in the function. Enter the |
||||
|
* column label enclosed between double quotation marks, such as |
||||
|
* "Age" or "Yield," or a number (without quotation marks) that |
||||
|
* represents the position of the column within the list: 1 for |
||||
|
* the first column, 2 for the second column, and so on. |
||||
|
* @param mixed[] $criteria The range of cells that contains the conditions you specify. |
||||
|
* You can use any range for the criteria argument, as long as it |
||||
|
* includes at least one column label and at least one cell below |
||||
|
* the column label in which you specify a condition for the |
||||
|
* column. |
||||
|
* |
||||
|
* @return null|float|string |
||||
|
*/ |
||||
|
public static function evaluate($database, $field, $criteria) |
||||
|
{ |
||||
|
$field = self::fieldExtract($database, $field); |
||||
|
if ($field === null) { |
||||
|
return null; |
||||
|
} |
||||
|
|
||||
|
return MathTrig\Sum::sumIgnoringStrings( |
||||
|
self::getFilteredColumn($database, $field, $criteria) |
||||
|
); |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,46 @@ |
|||||
|
<?php |
||||
|
|
||||
|
namespace PhpOffice\PhpSpreadsheet\Calculation\Database; |
||||
|
|
||||
|
use PhpOffice\PhpSpreadsheet\Calculation\Statistical\Variances; |
||||
|
|
||||
|
class DVar extends DatabaseAbstract |
||||
|
{ |
||||
|
/** |
||||
|
* DVAR. |
||||
|
* |
||||
|
* Estimates the variance of a population based on a sample by using the numbers in a column |
||||
|
* of a list or database that match conditions that you specify. |
||||
|
* |
||||
|
* Excel Function: |
||||
|
* DVAR(database,field,criteria) |
||||
|
* |
||||
|
* @param mixed[] $database The range of cells that makes up the list or database. |
||||
|
* A database is a list of related data in which rows of related |
||||
|
* information are records, and columns of data are fields. The |
||||
|
* first row of the list contains labels for each column. |
||||
|
* @param int|string $field Indicates which column is used in the function. Enter the |
||||
|
* column label enclosed between double quotation marks, such as |
||||
|
* "Age" or "Yield," or a number (without quotation marks) that |
||||
|
* represents the position of the column within the list: 1 for |
||||
|
* the first column, 2 for the second column, and so on. |
||||
|
* @param mixed[] $criteria The range of cells that contains the conditions you specify. |
||||
|
* You can use any range for the criteria argument, as long as it |
||||
|
* includes at least one column label and at least one cell below |
||||
|
* the column label in which you specify a condition for the |
||||
|
* column. |
||||
|
* |
||||
|
* @return null|float|string (string if result is an error) |
||||
|
*/ |
||||
|
public static function evaluate($database, $field, $criteria) |
||||
|
{ |
||||
|
$field = self::fieldExtract($database, $field); |
||||
|
if ($field === null) { |
||||
|
return null; |
||||
|
} |
||||
|
|
||||
|
return Variances::VAR( |
||||
|
self::getFilteredColumn($database, $field, $criteria) |
||||
|
); |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,46 @@ |
|||||
|
<?php |
||||
|
|
||||
|
namespace PhpOffice\PhpSpreadsheet\Calculation\Database; |
||||
|
|
||||
|
use PhpOffice\PhpSpreadsheet\Calculation\Statistical\Variances; |
||||
|
|
||||
|
class DVarP extends DatabaseAbstract |
||||
|
{ |
||||
|
/** |
||||
|
* DVARP. |
||||
|
* |
||||
|
* Calculates the variance of a population based on the entire population by using the numbers |
||||
|
* in a column of a list or database that match conditions that you specify. |
||||
|
* |
||||
|
* Excel Function: |
||||
|
* DVARP(database,field,criteria) |
||||
|
* |
||||
|
* @param mixed[] $database The range of cells that makes up the list or database. |
||||
|
* A database is a list of related data in which rows of related |
||||
|
* information are records, and columns of data are fields. The |
||||
|
* first row of the list contains labels for each column. |
||||
|
* @param int|string $field Indicates which column is used in the function. Enter the |
||||
|
* column label enclosed between double quotation marks, such as |
||||
|
* "Age" or "Yield," or a number (without quotation marks) that |
||||
|
* represents the position of the column within the list: 1 for |
||||
|
* the first column, 2 for the second column, and so on. |
||||
|
* @param mixed[] $criteria The range of cells that contains the conditions you specify. |
||||
|
* You can use any range for the criteria argument, as long as it |
||||
|
* includes at least one column label and at least one cell below |
||||
|
* the column label in which you specify a condition for the |
||||
|
* column. |
||||
|
* |
||||
|
* @return null|float|string (string if result is an error) |
||||
|
*/ |
||||
|
public static function evaluate($database, $field, $criteria) |
||||
|
{ |
||||
|
$field = self::fieldExtract($database, $field); |
||||
|
if ($field === null) { |
||||
|
return null; |
||||
|
} |
||||
|
|
||||
|
return Variances::VARP( |
||||
|
self::getFilteredColumn($database, $field, $criteria) |
||||
|
); |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,306 @@ |
|||||
|
<?php |
||||
|
|
||||
|
namespace PhpOffice\PhpSpreadsheet\Calculation\DateTimeExcel; |
||||
|
|
||||
|
use DateTime; |
||||
|
use PhpOffice\PhpSpreadsheet\Calculation\Exception; |
||||
|
use PhpOffice\PhpSpreadsheet\Calculation\Functions; |
||||
|
use PhpOffice\PhpSpreadsheet\Shared\Date as SharedDateHelper; |
||||
|
|
||||
|
class Helpers |
||||
|
{ |
||||
|
/** |
||||
|
* Identify if a year is a leap year or not. |
||||
|
* |
||||
|
* @param int|string $year The year to test |
||||
|
* |
||||
|
* @return bool TRUE if the year is a leap year, otherwise FALSE |
||||
|
*/ |
||||
|
public static function isLeapYear($year): bool |
||||
|
{ |
||||
|
return (($year % 4) === 0) && (($year % 100) !== 0) || (($year % 400) === 0); |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* getDateValue. |
||||
|
* |
||||
|
* @param mixed $dateValue |
||||
|
* |
||||
|
* @return float Excel date/time serial value |
||||
|
*/ |
||||
|
public static function getDateValue($dateValue, bool $allowBool = true): float |
||||
|
{ |
||||
|
if (is_object($dateValue)) { |
||||
|
$retval = SharedDateHelper::PHPToExcel($dateValue); |
||||
|
if (is_bool($retval)) { |
||||
|
throw new Exception(Functions::VALUE()); |
||||
|
} |
||||
|
|
||||
|
return $retval; |
||||
|
} |
||||
|
|
||||
|
self::nullFalseTrueToNumber($dateValue, $allowBool); |
||||
|
if (!is_numeric($dateValue)) { |
||||
|
$saveReturnDateType = Functions::getReturnDateType(); |
||||
|
Functions::setReturnDateType(Functions::RETURNDATE_EXCEL); |
||||
|
$dateValue = DateValue::fromString($dateValue); |
||||
|
Functions::setReturnDateType($saveReturnDateType); |
||||
|
if (!is_numeric($dateValue)) { |
||||
|
throw new Exception(Functions::VALUE()); |
||||
|
} |
||||
|
} |
||||
|
if ($dateValue < 0 && Functions::getCompatibilityMode() !== Functions::COMPATIBILITY_OPENOFFICE) { |
||||
|
throw new Exception(Functions::NAN()); |
||||
|
} |
||||
|
|
||||
|
return (float) $dateValue; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* getTimeValue. |
||||
|
* |
||||
|
* @param string $timeValue |
||||
|
* |
||||
|
* @return mixed Excel date/time serial value, or string if error |
||||
|
*/ |
||||
|
public static function getTimeValue($timeValue) |
||||
|
{ |
||||
|
$saveReturnDateType = Functions::getReturnDateType(); |
||||
|
Functions::setReturnDateType(Functions::RETURNDATE_EXCEL); |
||||
|
$timeValue = TimeValue::fromString($timeValue); |
||||
|
Functions::setReturnDateType($saveReturnDateType); |
||||
|
|
||||
|
return $timeValue; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* Adjust date by given months. |
||||
|
* |
||||
|
* @param mixed $dateValue |
||||
|
*/ |
||||
|
public static function adjustDateByMonths($dateValue = 0, float $adjustmentMonths = 0): DateTime |
||||
|
{ |
||||
|
// Execute function |
||||
|
$PHPDateObject = SharedDateHelper::excelToDateTimeObject($dateValue); |
||||
|
$oMonth = (int) $PHPDateObject->format('m'); |
||||
|
$oYear = (int) $PHPDateObject->format('Y'); |
||||
|
|
||||
|
$adjustmentMonthsString = (string) $adjustmentMonths; |
||||
|
if ($adjustmentMonths > 0) { |
||||
|
$adjustmentMonthsString = '+' . $adjustmentMonths; |
||||
|
} |
||||
|
if ($adjustmentMonths != 0) { |
||||
|
$PHPDateObject->modify($adjustmentMonthsString . ' months'); |
||||
|
} |
||||
|
$nMonth = (int) $PHPDateObject->format('m'); |
||||
|
$nYear = (int) $PHPDateObject->format('Y'); |
||||
|
|
||||
|
$monthDiff = ($nMonth - $oMonth) + (($nYear - $oYear) * 12); |
||||
|
if ($monthDiff != $adjustmentMonths) { |
||||
|
$adjustDays = (int) $PHPDateObject->format('d'); |
||||
|
$adjustDaysString = '-' . $adjustDays . ' days'; |
||||
|
$PHPDateObject->modify($adjustDaysString); |
||||
|
} |
||||
|
|
||||
|
return $PHPDateObject; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* Help reduce perceived complexity of some tests. |
||||
|
* |
||||
|
* @param mixed $value |
||||
|
* @param mixed $altValue |
||||
|
*/ |
||||
|
public static function replaceIfEmpty(&$value, $altValue): void |
||||
|
{ |
||||
|
$value = $value ?: $altValue; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* Adjust year in ambiguous situations. |
||||
|
*/ |
||||
|
public static function adjustYear(string $testVal1, string $testVal2, string &$testVal3): void |
||||
|
{ |
||||
|
if (!is_numeric($testVal1) || $testVal1 < 31) { |
||||
|
if (!is_numeric($testVal2) || $testVal2 < 12) { |
||||
|
if (is_numeric($testVal3) && $testVal3 < 12) { |
||||
|
$testVal3 += 2000; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* Return result in one of three formats. |
||||
|
* |
||||
|
* @return mixed |
||||
|
*/ |
||||
|
public static function returnIn3FormatsArray(array $dateArray, bool $noFrac = false) |
||||
|
{ |
||||
|
$retType = Functions::getReturnDateType(); |
||||
|
if ($retType === Functions::RETURNDATE_PHP_DATETIME_OBJECT) { |
||||
|
return new DateTime( |
||||
|
$dateArray['year'] |
||||
|
. '-' . $dateArray['month'] |
||||
|
. '-' . $dateArray['day'] |
||||
|
. ' ' . $dateArray['hour'] |
||||
|
. ':' . $dateArray['minute'] |
||||
|
. ':' . $dateArray['second'] |
||||
|
); |
||||
|
} |
||||
|
$excelDateValue = |
||||
|
SharedDateHelper::formattedPHPToExcel( |
||||
|
$dateArray['year'], |
||||
|
$dateArray['month'], |
||||
|
$dateArray['day'], |
||||
|
$dateArray['hour'], |
||||
|
$dateArray['minute'], |
||||
|
$dateArray['second'] |
||||
|
); |
||||
|
if ($retType === Functions::RETURNDATE_EXCEL) { |
||||
|
return $noFrac ? floor($excelDateValue) : (float) $excelDateValue; |
||||
|
} |
||||
|
// RETURNDATE_UNIX_TIMESTAMP) |
||||
|
|
||||
|
return (int) SharedDateHelper::excelToTimestamp($excelDateValue); |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* Return result in one of three formats. |
||||
|
* |
||||
|
* @return mixed |
||||
|
*/ |
||||
|
public static function returnIn3FormatsFloat(float $excelDateValue) |
||||
|
{ |
||||
|
$retType = Functions::getReturnDateType(); |
||||
|
if ($retType === Functions::RETURNDATE_EXCEL) { |
||||
|
return $excelDateValue; |
||||
|
} |
||||
|
if ($retType === Functions::RETURNDATE_UNIX_TIMESTAMP) { |
||||
|
return (int) SharedDateHelper::excelToTimestamp($excelDateValue); |
||||
|
} |
||||
|
// RETURNDATE_PHP_DATETIME_OBJECT |
||||
|
|
||||
|
return SharedDateHelper::excelToDateTimeObject($excelDateValue); |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* Return result in one of three formats. |
||||
|
* |
||||
|
* @return mixed |
||||
|
*/ |
||||
|
public static function returnIn3FormatsObject(DateTime $PHPDateObject) |
||||
|
{ |
||||
|
$retType = Functions::getReturnDateType(); |
||||
|
if ($retType === Functions::RETURNDATE_PHP_DATETIME_OBJECT) { |
||||
|
return $PHPDateObject; |
||||
|
} |
||||
|
if ($retType === Functions::RETURNDATE_EXCEL) { |
||||
|
return (float) SharedDateHelper::PHPToExcel($PHPDateObject); |
||||
|
} |
||||
|
// RETURNDATE_UNIX_TIMESTAMP |
||||
|
$stamp = SharedDateHelper::PHPToExcel($PHPDateObject); |
||||
|
$stamp = is_bool($stamp) ? ((int) $stamp) : $stamp; |
||||
|
|
||||
|
return (int) SharedDateHelper::excelToTimestamp($stamp); |
||||
|
} |
||||
|
|
||||
|
private static function baseDate(): int |
||||
|
{ |
||||
|
if (Functions::getCompatibilityMode() === Functions::COMPATIBILITY_OPENOFFICE) { |
||||
|
return 0; |
||||
|
} |
||||
|
if (SharedDateHelper::getExcelCalendar() === SharedDateHelper::CALENDAR_MAC_1904) { |
||||
|
return 0; |
||||
|
} |
||||
|
|
||||
|
return 1; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* Many functions accept null/false/true argument treated as 0/0/1. |
||||
|
* |
||||
|
* @param mixed $number |
||||
|
*/ |
||||
|
public static function nullFalseTrueToNumber(&$number, bool $allowBool = true): void |
||||
|
{ |
||||
|
$number = Functions::flattenSingleValue($number); |
||||
|
$nullVal = self::baseDate(); |
||||
|
if ($number === null) { |
||||
|
$number = $nullVal; |
||||
|
} elseif ($allowBool && is_bool($number)) { |
||||
|
$number = $nullVal + (int) $number; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* Many functions accept null argument treated as 0. |
||||
|
* |
||||
|
* @param mixed $number |
||||
|
* |
||||
|
* @return float|int |
||||
|
*/ |
||||
|
public static function validateNumericNull($number) |
||||
|
{ |
||||
|
$number = Functions::flattenSingleValue($number); |
||||
|
if ($number === null) { |
||||
|
return 0; |
||||
|
} |
||||
|
if (is_int($number)) { |
||||
|
return $number; |
||||
|
} |
||||
|
if (is_numeric($number)) { |
||||
|
return (float) $number; |
||||
|
} |
||||
|
|
||||
|
throw new Exception(Functions::VALUE()); |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* Many functions accept null/false/true argument treated as 0/0/1. |
||||
|
* |
||||
|
* @param mixed $number |
||||
|
* |
||||
|
* @return float |
||||
|
*/ |
||||
|
public static function validateNotNegative($number) |
||||
|
{ |
||||
|
if (!is_numeric($number)) { |
||||
|
throw new Exception(Functions::VALUE()); |
||||
|
} |
||||
|
if ($number >= 0) { |
||||
|
return (float) $number; |
||||
|
} |
||||
|
|
||||
|
throw new Exception(Functions::NAN()); |
||||
|
} |
||||
|
|
||||
|
public static function silly1900(DateTime $PHPDateObject, string $mod = '-1 day'): void |
||||
|
{ |
||||
|
$isoDate = $PHPDateObject->format('c'); |
||||
|
if ($isoDate < '1900-03-01') { |
||||
|
$PHPDateObject->modify($mod); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
public static function dateParse(string $string): array |
||||
|
{ |
||||
|
return self::forceArray(date_parse($string)); |
||||
|
} |
||||
|
|
||||
|
public static function dateParseSucceeded(array $dateArray): bool |
||||
|
{ |
||||
|
return $dateArray['error_count'] === 0; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* Despite documentation, date_parse probably never returns false. |
||||
|
* Just in case, this routine helps guarantee it. |
||||
|
* |
||||
|
* @param array|false $dateArray |
||||
|
*/ |
||||
|
private static function forceArray($dateArray): array |
||||
|
{ |
||||
|
return is_array($dateArray) ? $dateArray : ['error_count' => 1]; |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,101 @@ |
|||||
|
<?php |
||||
|
|
||||
|
namespace PhpOffice\PhpSpreadsheet\Calculation\DateTimeExcel; |
||||
|
|
||||
|
use PhpOffice\PhpSpreadsheet\Calculation\ArrayEnabled; |
||||
|
use PhpOffice\PhpSpreadsheet\Calculation\Exception; |
||||
|
|
||||
|
class Month |
||||
|
{ |
||||
|
use ArrayEnabled; |
||||
|
|
||||
|
/** |
||||
|
* EDATE. |
||||
|
* |
||||
|
* Returns the serial number that represents the date that is the indicated number of months |
||||
|
* before or after a specified date (the start_date). |
||||
|
* Use EDATE to calculate maturity dates or due dates that fall on the same day of the month |
||||
|
* as the date of issue. |
||||
|
* |
||||
|
* Excel Function: |
||||
|
* EDATE(dateValue,adjustmentMonths) |
||||
|
* |
||||
|
* @param mixed $dateValue Excel date serial value (float), PHP date timestamp (integer), |
||||
|
* PHP DateTime object, or a standard date string |
||||
|
* Or can be an array of date values |
||||
|
* @param array|int $adjustmentMonths The number of months before or after start_date. |
||||
|
* A positive value for months yields a future date; |
||||
|
* a negative value yields a past date. |
||||
|
* Or can be an array of adjustment values |
||||
|
* |
||||
|
* @return array|mixed Excel date/time serial value, PHP date/time serial value or PHP date/time object, |
||||
|
* depending on the value of the ReturnDateType flag |
||||
|
* If an array of values is passed as the argument, then the returned result will also be an array |
||||
|
* with the same dimensions |
||||
|
*/ |
||||
|
public static function adjust($dateValue, $adjustmentMonths) |
||||
|
{ |
||||
|
if (is_array($dateValue) || is_array($adjustmentMonths)) { |
||||
|
return self::evaluateArrayArguments([self::class, __FUNCTION__], $dateValue, $adjustmentMonths); |
||||
|
} |
||||
|
|
||||
|
try { |
||||
|
$dateValue = Helpers::getDateValue($dateValue, false); |
||||
|
$adjustmentMonths = Helpers::validateNumericNull($adjustmentMonths); |
||||
|
} catch (Exception $e) { |
||||
|
return $e->getMessage(); |
||||
|
} |
||||
|
$adjustmentMonths = floor($adjustmentMonths); |
||||
|
|
||||
|
// Execute function |
||||
|
$PHPDateObject = Helpers::adjustDateByMonths($dateValue, $adjustmentMonths); |
||||
|
|
||||
|
return Helpers::returnIn3FormatsObject($PHPDateObject); |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* EOMONTH. |
||||
|
* |
||||
|
* Returns the date value for the last day of the month that is the indicated number of months |
||||
|
* before or after start_date. |
||||
|
* Use EOMONTH to calculate maturity dates or due dates that fall on the last day of the month. |
||||
|
* |
||||
|
* Excel Function: |
||||
|
* EOMONTH(dateValue,adjustmentMonths) |
||||
|
* |
||||
|
* @param mixed $dateValue Excel date serial value (float), PHP date timestamp (integer), |
||||
|
* PHP DateTime object, or a standard date string |
||||
|
* Or can be an array of date values |
||||
|
* @param array|int $adjustmentMonths The number of months before or after start_date. |
||||
|
* A positive value for months yields a future date; |
||||
|
* a negative value yields a past date. |
||||
|
* Or can be an array of adjustment values |
||||
|
* |
||||
|
* @return array|mixed Excel date/time serial value, PHP date/time serial value or PHP date/time object, |
||||
|
* depending on the value of the ReturnDateType flag |
||||
|
* If an array of values is passed as the argument, then the returned result will also be an array |
||||
|
* with the same dimensions |
||||
|
*/ |
||||
|
public static function lastDay($dateValue, $adjustmentMonths) |
||||
|
{ |
||||
|
if (is_array($dateValue) || is_array($adjustmentMonths)) { |
||||
|
return self::evaluateArrayArguments([self::class, __FUNCTION__], $dateValue, $adjustmentMonths); |
||||
|
} |
||||
|
|
||||
|
try { |
||||
|
$dateValue = Helpers::getDateValue($dateValue, false); |
||||
|
$adjustmentMonths = Helpers::validateNumericNull($adjustmentMonths); |
||||
|
} catch (Exception $e) { |
||||
|
return $e->getMessage(); |
||||
|
} |
||||
|
$adjustmentMonths = floor($adjustmentMonths); |
||||
|
|
||||
|
// Execute function |
||||
|
$PHPDateObject = Helpers::adjustDateByMonths($dateValue, $adjustmentMonths + 1); |
||||
|
$adjustDays = (int) $PHPDateObject->format('d'); |
||||
|
$adjustDaysString = '-' . $adjustDays . ' days'; |
||||
|
$PHPDateObject->modify($adjustDaysString); |
||||
|
|
||||
|
return Helpers::returnIn3FormatsObject($PHPDateObject); |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,119 @@ |
|||||
|
<?php |
||||
|
|
||||
|
namespace PhpOffice\PhpSpreadsheet\Calculation\DateTimeExcel; |
||||
|
|
||||
|
use PhpOffice\PhpSpreadsheet\Calculation\ArrayEnabled; |
||||
|
use PhpOffice\PhpSpreadsheet\Calculation\Exception; |
||||
|
use PhpOffice\PhpSpreadsheet\Calculation\Functions; |
||||
|
|
||||
|
class NetworkDays |
||||
|
{ |
||||
|
use ArrayEnabled; |
||||
|
|
||||
|
/** |
||||
|
* NETWORKDAYS. |
||||
|
* |
||||
|
* Returns the number of whole working days between start_date and end_date. Working days |
||||
|
* exclude weekends and any dates identified in holidays. |
||||
|
* Use NETWORKDAYS to calculate employee benefits that accrue based on the number of days |
||||
|
* worked during a specific term. |
||||
|
* |
||||
|
* Excel Function: |
||||
|
* NETWORKDAYS(startDate,endDate[,holidays[,holiday[,...]]]) |
||||
|
* |
||||
|
* @param mixed $startDate Excel date serial value (float), PHP date timestamp (integer), |
||||
|
* PHP DateTime object, or a standard date string |
||||
|
* Or can be an array of date values |
||||
|
* @param mixed $endDate Excel date serial value (float), PHP date timestamp (integer), |
||||
|
* PHP DateTime object, or a standard date string |
||||
|
* Or can be an array of date values |
||||
|
* @param mixed $dateArgs An array of dates (such as holidays) to exclude from the calculation |
||||
|
* |
||||
|
* @return array|int|string Interval between the dates |
||||
|
* If an array of values is passed for the $startDate or $endDate arguments, then the returned result |
||||
|
* will also be an array with matching dimensions |
||||
|
*/ |
||||
|
public static function count($startDate, $endDate, ...$dateArgs) |
||||
|
{ |
||||
|
if (is_array($startDate) || is_array($endDate)) { |
||||
|
return self::evaluateArrayArgumentsSubset( |
||||
|
[self::class, __FUNCTION__], |
||||
|
2, |
||||
|
$startDate, |
||||
|
$endDate, |
||||
|
...$dateArgs |
||||
|
); |
||||
|
} |
||||
|
|
||||
|
try { |
||||
|
// Retrieve the mandatory start and end date that are referenced in the function definition |
||||
|
$sDate = Helpers::getDateValue($startDate); |
||||
|
$eDate = Helpers::getDateValue($endDate); |
||||
|
$startDate = min($sDate, $eDate); |
||||
|
$endDate = max($sDate, $eDate); |
||||
|
// Get the optional days |
||||
|
$dateArgs = Functions::flattenArray($dateArgs); |
||||
|
// Test any extra holiday parameters |
||||
|
$holidayArray = []; |
||||
|
foreach ($dateArgs as $holidayDate) { |
||||
|
$holidayArray[] = Helpers::getDateValue($holidayDate); |
||||
|
} |
||||
|
} catch (Exception $e) { |
||||
|
return $e->getMessage(); |
||||
|
} |
||||
|
|
||||
|
// Execute function |
||||
|
$startDow = self::calcStartDow($startDate); |
||||
|
$endDow = self::calcEndDow($endDate); |
||||
|
$wholeWeekDays = (int) floor(($endDate - $startDate) / 7) * 5; |
||||
|
$partWeekDays = self::calcPartWeekDays($startDow, $endDow); |
||||
|
|
||||
|
// Test any extra holiday parameters |
||||
|
$holidayCountedArray = []; |
||||
|
foreach ($holidayArray as $holidayDate) { |
||||
|
if (($holidayDate >= $startDate) && ($holidayDate <= $endDate)) { |
||||
|
if ((Week::day($holidayDate, 2) < 6) && (!in_array($holidayDate, $holidayCountedArray))) { |
||||
|
--$partWeekDays; |
||||
|
$holidayCountedArray[] = $holidayDate; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
return self::applySign($wholeWeekDays + $partWeekDays, $sDate, $eDate); |
||||
|
} |
||||
|
|
||||
|
private static function calcStartDow(float $startDate): int |
||||
|
{ |
||||
|
$startDow = 6 - (int) Week::day($startDate, 2); |
||||
|
if ($startDow < 0) { |
||||
|
$startDow = 5; |
||||
|
} |
||||
|
|
||||
|
return $startDow; |
||||
|
} |
||||
|
|
||||
|
private static function calcEndDow(float $endDate): int |
||||
|
{ |
||||
|
$endDow = (int) Week::day($endDate, 2); |
||||
|
if ($endDow >= 6) { |
||||
|
$endDow = 0; |
||||
|
} |
||||
|
|
||||
|
return $endDow; |
||||
|
} |
||||
|
|
||||
|
private static function calcPartWeekDays(int $startDow, int $endDow): int |
||||
|
{ |
||||
|
$partWeekDays = $endDow + $startDow; |
||||
|
if ($partWeekDays > 5) { |
||||
|
$partWeekDays -= 5; |
||||
|
} |
||||
|
|
||||
|
return $partWeekDays; |
||||
|
} |
||||
|
|
||||
|
private static function applySign(int $result, float $sDate, float $eDate): int |
||||
|
{ |
||||
|
return ($sDate > $eDate) ? -$result : $result; |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,140 @@ |
|||||
|
<?php |
||||
|
|
||||
|
namespace PhpOffice\PhpSpreadsheet\Calculation\Engine; |
||||
|
|
||||
|
class Logger |
||||
|
{ |
||||
|
/** |
||||
|
* Flag to determine whether a debug log should be generated by the calculation engine |
||||
|
* If true, then a debug log will be generated |
||||
|
* If false, then a debug log will not be generated. |
||||
|
* |
||||
|
* @var bool |
||||
|
*/ |
||||
|
private $writeDebugLog = false; |
||||
|
|
||||
|
/** |
||||
|
* Flag to determine whether a debug log should be echoed by the calculation engine |
||||
|
* If true, then a debug log will be echoed |
||||
|
* If false, then a debug log will not be echoed |
||||
|
* A debug log can only be echoed if it is generated. |
||||
|
* |
||||
|
* @var bool |
||||
|
*/ |
||||
|
private $echoDebugLog = false; |
||||
|
|
||||
|
/** |
||||
|
* The debug log generated by the calculation engine. |
||||
|
* |
||||
|
* @var string[] |
||||
|
*/ |
||||
|
private $debugLog = []; |
||||
|
|
||||
|
/** |
||||
|
* The calculation engine cell reference stack. |
||||
|
* |
||||
|
* @var CyclicReferenceStack |
||||
|
*/ |
||||
|
private $cellStack; |
||||
|
|
||||
|
/** |
||||
|
* Instantiate a Calculation engine logger. |
||||
|
*/ |
||||
|
public function __construct(CyclicReferenceStack $stack) |
||||
|
{ |
||||
|
$this->cellStack = $stack; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* Enable/Disable Calculation engine logging. |
||||
|
* |
||||
|
* @param bool $writeDebugLog |
||||
|
*/ |
||||
|
public function setWriteDebugLog($writeDebugLog): void |
||||
|
{ |
||||
|
$this->writeDebugLog = $writeDebugLog; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* Return whether calculation engine logging is enabled or disabled. |
||||
|
* |
||||
|
* @return bool |
||||
|
*/ |
||||
|
public function getWriteDebugLog() |
||||
|
{ |
||||
|
return $this->writeDebugLog; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* Enable/Disable echoing of debug log information. |
||||
|
* |
||||
|
* @param bool $echoDebugLog |
||||
|
*/ |
||||
|
public function setEchoDebugLog($echoDebugLog): void |
||||
|
{ |
||||
|
$this->echoDebugLog = $echoDebugLog; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* Return whether echoing of debug log information is enabled or disabled. |
||||
|
* |
||||
|
* @return bool |
||||
|
*/ |
||||
|
public function getEchoDebugLog() |
||||
|
{ |
||||
|
return $this->echoDebugLog; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* Write an entry to the calculation engine debug log. |
||||
|
*/ |
||||
|
public function writeDebugLog(...$args): void |
||||
|
{ |
||||
|
// Only write the debug log if logging is enabled |
||||
|
if ($this->writeDebugLog) { |
||||
|
$message = implode('', $args); |
||||
|
$cellReference = implode(' -> ', $this->cellStack->showStack()); |
||||
|
if ($this->echoDebugLog) { |
||||
|
echo $cellReference, |
||||
|
($this->cellStack->count() > 0 ? ' => ' : ''), |
||||
|
$message, |
||||
|
PHP_EOL; |
||||
|
} |
||||
|
$this->debugLog[] = $cellReference . |
||||
|
($this->cellStack->count() > 0 ? ' => ' : '') . |
||||
|
$message; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* Write a series of entries to the calculation engine debug log. |
||||
|
* |
||||
|
* @param string[] $args |
||||
|
*/ |
||||
|
public function mergeDebugLog(array $args): void |
||||
|
{ |
||||
|
if ($this->writeDebugLog) { |
||||
|
foreach ($args as $entry) { |
||||
|
$this->writeDebugLog($entry); |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* Clear the calculation engine debug log. |
||||
|
*/ |
||||
|
public function clearLog(): void |
||||
|
{ |
||||
|
$this->debugLog = []; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* Return the calculation engine debug log. |
||||
|
* |
||||
|
* @return string[] |
||||
|
*/ |
||||
|
public function getLog() |
||||
|
{ |
||||
|
return $this->debugLog; |
||||
|
} |
||||
|
} |
||||
File diff suppressed because it is too large
@ -0,0 +1,33 @@ |
|||||
|
<?php |
||||
|
|
||||
|
namespace PhpOffice\PhpSpreadsheet\Calculation\Engineering; |
||||
|
|
||||
|
use PhpOffice\PhpSpreadsheet\Calculation\Exception; |
||||
|
use PhpOffice\PhpSpreadsheet\Calculation\Functions; |
||||
|
|
||||
|
class EngineeringValidations |
||||
|
{ |
||||
|
/** |
||||
|
* @param mixed $value |
||||
|
*/ |
||||
|
public static function validateFloat($value): float |
||||
|
{ |
||||
|
if (!is_numeric($value)) { |
||||
|
throw new Exception(Functions::VALUE()); |
||||
|
} |
||||
|
|
||||
|
return (float) $value; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* @param mixed $value |
||||
|
*/ |
||||
|
public static function validateInt($value): int |
||||
|
{ |
||||
|
if (!is_numeric($value)) { |
||||
|
throw new Exception(Functions::VALUE()); |
||||
|
} |
||||
|
|
||||
|
return (int) floor((float) $value); |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,104 @@ |
|||||
|
<?php |
||||
|
|
||||
|
namespace PhpOffice\PhpSpreadsheet\Calculation\Engineering; |
||||
|
|
||||
|
use PhpOffice\PhpSpreadsheet\Calculation\ArrayEnabled; |
||||
|
use PhpOffice\PhpSpreadsheet\Calculation\Functions; |
||||
|
|
||||
|
class Erf |
||||
|
{ |
||||
|
use ArrayEnabled; |
||||
|
|
||||
|
private static $twoSqrtPi = 1.128379167095512574; |
||||
|
|
||||
|
/** |
||||
|
* ERF. |
||||
|
* |
||||
|
* Returns the error function integrated between the lower and upper bound arguments. |
||||
|
* |
||||
|
* Note: In Excel 2007 or earlier, if you input a negative value for the upper or lower bound arguments, |
||||
|
* the function would return a #NUM! error. However, in Excel 2010, the function algorithm was |
||||
|
* improved, so that it can now calculate the function for both positive and negative ranges. |
||||
|
* PhpSpreadsheet follows Excel 2010 behaviour, and accepts negative arguments. |
||||
|
* |
||||
|
* Excel Function: |
||||
|
* ERF(lower[,upper]) |
||||
|
* |
||||
|
* @param mixed $lower Lower bound float for integrating ERF |
||||
|
* Or can be an array of values |
||||
|
* @param mixed $upper Upper bound float for integrating ERF. |
||||
|
* If omitted, ERF integrates between zero and lower_limit |
||||
|
* Or can be an array of values |
||||
|
* |
||||
|
* @return array|float|string |
||||
|
* If an array of numbers is passed as an argument, then the returned result will also be an array |
||||
|
* with the same dimensions |
||||
|
*/ |
||||
|
public static function ERF($lower, $upper = null) |
||||
|
{ |
||||
|
if (is_array($lower) || is_array($upper)) { |
||||
|
return self::evaluateArrayArguments([self::class, __FUNCTION__], $lower, $upper); |
||||
|
} |
||||
|
|
||||
|
if (is_numeric($lower)) { |
||||
|
if ($upper === null) { |
||||
|
return self::erfValue($lower); |
||||
|
} |
||||
|
if (is_numeric($upper)) { |
||||
|
return self::erfValue($upper) - self::erfValue($lower); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
return Functions::VALUE(); |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* ERFPRECISE. |
||||
|
* |
||||
|
* Returns the error function integrated between the lower and upper bound arguments. |
||||
|
* |
||||
|
* Excel Function: |
||||
|
* ERF.PRECISE(limit) |
||||
|
* |
||||
|
* @param mixed $limit Float bound for integrating ERF, other bound is zero |
||||
|
* Or can be an array of values |
||||
|
* |
||||
|
* @return array|float|string |
||||
|
* If an array of numbers is passed as an argument, then the returned result will also be an array |
||||
|
* with the same dimensions |
||||
|
*/ |
||||
|
public static function ERFPRECISE($limit) |
||||
|
{ |
||||
|
if (is_array($limit)) { |
||||
|
return self::evaluateSingleArgumentArray([self::class, __FUNCTION__], $limit); |
||||
|
} |
||||
|
|
||||
|
return self::ERF($limit); |
||||
|
} |
||||
|
|
||||
|
// |
||||
|
// Private method to calculate the erf value |
||||
|
// |
||||
|
public static function erfValue($value) |
||||
|
{ |
||||
|
if (abs($value) > 2.2) { |
||||
|
return 1 - ErfC::ERFC($value); |
||||
|
} |
||||
|
$sum = $term = $value; |
||||
|
$xsqr = ($value * $value); |
||||
|
$j = 1; |
||||
|
do { |
||||
|
$term *= $xsqr / $j; |
||||
|
$sum -= $term / (2 * $j + 1); |
||||
|
++$j; |
||||
|
$term *= $xsqr / $j; |
||||
|
$sum += $term / (2 * $j + 1); |
||||
|
++$j; |
||||
|
if ($sum == 0.0) { |
||||
|
break; |
||||
|
} |
||||
|
} while (abs($term / $sum) > Functions::PRECISION); |
||||
|
|
||||
|
return self::$twoSqrtPi * $sum; |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,76 @@ |
|||||
|
<?php |
||||
|
|
||||
|
namespace PhpOffice\PhpSpreadsheet\Calculation\Engineering; |
||||
|
|
||||
|
use PhpOffice\PhpSpreadsheet\Calculation\ArrayEnabled; |
||||
|
use PhpOffice\PhpSpreadsheet\Calculation\Functions; |
||||
|
|
||||
|
class ErfC |
||||
|
{ |
||||
|
use ArrayEnabled; |
||||
|
|
||||
|
/** |
||||
|
* ERFC. |
||||
|
* |
||||
|
* Returns the complementary ERF function integrated between x and infinity |
||||
|
* |
||||
|
* Note: In Excel 2007 or earlier, if you input a negative value for the lower bound argument, |
||||
|
* the function would return a #NUM! error. However, in Excel 2010, the function algorithm was |
||||
|
* improved, so that it can now calculate the function for both positive and negative x values. |
||||
|
* PhpSpreadsheet follows Excel 2010 behaviour, and accepts nagative arguments. |
||||
|
* |
||||
|
* Excel Function: |
||||
|
* ERFC(x) |
||||
|
* |
||||
|
* @param mixed $value The float lower bound for integrating ERFC |
||||
|
* Or can be an array of values |
||||
|
* |
||||
|
* @return array|float|string |
||||
|
* If an array of numbers is passed as an argument, then the returned result will also be an array |
||||
|
* with the same dimensions |
||||
|
*/ |
||||
|
public static function ERFC($value) |
||||
|
{ |
||||
|
if (is_array($value)) { |
||||
|
return self::evaluateSingleArgumentArray([self::class, __FUNCTION__], $value); |
||||
|
} |
||||
|
|
||||
|
if (is_numeric($value)) { |
||||
|
return self::erfcValue($value); |
||||
|
} |
||||
|
|
||||
|
return Functions::VALUE(); |
||||
|
} |
||||
|
|
||||
|
// |
||||
|
// Private method to calculate the erfc value |
||||
|
// |
||||
|
private static $oneSqrtPi = 0.564189583547756287; |
||||
|
|
||||
|
private static function erfcValue($value) |
||||
|
{ |
||||
|
if (abs($value) < 2.2) { |
||||
|
return 1 - Erf::erfValue($value); |
||||
|
} |
||||
|
if ($value < 0) { |
||||
|
return 2 - self::erfcValue(-$value); |
||||
|
} |
||||
|
$a = $n = 1; |
||||
|
$b = $c = $value; |
||||
|
$d = ($value * $value) + 0.5; |
||||
|
$q1 = $q2 = $b / $d; |
||||
|
do { |
||||
|
$t = $a * $n + $b * $value; |
||||
|
$a = $b; |
||||
|
$b = $t; |
||||
|
$t = $c * $n + $d * $value; |
||||
|
$c = $d; |
||||
|
$d = $t; |
||||
|
$n += 0.5; |
||||
|
$q1 = $q2; |
||||
|
$q2 = $b / $d; |
||||
|
} while ((abs($q1 - $q2) / $q2) > Functions::PRECISION); |
||||
|
|
||||
|
return self::$oneSqrtPi * exp(-$value * $value) * $q2; |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,26 @@ |
|||||
|
<?php |
||||
|
|
||||
|
namespace PhpOffice\PhpSpreadsheet\Calculation; |
||||
|
|
||||
|
use PhpOffice\PhpSpreadsheet\Exception as PhpSpreadsheetException; |
||||
|
|
||||
|
class Exception extends PhpSpreadsheetException |
||||
|
{ |
||||
|
/** |
||||
|
* Error handler callback. |
||||
|
* |
||||
|
* @param mixed $code |
||||
|
* @param mixed $string |
||||
|
* @param mixed $file |
||||
|
* @param mixed $line |
||||
|
* @param mixed $context |
||||
|
*/ |
||||
|
public static function errorHandlerCallback($code, $string, $file, $line, $context): void |
||||
|
{ |
||||
|
$e = new self($string, $code); |
||||
|
$e->line = $line; |
||||
|
$e->file = $file; |
||||
|
|
||||
|
throw $e; |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,22 @@ |
|||||
|
<?php |
||||
|
|
||||
|
namespace PhpOffice\PhpSpreadsheet\Calculation; |
||||
|
|
||||
|
class ExceptionHandler |
||||
|
{ |
||||
|
/** |
||||
|
* Register errorhandler. |
||||
|
*/ |
||||
|
public function __construct() |
||||
|
{ |
||||
|
set_error_handler([Exception::class, 'errorHandlerCallback'], E_ALL); |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* Unregister errorhandler. |
||||
|
*/ |
||||
|
public function __destruct() |
||||
|
{ |
||||
|
restore_error_handler(); |
||||
|
} |
||||
|
} |
||||
File diff suppressed because it is too large
@ -0,0 +1,199 @@ |
|||||
|
<?php |
||||
|
|
||||
|
namespace PhpOffice\PhpSpreadsheet\Calculation\Financial\CashFlow\Constant; |
||||
|
|
||||
|
use PhpOffice\PhpSpreadsheet\Calculation\Exception; |
||||
|
use PhpOffice\PhpSpreadsheet\Calculation\Financial\CashFlow\CashFlowValidations; |
||||
|
use PhpOffice\PhpSpreadsheet\Calculation\Financial\Constants as FinancialConstants; |
||||
|
use PhpOffice\PhpSpreadsheet\Calculation\Functions; |
||||
|
|
||||
|
class Periodic |
||||
|
{ |
||||
|
/** |
||||
|
* FV. |
||||
|
* |
||||
|
* Returns the Future Value of a cash flow with constant payments and interest rate (annuities). |
||||
|
* |
||||
|
* Excel Function: |
||||
|
* FV(rate,nper,pmt[,pv[,type]]) |
||||
|
* |
||||
|
* @param mixed $rate The interest rate per period |
||||
|
* @param mixed $numberOfPeriods Total number of payment periods in an annuity as an integer |
||||
|
* @param mixed $payment The payment made each period: it cannot change over the |
||||
|
* life of the annuity. Typically, pmt contains principal |
||||
|
* and interest but no other fees or taxes. |
||||
|
* @param mixed $presentValue present Value, or the lump-sum amount that a series of |
||||
|
* future payments is worth right now |
||||
|
* @param mixed $type A number 0 or 1 and indicates when payments are due: |
||||
|
* 0 or omitted At the end of the period. |
||||
|
* 1 At the beginning of the period. |
||||
|
* |
||||
|
* @return float|string |
||||
|
*/ |
||||
|
public static function futureValue( |
||||
|
$rate, |
||||
|
$numberOfPeriods, |
||||
|
$payment = 0.0, |
||||
|
$presentValue = 0.0, |
||||
|
$type = FinancialConstants::PAYMENT_END_OF_PERIOD |
||||
|
) { |
||||
|
$rate = Functions::flattenSingleValue($rate); |
||||
|
$numberOfPeriods = Functions::flattenSingleValue($numberOfPeriods); |
||||
|
$payment = ($payment === null) ? 0.0 : Functions::flattenSingleValue($payment); |
||||
|
$presentValue = ($presentValue === null) ? 0.0 : Functions::flattenSingleValue($presentValue); |
||||
|
$type = ($type === null) ? FinancialConstants::PAYMENT_END_OF_PERIOD : Functions::flattenSingleValue($type); |
||||
|
|
||||
|
try { |
||||
|
$rate = CashFlowValidations::validateRate($rate); |
||||
|
$numberOfPeriods = CashFlowValidations::validateInt($numberOfPeriods); |
||||
|
$payment = CashFlowValidations::validateFloat($payment); |
||||
|
$presentValue = CashFlowValidations::validatePresentValue($presentValue); |
||||
|
$type = CashFlowValidations::validatePeriodType($type); |
||||
|
} catch (Exception $e) { |
||||
|
return $e->getMessage(); |
||||
|
} |
||||
|
|
||||
|
return self::calculateFutureValue($rate, $numberOfPeriods, $payment, $presentValue, $type); |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* PV. |
||||
|
* |
||||
|
* Returns the Present Value of a cash flow with constant payments and interest rate (annuities). |
||||
|
* |
||||
|
* @param mixed $rate Interest rate per period |
||||
|
* @param mixed $numberOfPeriods Number of periods as an integer |
||||
|
* @param mixed $payment Periodic payment (annuity) |
||||
|
* @param mixed $futureValue Future Value |
||||
|
* @param mixed $type Payment type: 0 = at the end of each period, 1 = at the beginning of each period |
||||
|
* |
||||
|
* @return float|string Result, or a string containing an error |
||||
|
*/ |
||||
|
public static function presentValue( |
||||
|
$rate, |
||||
|
$numberOfPeriods, |
||||
|
$payment = 0.0, |
||||
|
$futureValue = 0.0, |
||||
|
$type = FinancialConstants::PAYMENT_END_OF_PERIOD |
||||
|
) { |
||||
|
$rate = Functions::flattenSingleValue($rate); |
||||
|
$numberOfPeriods = Functions::flattenSingleValue($numberOfPeriods); |
||||
|
$payment = ($payment === null) ? 0.0 : Functions::flattenSingleValue($payment); |
||||
|
$futureValue = ($futureValue === null) ? 0.0 : Functions::flattenSingleValue($futureValue); |
||||
|
$type = ($type === null) ? FinancialConstants::PAYMENT_END_OF_PERIOD : Functions::flattenSingleValue($type); |
||||
|
|
||||
|
try { |
||||
|
$rate = CashFlowValidations::validateRate($rate); |
||||
|
$numberOfPeriods = CashFlowValidations::validateInt($numberOfPeriods); |
||||
|
$payment = CashFlowValidations::validateFloat($payment); |
||||
|
$futureValue = CashFlowValidations::validateFutureValue($futureValue); |
||||
|
$type = CashFlowValidations::validatePeriodType($type); |
||||
|
} catch (Exception $e) { |
||||
|
return $e->getMessage(); |
||||
|
} |
||||
|
|
||||
|
// Validate parameters |
||||
|
if ($numberOfPeriods < 0) { |
||||
|
return Functions::NAN(); |
||||
|
} |
||||
|
|
||||
|
return self::calculatePresentValue($rate, $numberOfPeriods, $payment, $futureValue, $type); |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* NPER. |
||||
|
* |
||||
|
* Returns the number of periods for a cash flow with constant periodic payments (annuities), and interest rate. |
||||
|
* |
||||
|
* @param mixed $rate Interest rate per period |
||||
|
* @param mixed $payment Periodic payment (annuity) |
||||
|
* @param mixed $presentValue Present Value |
||||
|
* @param mixed $futureValue Future Value |
||||
|
* @param mixed $type Payment type: 0 = at the end of each period, 1 = at the beginning of each period |
||||
|
* |
||||
|
* @return float|string Result, or a string containing an error |
||||
|
*/ |
||||
|
public static function periods( |
||||
|
$rate, |
||||
|
$payment, |
||||
|
$presentValue, |
||||
|
$futureValue = 0.0, |
||||
|
$type = FinancialConstants::PAYMENT_END_OF_PERIOD |
||||
|
) { |
||||
|
$rate = Functions::flattenSingleValue($rate); |
||||
|
$payment = Functions::flattenSingleValue($payment); |
||||
|
$presentValue = Functions::flattenSingleValue($presentValue); |
||||
|
$futureValue = ($futureValue === null) ? 0.0 : Functions::flattenSingleValue($futureValue); |
||||
|
$type = ($type === null) ? FinancialConstants::PAYMENT_END_OF_PERIOD : Functions::flattenSingleValue($type); |
||||
|
|
||||
|
try { |
||||
|
$rate = CashFlowValidations::validateRate($rate); |
||||
|
$payment = CashFlowValidations::validateFloat($payment); |
||||
|
$presentValue = CashFlowValidations::validatePresentValue($presentValue); |
||||
|
$futureValue = CashFlowValidations::validateFutureValue($futureValue); |
||||
|
$type = CashFlowValidations::validatePeriodType($type); |
||||
|
} catch (Exception $e) { |
||||
|
return $e->getMessage(); |
||||
|
} |
||||
|
|
||||
|
// Validate parameters |
||||
|
if ($payment == 0.0) { |
||||
|
return Functions::NAN(); |
||||
|
} |
||||
|
|
||||
|
return self::calculatePeriods($rate, $payment, $presentValue, $futureValue, $type); |
||||
|
} |
||||
|
|
||||
|
private static function calculateFutureValue( |
||||
|
float $rate, |
||||
|
int $numberOfPeriods, |
||||
|
float $payment, |
||||
|
float $presentValue, |
||||
|
int $type |
||||
|
): float { |
||||
|
if ($rate !== null && $rate != 0) { |
||||
|
return -$presentValue * |
||||
|
(1 + $rate) ** $numberOfPeriods - $payment * (1 + $rate * $type) * ((1 + $rate) ** $numberOfPeriods - 1) |
||||
|
/ $rate; |
||||
|
} |
||||
|
|
||||
|
return -$presentValue - $payment * $numberOfPeriods; |
||||
|
} |
||||
|
|
||||
|
private static function calculatePresentValue( |
||||
|
float $rate, |
||||
|
int $numberOfPeriods, |
||||
|
float $payment, |
||||
|
float $futureValue, |
||||
|
int $type |
||||
|
): float { |
||||
|
if ($rate != 0.0) { |
||||
|
return (-$payment * (1 + $rate * $type) |
||||
|
* (((1 + $rate) ** $numberOfPeriods - 1) / $rate) - $futureValue) / (1 + $rate) ** $numberOfPeriods; |
||||
|
} |
||||
|
|
||||
|
return -$futureValue - $payment * $numberOfPeriods; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* @return float|string |
||||
|
*/ |
||||
|
private static function calculatePeriods( |
||||
|
float $rate, |
||||
|
float $payment, |
||||
|
float $presentValue, |
||||
|
float $futureValue, |
||||
|
int $type |
||||
|
) { |
||||
|
if ($rate != 0.0) { |
||||
|
if ($presentValue == 0.0) { |
||||
|
return Functions::NAN(); |
||||
|
} |
||||
|
|
||||
|
return log(($payment * (1 + $rate * $type) / $rate - $futureValue) / |
||||
|
($presentValue + $payment * (1 + $rate * $type) / $rate)) / log(1 + $rate); |
||||
|
} |
||||
|
|
||||
|
return (-$presentValue - $futureValue) / $payment; |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,216 @@ |
|||||
|
<?php |
||||
|
|
||||
|
namespace PhpOffice\PhpSpreadsheet\Calculation\Financial\CashFlow\Constant\Periodic; |
||||
|
|
||||
|
use PhpOffice\PhpSpreadsheet\Calculation\Exception; |
||||
|
use PhpOffice\PhpSpreadsheet\Calculation\Financial\CashFlow\CashFlowValidations; |
||||
|
use PhpOffice\PhpSpreadsheet\Calculation\Financial\Constants as FinancialConstants; |
||||
|
use PhpOffice\PhpSpreadsheet\Calculation\Functions; |
||||
|
|
||||
|
class Interest |
||||
|
{ |
||||
|
private const FINANCIAL_MAX_ITERATIONS = 128; |
||||
|
|
||||
|
private const FINANCIAL_PRECISION = 1.0e-08; |
||||
|
|
||||
|
/** |
||||
|
* IPMT. |
||||
|
* |
||||
|
* Returns the interest payment for a given period for an investment based on periodic, constant payments |
||||
|
* and a constant interest rate. |
||||
|
* |
||||
|
* Excel Function: |
||||
|
* IPMT(rate,per,nper,pv[,fv][,type]) |
||||
|
* |
||||
|
* @param mixed $interestRate Interest rate per period |
||||
|
* @param mixed $period Period for which we want to find the interest |
||||
|
* @param mixed $numberOfPeriods Number of periods |
||||
|
* @param mixed $presentValue Present Value |
||||
|
* @param mixed $futureValue Future Value |
||||
|
* @param mixed $type Payment type: 0 = at the end of each period, 1 = at the beginning of each period |
||||
|
* |
||||
|
* @return float|string |
||||
|
*/ |
||||
|
public static function payment( |
||||
|
$interestRate, |
||||
|
$period, |
||||
|
$numberOfPeriods, |
||||
|
$presentValue, |
||||
|
$futureValue = 0, |
||||
|
$type = FinancialConstants::PAYMENT_END_OF_PERIOD |
||||
|
) { |
||||
|
$interestRate = Functions::flattenSingleValue($interestRate); |
||||
|
$period = Functions::flattenSingleValue($period); |
||||
|
$numberOfPeriods = Functions::flattenSingleValue($numberOfPeriods); |
||||
|
$presentValue = Functions::flattenSingleValue($presentValue); |
||||
|
$futureValue = ($futureValue === null) ? 0.0 : Functions::flattenSingleValue($futureValue); |
||||
|
$type = ($type === null) ? FinancialConstants::PAYMENT_END_OF_PERIOD : Functions::flattenSingleValue($type); |
||||
|
|
||||
|
try { |
||||
|
$interestRate = CashFlowValidations::validateRate($interestRate); |
||||
|
$period = CashFlowValidations::validateInt($period); |
||||
|
$numberOfPeriods = CashFlowValidations::validateInt($numberOfPeriods); |
||||
|
$presentValue = CashFlowValidations::validatePresentValue($presentValue); |
||||
|
$futureValue = CashFlowValidations::validateFutureValue($futureValue); |
||||
|
$type = CashFlowValidations::validatePeriodType($type); |
||||
|
} catch (Exception $e) { |
||||
|
return $e->getMessage(); |
||||
|
} |
||||
|
|
||||
|
// Validate parameters |
||||
|
if ($period <= 0 || $period > $numberOfPeriods) { |
||||
|
return Functions::NAN(); |
||||
|
} |
||||
|
|
||||
|
// Calculate |
||||
|
$interestAndPrincipal = new InterestAndPrincipal( |
||||
|
$interestRate, |
||||
|
$period, |
||||
|
$numberOfPeriods, |
||||
|
$presentValue, |
||||
|
$futureValue, |
||||
|
$type |
||||
|
); |
||||
|
|
||||
|
return $interestAndPrincipal->interest(); |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* ISPMT. |
||||
|
* |
||||
|
* Returns the interest payment for an investment based on an interest rate and a constant payment schedule. |
||||
|
* |
||||
|
* Excel Function: |
||||
|
* =ISPMT(interest_rate, period, number_payments, pv) |
||||
|
* |
||||
|
* @param mixed $interestRate is the interest rate for the investment |
||||
|
* @param mixed $period is the period to calculate the interest rate. It must be betweeen 1 and number_payments. |
||||
|
* @param mixed $numberOfPeriods is the number of payments for the annuity |
||||
|
* @param mixed $principleRemaining is the loan amount or present value of the payments |
||||
|
*/ |
||||
|
public static function schedulePayment($interestRate, $period, $numberOfPeriods, $principleRemaining) |
||||
|
{ |
||||
|
$interestRate = Functions::flattenSingleValue($interestRate); |
||||
|
$period = Functions::flattenSingleValue($period); |
||||
|
$numberOfPeriods = Functions::flattenSingleValue($numberOfPeriods); |
||||
|
$principleRemaining = Functions::flattenSingleValue($principleRemaining); |
||||
|
|
||||
|
try { |
||||
|
$interestRate = CashFlowValidations::validateRate($interestRate); |
||||
|
$period = CashFlowValidations::validateInt($period); |
||||
|
$numberOfPeriods = CashFlowValidations::validateInt($numberOfPeriods); |
||||
|
$principleRemaining = CashFlowValidations::validateFloat($principleRemaining); |
||||
|
} catch (Exception $e) { |
||||
|
return $e->getMessage(); |
||||
|
} |
||||
|
|
||||
|
// Validate parameters |
||||
|
if ($period <= 0 || $period > $numberOfPeriods) { |
||||
|
return Functions::NAN(); |
||||
|
} |
||||
|
|
||||
|
// Return value |
||||
|
$returnValue = 0; |
||||
|
|
||||
|
// Calculate |
||||
|
$principlePayment = ($principleRemaining * 1.0) / ($numberOfPeriods * 1.0); |
||||
|
for ($i = 0; $i <= $period; ++$i) { |
||||
|
$returnValue = $interestRate * $principleRemaining * -1; |
||||
|
$principleRemaining -= $principlePayment; |
||||
|
// principle needs to be 0 after the last payment, don't let floating point screw it up |
||||
|
if ($i == $numberOfPeriods) { |
||||
|
$returnValue = 0.0; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
return $returnValue; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* RATE. |
||||
|
* |
||||
|
* Returns the interest rate per period of an annuity. |
||||
|
* RATE is calculated by iteration and can have zero or more solutions. |
||||
|
* If the successive results of RATE do not converge to within 0.0000001 after 20 iterations, |
||||
|
* RATE returns the #NUM! error value. |
||||
|
* |
||||
|
* Excel Function: |
||||
|
* RATE(nper,pmt,pv[,fv[,type[,guess]]]) |
||||
|
* |
||||
|
* @param mixed $numberOfPeriods The total number of payment periods in an annuity |
||||
|
* @param mixed $payment The payment made each period and cannot change over the life of the annuity. |
||||
|
* Typically, pmt includes principal and interest but no other fees or taxes. |
||||
|
* @param mixed $presentValue The present value - the total amount that a series of future payments is worth now |
||||
|
* @param mixed $futureValue The future value, or a cash balance you want to attain after the last payment is made. |
||||
|
* If fv is omitted, it is assumed to be 0 (the future value of a loan, |
||||
|
* for example, is 0). |
||||
|
* @param mixed $type A number 0 or 1 and indicates when payments are due: |
||||
|
* 0 or omitted At the end of the period. |
||||
|
* 1 At the beginning of the period. |
||||
|
* @param mixed $guess Your guess for what the rate will be. |
||||
|
* If you omit guess, it is assumed to be 10 percent. |
||||
|
* |
||||
|
* @return float|string |
||||
|
*/ |
||||
|
public static function rate( |
||||
|
$numberOfPeriods, |
||||
|
$payment, |
||||
|
$presentValue, |
||||
|
$futureValue = 0.0, |
||||
|
$type = FinancialConstants::PAYMENT_END_OF_PERIOD, |
||||
|
$guess = 0.1 |
||||
|
) { |
||||
|
$numberOfPeriods = Functions::flattenSingleValue($numberOfPeriods); |
||||
|
$payment = Functions::flattenSingleValue($payment); |
||||
|
$presentValue = Functions::flattenSingleValue($presentValue); |
||||
|
$futureValue = ($futureValue === null) ? 0.0 : Functions::flattenSingleValue($futureValue); |
||||
|
$type = ($type === null) ? FinancialConstants::PAYMENT_END_OF_PERIOD : Functions::flattenSingleValue($type); |
||||
|
$guess = ($guess === null) ? 0.1 : Functions::flattenSingleValue($guess); |
||||
|
|
||||
|
try { |
||||
|
$numberOfPeriods = CashFlowValidations::validateInt($numberOfPeriods); |
||||
|
$payment = CashFlowValidations::validateFloat($payment); |
||||
|
$presentValue = CashFlowValidations::validatePresentValue($presentValue); |
||||
|
$futureValue = CashFlowValidations::validateFutureValue($futureValue); |
||||
|
$type = CashFlowValidations::validatePeriodType($type); |
||||
|
$guess = CashFlowValidations::validateFloat($guess); |
||||
|
} catch (Exception $e) { |
||||
|
return $e->getMessage(); |
||||
|
} |
||||
|
|
||||
|
$rate = $guess; |
||||
|
// rest of code adapted from python/numpy |
||||
|
$close = false; |
||||
|
$iter = 0; |
||||
|
while (!$close && $iter < self::FINANCIAL_MAX_ITERATIONS) { |
||||
|
$nextdiff = self::rateNextGuess($rate, $numberOfPeriods, $payment, $presentValue, $futureValue, $type); |
||||
|
if (!is_numeric($nextdiff)) { |
||||
|
break; |
||||
|
} |
||||
|
$rate1 = $rate - $nextdiff; |
||||
|
$close = abs($rate1 - $rate) < self::FINANCIAL_PRECISION; |
||||
|
++$iter; |
||||
|
$rate = $rate1; |
||||
|
} |
||||
|
|
||||
|
return $close ? $rate : Functions::NAN(); |
||||
|
} |
||||
|
|
||||
|
private static function rateNextGuess($rate, $numberOfPeriods, $payment, $presentValue, $futureValue, $type) |
||||
|
{ |
||||
|
if ($rate == 0.0) { |
||||
|
return Functions::NAN(); |
||||
|
} |
||||
|
$tt1 = ($rate + 1) ** $numberOfPeriods; |
||||
|
$tt2 = ($rate + 1) ** ($numberOfPeriods - 1); |
||||
|
$numerator = $futureValue + $tt1 * $presentValue + $payment * ($tt1 - 1) * ($rate * $type + 1) / $rate; |
||||
|
$denominator = $numberOfPeriods * $tt2 * $presentValue - $payment * ($tt1 - 1) |
||||
|
* ($rate * $type + 1) / ($rate * $rate) + $numberOfPeriods |
||||
|
* $payment * $tt2 * ($rate * $type + 1) / $rate + $payment * ($tt1 - 1) * $type / $rate; |
||||
|
if ($denominator == 0) { |
||||
|
return Functions::NAN(); |
||||
|
} |
||||
|
|
||||
|
return $numerator / $denominator; |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,44 @@ |
|||||
|
<?php |
||||
|
|
||||
|
namespace PhpOffice\PhpSpreadsheet\Calculation\Financial\CashFlow\Constant\Periodic; |
||||
|
|
||||
|
use PhpOffice\PhpSpreadsheet\Calculation\Financial\Constants as FinancialConstants; |
||||
|
|
||||
|
class InterestAndPrincipal |
||||
|
{ |
||||
|
protected $interest; |
||||
|
|
||||
|
protected $principal; |
||||
|
|
||||
|
public function __construct( |
||||
|
float $rate = 0.0, |
||||
|
int $period = 0, |
||||
|
int $numberOfPeriods = 0, |
||||
|
float $presentValue = 0, |
||||
|
float $futureValue = 0, |
||||
|
int $type = FinancialConstants::PAYMENT_END_OF_PERIOD |
||||
|
) { |
||||
|
$payment = Payments::annuity($rate, $numberOfPeriods, $presentValue, $futureValue, $type); |
||||
|
$capital = $presentValue; |
||||
|
$interest = 0.0; |
||||
|
$principal = 0.0; |
||||
|
for ($i = 1; $i <= $period; ++$i) { |
||||
|
$interest = ($type === FinancialConstants::PAYMENT_BEGINNING_OF_PERIOD && $i == 1) ? 0 : -$capital * $rate; |
||||
|
$principal = $payment - $interest; |
||||
|
$capital += $principal; |
||||
|
} |
||||
|
|
||||
|
$this->interest = $interest; |
||||
|
$this->principal = $principal; |
||||
|
} |
||||
|
|
||||
|
public function interest(): float |
||||
|
{ |
||||
|
return $this->interest; |
||||
|
} |
||||
|
|
||||
|
public function principal(): float |
||||
|
{ |
||||
|
return $this->principal; |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,115 @@ |
|||||
|
<?php |
||||
|
|
||||
|
namespace PhpOffice\PhpSpreadsheet\Calculation\Financial\CashFlow\Constant\Periodic; |
||||
|
|
||||
|
use PhpOffice\PhpSpreadsheet\Calculation\Exception; |
||||
|
use PhpOffice\PhpSpreadsheet\Calculation\Financial\CashFlow\CashFlowValidations; |
||||
|
use PhpOffice\PhpSpreadsheet\Calculation\Financial\Constants as FinancialConstants; |
||||
|
use PhpOffice\PhpSpreadsheet\Calculation\Functions; |
||||
|
|
||||
|
class Payments |
||||
|
{ |
||||
|
/** |
||||
|
* PMT. |
||||
|
* |
||||
|
* Returns the constant payment (annuity) for a cash flow with a constant interest rate. |
||||
|
* |
||||
|
* @param mixed $interestRate Interest rate per period |
||||
|
* @param mixed $numberOfPeriods Number of periods |
||||
|
* @param mixed $presentValue Present Value |
||||
|
* @param mixed $futureValue Future Value |
||||
|
* @param mixed $type Payment type: 0 = at the end of each period, 1 = at the beginning of each period |
||||
|
* |
||||
|
* @return float|string Result, or a string containing an error |
||||
|
*/ |
||||
|
public static function annuity( |
||||
|
$interestRate, |
||||
|
$numberOfPeriods, |
||||
|
$presentValue, |
||||
|
$futureValue = 0, |
||||
|
$type = FinancialConstants::PAYMENT_END_OF_PERIOD |
||||
|
) { |
||||
|
$interestRate = Functions::flattenSingleValue($interestRate); |
||||
|
$numberOfPeriods = Functions::flattenSingleValue($numberOfPeriods); |
||||
|
$presentValue = Functions::flattenSingleValue($presentValue); |
||||
|
$futureValue = ($futureValue === null) ? 0.0 : Functions::flattenSingleValue($futureValue); |
||||
|
$type = ($type === null) ? FinancialConstants::PAYMENT_END_OF_PERIOD : Functions::flattenSingleValue($type); |
||||
|
|
||||
|
try { |
||||
|
$interestRate = CashFlowValidations::validateRate($interestRate); |
||||
|
$numberOfPeriods = CashFlowValidations::validateInt($numberOfPeriods); |
||||
|
$presentValue = CashFlowValidations::validatePresentValue($presentValue); |
||||
|
$futureValue = CashFlowValidations::validateFutureValue($futureValue); |
||||
|
$type = CashFlowValidations::validatePeriodType($type); |
||||
|
} catch (Exception $e) { |
||||
|
return $e->getMessage(); |
||||
|
} |
||||
|
|
||||
|
// Calculate |
||||
|
if ($interestRate != 0.0) { |
||||
|
return (-$futureValue - $presentValue * (1 + $interestRate) ** $numberOfPeriods) / |
||||
|
(1 + $interestRate * $type) / (((1 + $interestRate) ** $numberOfPeriods - 1) / $interestRate); |
||||
|
} |
||||
|
|
||||
|
return (-$presentValue - $futureValue) / $numberOfPeriods; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* PPMT. |
||||
|
* |
||||
|
* Returns the interest payment for a given period for an investment based on periodic, constant payments |
||||
|
* and a constant interest rate. |
||||
|
* |
||||
|
* @param mixed $interestRate Interest rate per period |
||||
|
* @param mixed $period Period for which we want to find the interest |
||||
|
* @param mixed $numberOfPeriods Number of periods |
||||
|
* @param mixed $presentValue Present Value |
||||
|
* @param mixed $futureValue Future Value |
||||
|
* @param mixed $type Payment type: 0 = at the end of each period, 1 = at the beginning of each period |
||||
|
* |
||||
|
* @return float|string Result, or a string containing an error |
||||
|
*/ |
||||
|
public static function interestPayment( |
||||
|
$interestRate, |
||||
|
$period, |
||||
|
$numberOfPeriods, |
||||
|
$presentValue, |
||||
|
$futureValue = 0, |
||||
|
$type = FinancialConstants::PAYMENT_END_OF_PERIOD |
||||
|
) { |
||||
|
$interestRate = Functions::flattenSingleValue($interestRate); |
||||
|
$period = Functions::flattenSingleValue($period); |
||||
|
$numberOfPeriods = Functions::flattenSingleValue($numberOfPeriods); |
||||
|
$presentValue = Functions::flattenSingleValue($presentValue); |
||||
|
$futureValue = ($futureValue === null) ? 0.0 : Functions::flattenSingleValue($futureValue); |
||||
|
$type = ($type === null) ? FinancialConstants::PAYMENT_END_OF_PERIOD : Functions::flattenSingleValue($type); |
||||
|
|
||||
|
try { |
||||
|
$interestRate = CashFlowValidations::validateRate($interestRate); |
||||
|
$period = CashFlowValidations::validateInt($period); |
||||
|
$numberOfPeriods = CashFlowValidations::validateInt($numberOfPeriods); |
||||
|
$presentValue = CashFlowValidations::validatePresentValue($presentValue); |
||||
|
$futureValue = CashFlowValidations::validateFutureValue($futureValue); |
||||
|
$type = CashFlowValidations::validatePeriodType($type); |
||||
|
} catch (Exception $e) { |
||||
|
return $e->getMessage(); |
||||
|
} |
||||
|
|
||||
|
// Validate parameters |
||||
|
if ($period <= 0 || $period > $numberOfPeriods) { |
||||
|
return Functions::NAN(); |
||||
|
} |
||||
|
|
||||
|
// Calculate |
||||
|
$interestAndPrincipal = new InterestAndPrincipal( |
||||
|
$interestRate, |
||||
|
$period, |
||||
|
$numberOfPeriods, |
||||
|
$presentValue, |
||||
|
$futureValue, |
||||
|
$type |
||||
|
); |
||||
|
|
||||
|
return $interestAndPrincipal->principal(); |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,258 @@ |
|||||
|
<?php |
||||
|
|
||||
|
namespace PhpOffice\PhpSpreadsheet\Calculation\Financial\CashFlow\Variable; |
||||
|
|
||||
|
use PhpOffice\PhpSpreadsheet\Calculation\DateTimeExcel; |
||||
|
use PhpOffice\PhpSpreadsheet\Calculation\Exception; |
||||
|
use PhpOffice\PhpSpreadsheet\Calculation\Functions; |
||||
|
|
||||
|
class NonPeriodic |
||||
|
{ |
||||
|
const FINANCIAL_MAX_ITERATIONS = 128; |
||||
|
|
||||
|
const FINANCIAL_PRECISION = 1.0e-08; |
||||
|
|
||||
|
const DEFAULT_GUESS = 0.1; |
||||
|
|
||||
|
/** |
||||
|
* XIRR. |
||||
|
* |
||||
|
* Returns the internal rate of return for a schedule of cash flows that is not necessarily periodic. |
||||
|
* |
||||
|
* Excel Function: |
||||
|
* =XIRR(values,dates,guess) |
||||
|
* |
||||
|
* @param float[] $values A series of cash flow payments |
||||
|
* The series of values must contain at least one positive value & one negative value |
||||
|
* @param mixed[] $dates A series of payment dates |
||||
|
* The first payment date indicates the beginning of the schedule of payments |
||||
|
* All other dates must be later than this date, but they may occur in any order |
||||
|
* @param mixed $guess An optional guess at the expected answer |
||||
|
* |
||||
|
* @return float|string |
||||
|
*/ |
||||
|
public static function rate($values, $dates, $guess = self::DEFAULT_GUESS) |
||||
|
{ |
||||
|
$rslt = self::xirrPart1($values, $dates); |
||||
|
if ($rslt !== '') { |
||||
|
return $rslt; |
||||
|
} |
||||
|
|
||||
|
// create an initial range, with a root somewhere between 0 and guess |
||||
|
$guess = Functions::flattenSingleValue($guess) ?? self::DEFAULT_GUESS; |
||||
|
if (!is_numeric($guess)) { |
||||
|
return Functions::VALUE(); |
||||
|
} |
||||
|
$guess = ($guess + 0.0) ?: self::DEFAULT_GUESS; |
||||
|
$x1 = 0.0; |
||||
|
$x2 = $guess + 0.0; |
||||
|
$f1 = self::xnpvOrdered($x1, $values, $dates, false); |
||||
|
$f2 = self::xnpvOrdered($x2, $values, $dates, false); |
||||
|
$found = false; |
||||
|
for ($i = 0; $i < self::FINANCIAL_MAX_ITERATIONS; ++$i) { |
||||
|
if (!is_numeric($f1) || !is_numeric($f2)) { |
||||
|
break; |
||||
|
} |
||||
|
$f1 = (float) $f1; |
||||
|
$f2 = (float) $f2; |
||||
|
if (($f1 * $f2) < 0.0) { |
||||
|
$found = true; |
||||
|
|
||||
|
break; |
||||
|
} elseif (abs($f1) < abs($f2)) { |
||||
|
$x1 += 1.6 * ($x1 - $x2); |
||||
|
$f1 = self::xnpvOrdered($x1, $values, $dates, false); |
||||
|
} else { |
||||
|
$x2 += 1.6 * ($x2 - $x1); |
||||
|
$f2 = self::xnpvOrdered($x2, $values, $dates, false); |
||||
|
} |
||||
|
} |
||||
|
if (!$found) { |
||||
|
return Functions::NAN(); |
||||
|
} |
||||
|
|
||||
|
return self::xirrPart3($values, $dates, $x1, $x2); |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* XNPV. |
||||
|
* |
||||
|
* Returns the net present value for a schedule of cash flows that is not necessarily periodic. |
||||
|
* To calculate the net present value for a series of cash flows that is periodic, use the NPV function. |
||||
|
* |
||||
|
* Excel Function: |
||||
|
* =XNPV(rate,values,dates) |
||||
|
* |
||||
|
* @param float $rate the discount rate to apply to the cash flows |
||||
|
* @param float[] $values A series of cash flows that corresponds to a schedule of payments in dates. |
||||
|
* The first payment is optional and corresponds to a cost or payment that occurs |
||||
|
* at the beginning of the investment. |
||||
|
* If the first value is a cost or payment, it must be a negative value. |
||||
|
* All succeeding payments are discounted based on a 365-day year. |
||||
|
* The series of values must contain at least one positive value and one negative value. |
||||
|
* @param mixed[] $dates A schedule of payment dates that corresponds to the cash flow payments. |
||||
|
* The first payment date indicates the beginning of the schedule of payments. |
||||
|
* All other dates must be later than this date, but they may occur in any order. |
||||
|
* |
||||
|
* @return float|string |
||||
|
*/ |
||||
|
public static function presentValue($rate, $values, $dates) |
||||
|
{ |
||||
|
return self::xnpvOrdered($rate, $values, $dates, true); |
||||
|
} |
||||
|
|
||||
|
private static function bothNegAndPos(bool $neg, bool $pos): bool |
||||
|
{ |
||||
|
return $neg && $pos; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* @param mixed $values |
||||
|
* @param mixed $dates |
||||
|
*/ |
||||
|
private static function xirrPart1(&$values, &$dates): string |
||||
|
{ |
||||
|
$values = Functions::flattenArray($values); |
||||
|
$dates = Functions::flattenArray($dates); |
||||
|
$valuesIsArray = count($values) > 1; |
||||
|
$datesIsArray = count($dates) > 1; |
||||
|
if (!$valuesIsArray && !$datesIsArray) { |
||||
|
return Functions::NA(); |
||||
|
} |
||||
|
if (count($values) != count($dates)) { |
||||
|
return Functions::NAN(); |
||||
|
} |
||||
|
|
||||
|
$datesCount = count($dates); |
||||
|
for ($i = 0; $i < $datesCount; ++$i) { |
||||
|
try { |
||||
|
$dates[$i] = DateTimeExcel\Helpers::getDateValue($dates[$i]); |
||||
|
} catch (Exception $e) { |
||||
|
return $e->getMessage(); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
return self::xirrPart2($values); |
||||
|
} |
||||
|
|
||||
|
private static function xirrPart2(array &$values): string |
||||
|
{ |
||||
|
$valCount = count($values); |
||||
|
$foundpos = false; |
||||
|
$foundneg = false; |
||||
|
for ($i = 0; $i < $valCount; ++$i) { |
||||
|
$fld = $values[$i]; |
||||
|
if (!is_numeric($fld)) { |
||||
|
return Functions::VALUE(); |
||||
|
} elseif ($fld > 0) { |
||||
|
$foundpos = true; |
||||
|
} elseif ($fld < 0) { |
||||
|
$foundneg = true; |
||||
|
} |
||||
|
} |
||||
|
if (!self::bothNegAndPos($foundneg, $foundpos)) { |
||||
|
return Functions::NAN(); |
||||
|
} |
||||
|
|
||||
|
return ''; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* @return float|string |
||||
|
*/ |
||||
|
private static function xirrPart3(array $values, array $dates, float $x1, float $x2) |
||||
|
{ |
||||
|
$f = self::xnpvOrdered($x1, $values, $dates, false); |
||||
|
if ($f < 0.0) { |
||||
|
$rtb = $x1; |
||||
|
$dx = $x2 - $x1; |
||||
|
} else { |
||||
|
$rtb = $x2; |
||||
|
$dx = $x1 - $x2; |
||||
|
} |
||||
|
|
||||
|
$rslt = Functions::VALUE(); |
||||
|
for ($i = 0; $i < self::FINANCIAL_MAX_ITERATIONS; ++$i) { |
||||
|
$dx *= 0.5; |
||||
|
$x_mid = $rtb + $dx; |
||||
|
$f_mid = (float) self::xnpvOrdered($x_mid, $values, $dates, false); |
||||
|
if ($f_mid <= 0.0) { |
||||
|
$rtb = $x_mid; |
||||
|
} |
||||
|
if ((abs($f_mid) < self::FINANCIAL_PRECISION) || (abs($dx) < self::FINANCIAL_PRECISION)) { |
||||
|
$rslt = $x_mid; |
||||
|
|
||||
|
break; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
return $rslt; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* @param mixed $rate |
||||
|
* @param mixed $values |
||||
|
* @param mixed $dates |
||||
|
* |
||||
|
* @return float|string |
||||
|
*/ |
||||
|
private static function xnpvOrdered($rate, $values, $dates, bool $ordered = true) |
||||
|
{ |
||||
|
$rate = Functions::flattenSingleValue($rate); |
||||
|
$values = Functions::flattenArray($values); |
||||
|
$dates = Functions::flattenArray($dates); |
||||
|
$valCount = count($values); |
||||
|
|
||||
|
try { |
||||
|
self::validateXnpv($rate, $values, $dates); |
||||
|
$date0 = DateTimeExcel\Helpers::getDateValue($dates[0]); |
||||
|
} catch (Exception $e) { |
||||
|
return $e->getMessage(); |
||||
|
} |
||||
|
|
||||
|
$xnpv = 0.0; |
||||
|
for ($i = 0; $i < $valCount; ++$i) { |
||||
|
if (!is_numeric($values[$i])) { |
||||
|
return Functions::VALUE(); |
||||
|
} |
||||
|
|
||||
|
try { |
||||
|
$datei = DateTimeExcel\Helpers::getDateValue($dates[$i]); |
||||
|
} catch (Exception $e) { |
||||
|
return $e->getMessage(); |
||||
|
} |
||||
|
if ($date0 > $datei) { |
||||
|
$dif = $ordered ? Functions::NAN() : -((int) DateTimeExcel\Difference::interval($datei, $date0, 'd')); |
||||
|
} else { |
||||
|
$dif = DateTimeExcel\Difference::interval($date0, $datei, 'd'); |
||||
|
} |
||||
|
if (!is_numeric($dif)) { |
||||
|
return $dif; |
||||
|
} |
||||
|
if ($rate <= -1.0) { |
||||
|
$xnpv += -abs($values[$i]) / (-1 - $rate) ** ($dif / 365); |
||||
|
} else { |
||||
|
$xnpv += $values[$i] / (1 + $rate) ** ($dif / 365); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
return is_finite($xnpv) ? $xnpv : Functions::VALUE(); |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* @param mixed $rate |
||||
|
*/ |
||||
|
private static function validateXnpv($rate, array $values, array $dates): void |
||||
|
{ |
||||
|
if (!is_numeric($rate)) { |
||||
|
throw new Exception(Functions::VALUE()); |
||||
|
} |
||||
|
$valCount = count($values); |
||||
|
if ($valCount != count($dates)) { |
||||
|
throw new Exception(Functions::NAN()); |
||||
|
} |
||||
|
if ($valCount > 1 && ((min($values) > 0) || (max($values) < 0))) { |
||||
|
throw new Exception(Functions::NAN()); |
||||
|
} |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,131 @@ |
|||||
|
<?php |
||||
|
|
||||
|
namespace PhpOffice\PhpSpreadsheet\Calculation\Financial; |
||||
|
|
||||
|
use PhpOffice\PhpSpreadsheet\Calculation\ArrayEnabled; |
||||
|
use PhpOffice\PhpSpreadsheet\Calculation\Exception; |
||||
|
use PhpOffice\PhpSpreadsheet\Calculation\Functions; |
||||
|
use PhpOffice\PhpSpreadsheet\Calculation\TextData\Format; |
||||
|
|
||||
|
class Dollar |
||||
|
{ |
||||
|
use ArrayEnabled; |
||||
|
|
||||
|
/** |
||||
|
* DOLLAR. |
||||
|
* |
||||
|
* This function converts a number to text using currency format, with the decimals rounded to the specified place. |
||||
|
* The format used is $#,##0.00_);($#,##0.00).. |
||||
|
* |
||||
|
* @param mixed $number The value to format, or can be an array of numbers |
||||
|
* Or can be an array of values |
||||
|
* @param mixed $precision The number of digits to display to the right of the decimal point (as an integer). |
||||
|
* If precision is negative, number is rounded to the left of the decimal point. |
||||
|
* If you omit precision, it is assumed to be 2 |
||||
|
* Or can be an array of precision values |
||||
|
* |
||||
|
* @return array|string |
||||
|
* If an array of values is passed for either of the arguments, then the returned result |
||||
|
* will also be an array with matching dimensions |
||||
|
*/ |
||||
|
public static function format($number, $precision = 2) |
||||
|
{ |
||||
|
return Format::DOLLAR($number, $precision); |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* DOLLARDE. |
||||
|
* |
||||
|
* Converts a dollar price expressed as an integer part and a fraction |
||||
|
* part into a dollar price expressed as a decimal number. |
||||
|
* Fractional dollar numbers are sometimes used for security prices. |
||||
|
* |
||||
|
* Excel Function: |
||||
|
* DOLLARDE(fractional_dollar,fraction) |
||||
|
* |
||||
|
* @param mixed $fractionalDollar Fractional Dollar |
||||
|
* Or can be an array of values |
||||
|
* @param mixed $fraction Fraction |
||||
|
* Or can be an array of values |
||||
|
* |
||||
|
* @return array|float|string |
||||
|
*/ |
||||
|
public static function decimal($fractionalDollar = null, $fraction = 0) |
||||
|
{ |
||||
|
if (is_array($fractionalDollar) || is_array($fraction)) { |
||||
|
return self::evaluateArrayArguments([self::class, __FUNCTION__], $fractionalDollar, $fraction); |
||||
|
} |
||||
|
|
||||
|
try { |
||||
|
$fractionalDollar = FinancialValidations::validateFloat( |
||||
|
Functions::flattenSingleValue($fractionalDollar) ?? 0.0 |
||||
|
); |
||||
|
$fraction = FinancialValidations::validateInt(Functions::flattenSingleValue($fraction)); |
||||
|
} catch (Exception $e) { |
||||
|
return $e->getMessage(); |
||||
|
} |
||||
|
|
||||
|
// Additional parameter validations |
||||
|
if ($fraction < 0) { |
||||
|
return Functions::NAN(); |
||||
|
} |
||||
|
if ($fraction == 0) { |
||||
|
return Functions::DIV0(); |
||||
|
} |
||||
|
|
||||
|
$dollars = ($fractionalDollar < 0) ? ceil($fractionalDollar) : floor($fractionalDollar); |
||||
|
$cents = fmod($fractionalDollar, 1.0); |
||||
|
$cents /= $fraction; |
||||
|
$cents *= 10 ** ceil(log10($fraction)); |
||||
|
|
||||
|
return $dollars + $cents; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* DOLLARFR. |
||||
|
* |
||||
|
* Converts a dollar price expressed as a decimal number into a dollar price |
||||
|
* expressed as a fraction. |
||||
|
* Fractional dollar numbers are sometimes used for security prices. |
||||
|
* |
||||
|
* Excel Function: |
||||
|
* DOLLARFR(decimal_dollar,fraction) |
||||
|
* |
||||
|
* @param mixed $decimalDollar Decimal Dollar |
||||
|
* Or can be an array of values |
||||
|
* @param mixed $fraction Fraction |
||||
|
* Or can be an array of values |
||||
|
* |
||||
|
* @return array|float|string |
||||
|
*/ |
||||
|
public static function fractional($decimalDollar = null, $fraction = 0) |
||||
|
{ |
||||
|
if (is_array($decimalDollar) || is_array($fraction)) { |
||||
|
return self::evaluateArrayArguments([self::class, __FUNCTION__], $decimalDollar, $fraction); |
||||
|
} |
||||
|
|
||||
|
try { |
||||
|
$decimalDollar = FinancialValidations::validateFloat( |
||||
|
Functions::flattenSingleValue($decimalDollar) ?? 0.0 |
||||
|
); |
||||
|
$fraction = FinancialValidations::validateInt(Functions::flattenSingleValue($fraction)); |
||||
|
} catch (Exception $e) { |
||||
|
return $e->getMessage(); |
||||
|
} |
||||
|
|
||||
|
// Additional parameter validations |
||||
|
if ($fraction < 0) { |
||||
|
return Functions::NAN(); |
||||
|
} |
||||
|
if ($fraction == 0) { |
||||
|
return Functions::DIV0(); |
||||
|
} |
||||
|
|
||||
|
$dollars = ($decimalDollar < 0.0) ? ceil($decimalDollar) : floor($decimalDollar); |
||||
|
$cents = fmod($decimalDollar, 1); |
||||
|
$cents *= $fraction; |
||||
|
$cents *= 10 ** (-ceil(log10($fraction))); |
||||
|
|
||||
|
return $dollars + $cents; |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,158 @@ |
|||||
|
<?php |
||||
|
|
||||
|
namespace PhpOffice\PhpSpreadsheet\Calculation\Financial; |
||||
|
|
||||
|
use PhpOffice\PhpSpreadsheet\Calculation\DateTimeExcel; |
||||
|
use PhpOffice\PhpSpreadsheet\Calculation\Exception; |
||||
|
use PhpOffice\PhpSpreadsheet\Calculation\Financial\Constants as FinancialConstants; |
||||
|
use PhpOffice\PhpSpreadsheet\Calculation\Functions; |
||||
|
|
||||
|
class FinancialValidations |
||||
|
{ |
||||
|
/** |
||||
|
* @param mixed $date |
||||
|
*/ |
||||
|
public static function validateDate($date): float |
||||
|
{ |
||||
|
return DateTimeExcel\Helpers::getDateValue($date); |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* @param mixed $settlement |
||||
|
*/ |
||||
|
public static function validateSettlementDate($settlement): float |
||||
|
{ |
||||
|
return self::validateDate($settlement); |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* @param mixed $maturity |
||||
|
*/ |
||||
|
public static function validateMaturityDate($maturity): float |
||||
|
{ |
||||
|
return self::validateDate($maturity); |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* @param mixed $value |
||||
|
*/ |
||||
|
public static function validateFloat($value): float |
||||
|
{ |
||||
|
if (!is_numeric($value)) { |
||||
|
throw new Exception(Functions::VALUE()); |
||||
|
} |
||||
|
|
||||
|
return (float) $value; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* @param mixed $value |
||||
|
*/ |
||||
|
public static function validateInt($value): int |
||||
|
{ |
||||
|
if (!is_numeric($value)) { |
||||
|
throw new Exception(Functions::VALUE()); |
||||
|
} |
||||
|
|
||||
|
return (int) floor((float) $value); |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* @param mixed $rate |
||||
|
*/ |
||||
|
public static function validateRate($rate): float |
||||
|
{ |
||||
|
$rate = self::validateFloat($rate); |
||||
|
if ($rate < 0.0) { |
||||
|
throw new Exception(Functions::NAN()); |
||||
|
} |
||||
|
|
||||
|
return $rate; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* @param mixed $frequency |
||||
|
*/ |
||||
|
public static function validateFrequency($frequency): int |
||||
|
{ |
||||
|
$frequency = self::validateInt($frequency); |
||||
|
if ( |
||||
|
($frequency !== FinancialConstants::FREQUENCY_ANNUAL) && |
||||
|
($frequency !== FinancialConstants::FREQUENCY_SEMI_ANNUAL) && |
||||
|
($frequency !== FinancialConstants::FREQUENCY_QUARTERLY) |
||||
|
) { |
||||
|
throw new Exception(Functions::NAN()); |
||||
|
} |
||||
|
|
||||
|
return $frequency; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* @param mixed $basis |
||||
|
*/ |
||||
|
public static function validateBasis($basis): int |
||||
|
{ |
||||
|
if (!is_numeric($basis)) { |
||||
|
throw new Exception(Functions::VALUE()); |
||||
|
} |
||||
|
|
||||
|
$basis = (int) $basis; |
||||
|
if (($basis < 0) || ($basis > 4)) { |
||||
|
throw new Exception(Functions::NAN()); |
||||
|
} |
||||
|
|
||||
|
return $basis; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* @param mixed $price |
||||
|
*/ |
||||
|
public static function validatePrice($price): float |
||||
|
{ |
||||
|
$price = self::validateFloat($price); |
||||
|
if ($price < 0.0) { |
||||
|
throw new Exception(Functions::NAN()); |
||||
|
} |
||||
|
|
||||
|
return $price; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* @param mixed $parValue |
||||
|
*/ |
||||
|
public static function validateParValue($parValue): float |
||||
|
{ |
||||
|
$parValue = self::validateFloat($parValue); |
||||
|
if ($parValue < 0.0) { |
||||
|
throw new Exception(Functions::NAN()); |
||||
|
} |
||||
|
|
||||
|
return $parValue; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* @param mixed $yield |
||||
|
*/ |
||||
|
public static function validateYield($yield): float |
||||
|
{ |
||||
|
$yield = self::validateFloat($yield); |
||||
|
if ($yield < 0.0) { |
||||
|
throw new Exception(Functions::NAN()); |
||||
|
} |
||||
|
|
||||
|
return $yield; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* @param mixed $discount |
||||
|
*/ |
||||
|
public static function validateDiscount($discount): float |
||||
|
{ |
||||
|
$discount = self::validateFloat($discount); |
||||
|
if ($discount <= 0.0) { |
||||
|
throw new Exception(Functions::NAN()); |
||||
|
} |
||||
|
|
||||
|
return $discount; |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,58 @@ |
|||||
|
<?php |
||||
|
|
||||
|
namespace PhpOffice\PhpSpreadsheet\Calculation\Financial; |
||||
|
|
||||
|
use DateTimeInterface; |
||||
|
use PhpOffice\PhpSpreadsheet\Calculation\DateTimeExcel; |
||||
|
use PhpOffice\PhpSpreadsheet\Calculation\Financial\Constants as FinancialConstants; |
||||
|
use PhpOffice\PhpSpreadsheet\Calculation\Functions; |
||||
|
|
||||
|
class Helpers |
||||
|
{ |
||||
|
/** |
||||
|
* daysPerYear. |
||||
|
* |
||||
|
* Returns the number of days in a specified year, as defined by the "basis" value |
||||
|
* |
||||
|
* @param int|string $year The year against which we're testing |
||||
|
* @param int|string $basis The type of day count: |
||||
|
* 0 or omitted US (NASD) 360 |
||||
|
* 1 Actual (365 or 366 in a leap year) |
||||
|
* 2 360 |
||||
|
* 3 365 |
||||
|
* 4 European 360 |
||||
|
* |
||||
|
* @return int|string Result, or a string containing an error |
||||
|
*/ |
||||
|
public static function daysPerYear($year, $basis = 0) |
||||
|
{ |
||||
|
if (!is_numeric($basis)) { |
||||
|
return Functions::NAN(); |
||||
|
} |
||||
|
|
||||
|
switch ($basis) { |
||||
|
case FinancialConstants::BASIS_DAYS_PER_YEAR_NASD: |
||||
|
case FinancialConstants::BASIS_DAYS_PER_YEAR_360: |
||||
|
case FinancialConstants::BASIS_DAYS_PER_YEAR_360_EUROPEAN: |
||||
|
return 360; |
||||
|
case FinancialConstants::BASIS_DAYS_PER_YEAR_365: |
||||
|
return 365; |
||||
|
case FinancialConstants::BASIS_DAYS_PER_YEAR_ACTUAL: |
||||
|
return (DateTimeExcel\Helpers::isLeapYear($year)) ? 366 : 365; |
||||
|
} |
||||
|
|
||||
|
return Functions::NAN(); |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* isLastDayOfMonth. |
||||
|
* |
||||
|
* Returns a boolean TRUE/FALSE indicating if this date is the last date of the month |
||||
|
* |
||||
|
* @param DateTimeInterface $date The date for testing |
||||
|
*/ |
||||
|
public static function isLastDayOfMonth(DateTimeInterface $date): bool |
||||
|
{ |
||||
|
return $date->format('d') === $date->format('t'); |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,72 @@ |
|||||
|
<?php |
||||
|
|
||||
|
namespace PhpOffice\PhpSpreadsheet\Calculation\Financial; |
||||
|
|
||||
|
use PhpOffice\PhpSpreadsheet\Calculation\Exception; |
||||
|
use PhpOffice\PhpSpreadsheet\Calculation\Functions; |
||||
|
|
||||
|
class InterestRate |
||||
|
{ |
||||
|
/** |
||||
|
* EFFECT. |
||||
|
* |
||||
|
* Returns the effective interest rate given the nominal rate and the number of |
||||
|
* compounding payments per year. |
||||
|
* |
||||
|
* Excel Function: |
||||
|
* EFFECT(nominal_rate,npery) |
||||
|
* |
||||
|
* @param mixed $nominalRate Nominal interest rate as a float |
||||
|
* @param mixed $periodsPerYear Integer number of compounding payments per year |
||||
|
* |
||||
|
* @return float|string |
||||
|
*/ |
||||
|
public static function effective($nominalRate = 0, $periodsPerYear = 0) |
||||
|
{ |
||||
|
$nominalRate = Functions::flattenSingleValue($nominalRate); |
||||
|
$periodsPerYear = Functions::flattenSingleValue($periodsPerYear); |
||||
|
|
||||
|
try { |
||||
|
$nominalRate = FinancialValidations::validateFloat($nominalRate); |
||||
|
$periodsPerYear = FinancialValidations::validateInt($periodsPerYear); |
||||
|
} catch (Exception $e) { |
||||
|
return $e->getMessage(); |
||||
|
} |
||||
|
|
||||
|
if ($nominalRate <= 0 || $periodsPerYear < 1) { |
||||
|
return Functions::NAN(); |
||||
|
} |
||||
|
|
||||
|
return ((1 + $nominalRate / $periodsPerYear) ** $periodsPerYear) - 1; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* NOMINAL. |
||||
|
* |
||||
|
* Returns the nominal interest rate given the effective rate and the number of compounding payments per year. |
||||
|
* |
||||
|
* @param mixed $effectiveRate Effective interest rate as a float |
||||
|
* @param mixed $periodsPerYear Integer number of compounding payments per year |
||||
|
* |
||||
|
* @return float|string Result, or a string containing an error |
||||
|
*/ |
||||
|
public static function nominal($effectiveRate = 0, $periodsPerYear = 0) |
||||
|
{ |
||||
|
$effectiveRate = Functions::flattenSingleValue($effectiveRate); |
||||
|
$periodsPerYear = Functions::flattenSingleValue($periodsPerYear); |
||||
|
|
||||
|
try { |
||||
|
$effectiveRate = FinancialValidations::validateFloat($effectiveRate); |
||||
|
$periodsPerYear = FinancialValidations::validateInt($periodsPerYear); |
||||
|
} catch (Exception $e) { |
||||
|
return $e->getMessage(); |
||||
|
} |
||||
|
|
||||
|
if ($effectiveRate <= 0 || $periodsPerYear < 1) { |
||||
|
return Functions::NAN(); |
||||
|
} |
||||
|
|
||||
|
// Calculate |
||||
|
return $periodsPerYear * (($effectiveRate + 1) ** (1 / $periodsPerYear) - 1); |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,629 @@ |
|||||
|
<?php |
||||
|
|
||||
|
namespace PhpOffice\PhpSpreadsheet\Calculation; |
||||
|
|
||||
|
/** |
||||
|
* PARTLY BASED ON: |
||||
|
* Copyright (c) 2007 E. W. Bachtal, Inc. |
||||
|
* |
||||
|
* Permission is hereby granted, free of charge, to any person obtaining a copy of this software |
||||
|
* and associated documentation files (the "Software"), to deal in the Software without restriction, |
||||
|
* including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, |
||||
|
* and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, |
||||
|
* subject to the following conditions: |
||||
|
* |
||||
|
* The above copyright notice and this permission notice shall be included in all copies or substantial |
||||
|
* portions of the Software. |
||||
|
* |
||||
|
* The software is provided "as is", without warranty of any kind, express or implied, including but not |
||||
|
* limited to the warranties of merchantability, fitness for a particular purpose and noninfringement. In |
||||
|
* no event shall the authors or copyright holders be liable for any claim, damages or other liability, |
||||
|
* whether in an action of contract, tort or otherwise, arising from, out of or in connection with the |
||||
|
* software or the use or other dealings in the software. |
||||
|
* |
||||
|
* https://ewbi.blogs.com/develops/2007/03/excel_formula_p.html |
||||
|
* https://ewbi.blogs.com/develops/2004/12/excel_formula_p.html |
||||
|
*/ |
||||
|
class FormulaParser |
||||
|
{ |
||||
|
// Character constants |
||||
|
const QUOTE_DOUBLE = '"'; |
||||
|
const QUOTE_SINGLE = '\''; |
||||
|
const BRACKET_CLOSE = ']'; |
||||
|
const BRACKET_OPEN = '['; |
||||
|
const BRACE_OPEN = '{'; |
||||
|
const BRACE_CLOSE = '}'; |
||||
|
const PAREN_OPEN = '('; |
||||
|
const PAREN_CLOSE = ')'; |
||||
|
const SEMICOLON = ';'; |
||||
|
const WHITESPACE = ' '; |
||||
|
const COMMA = ','; |
||||
|
const ERROR_START = '#'; |
||||
|
|
||||
|
const OPERATORS_SN = '+-'; |
||||
|
const OPERATORS_INFIX = '+-*/^&=><'; |
||||
|
const OPERATORS_POSTFIX = '%'; |
||||
|
|
||||
|
/** |
||||
|
* Formula. |
||||
|
* |
||||
|
* @var string |
||||
|
*/ |
||||
|
private $formula; |
||||
|
|
||||
|
/** |
||||
|
* Tokens. |
||||
|
* |
||||
|
* @var FormulaToken[] |
||||
|
*/ |
||||
|
private $tokens = []; |
||||
|
|
||||
|
/** |
||||
|
* Create a new FormulaParser. |
||||
|
* |
||||
|
* @param string $formula Formula to parse |
||||
|
*/ |
||||
|
public function __construct($formula = '') |
||||
|
{ |
||||
|
// Check parameters |
||||
|
if ($formula === null) { |
||||
|
throw new Exception('Invalid parameter passed: formula'); |
||||
|
} |
||||
|
|
||||
|
// Initialise values |
||||
|
$this->formula = trim($formula); |
||||
|
// Parse! |
||||
|
$this->parseToTokens(); |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* Get Formula. |
||||
|
* |
||||
|
* @return string |
||||
|
*/ |
||||
|
public function getFormula() |
||||
|
{ |
||||
|
return $this->formula; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* Get Token. |
||||
|
* |
||||
|
* @param int $id Token id |
||||
|
*/ |
||||
|
public function getToken(int $id = 0): FormulaToken |
||||
|
{ |
||||
|
if (isset($this->tokens[$id])) { |
||||
|
return $this->tokens[$id]; |
||||
|
} |
||||
|
|
||||
|
throw new Exception("Token with id $id does not exist."); |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* Get Token count. |
||||
|
* |
||||
|
* @return int |
||||
|
*/ |
||||
|
public function getTokenCount() |
||||
|
{ |
||||
|
return count($this->tokens); |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* Get Tokens. |
||||
|
* |
||||
|
* @return FormulaToken[] |
||||
|
*/ |
||||
|
public function getTokens() |
||||
|
{ |
||||
|
return $this->tokens; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* Parse to tokens. |
||||
|
*/ |
||||
|
private function parseToTokens(): void |
||||
|
{ |
||||
|
// No attempt is made to verify formulas; assumes formulas are derived from Excel, where |
||||
|
// they can only exist if valid; stack overflows/underflows sunk as nulls without exceptions. |
||||
|
|
||||
|
// Check if the formula has a valid starting = |
||||
|
$formulaLength = strlen($this->formula); |
||||
|
if ($formulaLength < 2 || $this->formula[0] != '=') { |
||||
|
return; |
||||
|
} |
||||
|
|
||||
|
// Helper variables |
||||
|
$tokens1 = $tokens2 = $stack = []; |
||||
|
$inString = $inPath = $inRange = $inError = false; |
||||
|
$token = $previousToken = $nextToken = null; |
||||
|
|
||||
|
$index = 1; |
||||
|
$value = ''; |
||||
|
|
||||
|
$ERRORS = ['#NULL!', '#DIV/0!', '#VALUE!', '#REF!', '#NAME?', '#NUM!', '#N/A']; |
||||
|
$COMPARATORS_MULTI = ['>=', '<=', '<>']; |
||||
|
|
||||
|
while ($index < $formulaLength) { |
||||
|
// state-dependent character evaluation (order is important) |
||||
|
|
||||
|
// double-quoted strings |
||||
|
// embeds are doubled |
||||
|
// end marks token |
||||
|
if ($inString) { |
||||
|
if ($this->formula[$index] == self::QUOTE_DOUBLE) { |
||||
|
if ((($index + 2) <= $formulaLength) && ($this->formula[$index + 1] == self::QUOTE_DOUBLE)) { |
||||
|
$value .= self::QUOTE_DOUBLE; |
||||
|
++$index; |
||||
|
} else { |
||||
|
$inString = false; |
||||
|
$tokens1[] = new FormulaToken($value, FormulaToken::TOKEN_TYPE_OPERAND, FormulaToken::TOKEN_SUBTYPE_TEXT); |
||||
|
$value = ''; |
||||
|
} |
||||
|
} else { |
||||
|
$value .= $this->formula[$index]; |
||||
|
} |
||||
|
++$index; |
||||
|
|
||||
|
continue; |
||||
|
} |
||||
|
|
||||
|
// single-quoted strings (links) |
||||
|
// embeds are double |
||||
|
// end does not mark a token |
||||
|
if ($inPath) { |
||||
|
if ($this->formula[$index] == self::QUOTE_SINGLE) { |
||||
|
if ((($index + 2) <= $formulaLength) && ($this->formula[$index + 1] == self::QUOTE_SINGLE)) { |
||||
|
$value .= self::QUOTE_SINGLE; |
||||
|
++$index; |
||||
|
} else { |
||||
|
$inPath = false; |
||||
|
} |
||||
|
} else { |
||||
|
$value .= $this->formula[$index]; |
||||
|
} |
||||
|
++$index; |
||||
|
|
||||
|
continue; |
||||
|
} |
||||
|
|
||||
|
// bracked strings (R1C1 range index or linked workbook name) |
||||
|
// no embeds (changed to "()" by Excel) |
||||
|
// end does not mark a token |
||||
|
if ($inRange) { |
||||
|
if ($this->formula[$index] == self::BRACKET_CLOSE) { |
||||
|
$inRange = false; |
||||
|
} |
||||
|
$value .= $this->formula[$index]; |
||||
|
++$index; |
||||
|
|
||||
|
continue; |
||||
|
} |
||||
|
|
||||
|
// error values |
||||
|
// end marks a token, determined from absolute list of values |
||||
|
if ($inError) { |
||||
|
$value .= $this->formula[$index]; |
||||
|
++$index; |
||||
|
if (in_array($value, $ERRORS)) { |
||||
|
$inError = false; |
||||
|
$tokens1[] = new FormulaToken($value, FormulaToken::TOKEN_TYPE_OPERAND, FormulaToken::TOKEN_SUBTYPE_ERROR); |
||||
|
$value = ''; |
||||
|
} |
||||
|
|
||||
|
continue; |
||||
|
} |
||||
|
|
||||
|
// scientific notation check |
||||
|
if (strpos(self::OPERATORS_SN, $this->formula[$index]) !== false) { |
||||
|
if (strlen($value) > 1) { |
||||
|
if (preg_match('/^[1-9]{1}(\\.\\d+)?E{1}$/', $this->formula[$index]) != 0) { |
||||
|
$value .= $this->formula[$index]; |
||||
|
++$index; |
||||
|
|
||||
|
continue; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
// independent character evaluation (order not important) |
||||
|
|
||||
|
// establish state-dependent character evaluations |
||||
|
if ($this->formula[$index] == self::QUOTE_DOUBLE) { |
||||
|
if (strlen($value) > 0) { |
||||
|
// unexpected |
||||
|
$tokens1[] = new FormulaToken($value, FormulaToken::TOKEN_TYPE_UNKNOWN); |
||||
|
$value = ''; |
||||
|
} |
||||
|
$inString = true; |
||||
|
++$index; |
||||
|
|
||||
|
continue; |
||||
|
} |
||||
|
|
||||
|
if ($this->formula[$index] == self::QUOTE_SINGLE) { |
||||
|
if (strlen($value) > 0) { |
||||
|
// unexpected |
||||
|
$tokens1[] = new FormulaToken($value, FormulaToken::TOKEN_TYPE_UNKNOWN); |
||||
|
$value = ''; |
||||
|
} |
||||
|
$inPath = true; |
||||
|
++$index; |
||||
|
|
||||
|
continue; |
||||
|
} |
||||
|
|
||||
|
if ($this->formula[$index] == self::BRACKET_OPEN) { |
||||
|
$inRange = true; |
||||
|
$value .= self::BRACKET_OPEN; |
||||
|
++$index; |
||||
|
|
||||
|
continue; |
||||
|
} |
||||
|
|
||||
|
if ($this->formula[$index] == self::ERROR_START) { |
||||
|
if (strlen($value) > 0) { |
||||
|
// unexpected |
||||
|
$tokens1[] = new FormulaToken($value, FormulaToken::TOKEN_TYPE_UNKNOWN); |
||||
|
$value = ''; |
||||
|
} |
||||
|
$inError = true; |
||||
|
$value .= self::ERROR_START; |
||||
|
++$index; |
||||
|
|
||||
|
continue; |
||||
|
} |
||||
|
|
||||
|
// mark start and end of arrays and array rows |
||||
|
if ($this->formula[$index] == self::BRACE_OPEN) { |
||||
|
if (strlen($value) > 0) { |
||||
|
// unexpected |
||||
|
$tokens1[] = new FormulaToken($value, FormulaToken::TOKEN_TYPE_UNKNOWN); |
||||
|
$value = ''; |
||||
|
} |
||||
|
|
||||
|
$tmp = new FormulaToken('ARRAY', FormulaToken::TOKEN_TYPE_FUNCTION, FormulaToken::TOKEN_SUBTYPE_START); |
||||
|
$tokens1[] = $tmp; |
||||
|
$stack[] = clone $tmp; |
||||
|
|
||||
|
$tmp = new FormulaToken('ARRAYROW', FormulaToken::TOKEN_TYPE_FUNCTION, FormulaToken::TOKEN_SUBTYPE_START); |
||||
|
$tokens1[] = $tmp; |
||||
|
$stack[] = clone $tmp; |
||||
|
|
||||
|
++$index; |
||||
|
|
||||
|
continue; |
||||
|
} |
||||
|
|
||||
|
if ($this->formula[$index] == self::SEMICOLON) { |
||||
|
if (strlen($value) > 0) { |
||||
|
$tokens1[] = new FormulaToken($value, FormulaToken::TOKEN_TYPE_OPERAND); |
||||
|
$value = ''; |
||||
|
} |
||||
|
|
||||
|
$tmp = array_pop($stack); |
||||
|
$tmp->setValue(''); |
||||
|
$tmp->setTokenSubType(FormulaToken::TOKEN_SUBTYPE_STOP); |
||||
|
$tokens1[] = $tmp; |
||||
|
|
||||
|
$tmp = new FormulaToken(',', FormulaToken::TOKEN_TYPE_ARGUMENT); |
||||
|
$tokens1[] = $tmp; |
||||
|
|
||||
|
$tmp = new FormulaToken('ARRAYROW', FormulaToken::TOKEN_TYPE_FUNCTION, FormulaToken::TOKEN_SUBTYPE_START); |
||||
|
$tokens1[] = $tmp; |
||||
|
$stack[] = clone $tmp; |
||||
|
|
||||
|
++$index; |
||||
|
|
||||
|
continue; |
||||
|
} |
||||
|
|
||||
|
if ($this->formula[$index] == self::BRACE_CLOSE) { |
||||
|
if (strlen($value) > 0) { |
||||
|
$tokens1[] = new FormulaToken($value, FormulaToken::TOKEN_TYPE_OPERAND); |
||||
|
$value = ''; |
||||
|
} |
||||
|
|
||||
|
$tmp = array_pop($stack); |
||||
|
$tmp->setValue(''); |
||||
|
$tmp->setTokenSubType(FormulaToken::TOKEN_SUBTYPE_STOP); |
||||
|
$tokens1[] = $tmp; |
||||
|
|
||||
|
$tmp = array_pop($stack); |
||||
|
$tmp->setValue(''); |
||||
|
$tmp->setTokenSubType(FormulaToken::TOKEN_SUBTYPE_STOP); |
||||
|
$tokens1[] = $tmp; |
||||
|
|
||||
|
++$index; |
||||
|
|
||||
|
continue; |
||||
|
} |
||||
|
|
||||
|
// trim white-space |
||||
|
if ($this->formula[$index] == self::WHITESPACE) { |
||||
|
if (strlen($value) > 0) { |
||||
|
$tokens1[] = new FormulaToken($value, FormulaToken::TOKEN_TYPE_OPERAND); |
||||
|
$value = ''; |
||||
|
} |
||||
|
$tokens1[] = new FormulaToken('', FormulaToken::TOKEN_TYPE_WHITESPACE); |
||||
|
++$index; |
||||
|
while (($this->formula[$index] == self::WHITESPACE) && ($index < $formulaLength)) { |
||||
|
++$index; |
||||
|
} |
||||
|
|
||||
|
continue; |
||||
|
} |
||||
|
|
||||
|
// multi-character comparators |
||||
|
if (($index + 2) <= $formulaLength) { |
||||
|
if (in_array(substr($this->formula, $index, 2), $COMPARATORS_MULTI)) { |
||||
|
if (strlen($value) > 0) { |
||||
|
$tokens1[] = new FormulaToken($value, FormulaToken::TOKEN_TYPE_OPERAND); |
||||
|
$value = ''; |
||||
|
} |
||||
|
$tokens1[] = new FormulaToken(substr($this->formula, $index, 2), FormulaToken::TOKEN_TYPE_OPERATORINFIX, FormulaToken::TOKEN_SUBTYPE_LOGICAL); |
||||
|
$index += 2; |
||||
|
|
||||
|
continue; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
// standard infix operators |
||||
|
if (strpos(self::OPERATORS_INFIX, $this->formula[$index]) !== false) { |
||||
|
if (strlen($value) > 0) { |
||||
|
$tokens1[] = new FormulaToken($value, FormulaToken::TOKEN_TYPE_OPERAND); |
||||
|
$value = ''; |
||||
|
} |
||||
|
$tokens1[] = new FormulaToken($this->formula[$index], FormulaToken::TOKEN_TYPE_OPERATORINFIX); |
||||
|
++$index; |
||||
|
|
||||
|
continue; |
||||
|
} |
||||
|
|
||||
|
// standard postfix operators (only one) |
||||
|
if (strpos(self::OPERATORS_POSTFIX, $this->formula[$index]) !== false) { |
||||
|
if (strlen($value) > 0) { |
||||
|
$tokens1[] = new FormulaToken($value, FormulaToken::TOKEN_TYPE_OPERAND); |
||||
|
$value = ''; |
||||
|
} |
||||
|
$tokens1[] = new FormulaToken($this->formula[$index], FormulaToken::TOKEN_TYPE_OPERATORPOSTFIX); |
||||
|
++$index; |
||||
|
|
||||
|
continue; |
||||
|
} |
||||
|
|
||||
|
// start subexpression or function |
||||
|
if ($this->formula[$index] == self::PAREN_OPEN) { |
||||
|
if (strlen($value) > 0) { |
||||
|
$tmp = new FormulaToken($value, FormulaToken::TOKEN_TYPE_FUNCTION, FormulaToken::TOKEN_SUBTYPE_START); |
||||
|
$tokens1[] = $tmp; |
||||
|
$stack[] = clone $tmp; |
||||
|
$value = ''; |
||||
|
} else { |
||||
|
$tmp = new FormulaToken('', FormulaToken::TOKEN_TYPE_SUBEXPRESSION, FormulaToken::TOKEN_SUBTYPE_START); |
||||
|
$tokens1[] = $tmp; |
||||
|
$stack[] = clone $tmp; |
||||
|
} |
||||
|
++$index; |
||||
|
|
||||
|
continue; |
||||
|
} |
||||
|
|
||||
|
// function, subexpression, or array parameters, or operand unions |
||||
|
if ($this->formula[$index] == self::COMMA) { |
||||
|
if (strlen($value) > 0) { |
||||
|
$tokens1[] = new FormulaToken($value, FormulaToken::TOKEN_TYPE_OPERAND); |
||||
|
$value = ''; |
||||
|
} |
||||
|
|
||||
|
$tmp = array_pop($stack); |
||||
|
$tmp->setValue(''); |
||||
|
$tmp->setTokenSubType(FormulaToken::TOKEN_SUBTYPE_STOP); |
||||
|
$stack[] = $tmp; |
||||
|
|
||||
|
if ($tmp->getTokenType() == FormulaToken::TOKEN_TYPE_FUNCTION) { |
||||
|
$tokens1[] = new FormulaToken(',', FormulaToken::TOKEN_TYPE_OPERATORINFIX, FormulaToken::TOKEN_SUBTYPE_UNION); |
||||
|
} else { |
||||
|
$tokens1[] = new FormulaToken(',', FormulaToken::TOKEN_TYPE_ARGUMENT); |
||||
|
} |
||||
|
++$index; |
||||
|
|
||||
|
continue; |
||||
|
} |
||||
|
|
||||
|
// stop subexpression |
||||
|
if ($this->formula[$index] == self::PAREN_CLOSE) { |
||||
|
if (strlen($value) > 0) { |
||||
|
$tokens1[] = new FormulaToken($value, FormulaToken::TOKEN_TYPE_OPERAND); |
||||
|
$value = ''; |
||||
|
} |
||||
|
|
||||
|
$tmp = array_pop($stack); |
||||
|
$tmp->setValue(''); |
||||
|
$tmp->setTokenSubType(FormulaToken::TOKEN_SUBTYPE_STOP); |
||||
|
$tokens1[] = $tmp; |
||||
|
|
||||
|
++$index; |
||||
|
|
||||
|
continue; |
||||
|
} |
||||
|
|
||||
|
// token accumulation |
||||
|
$value .= $this->formula[$index]; |
||||
|
++$index; |
||||
|
} |
||||
|
|
||||
|
// dump remaining accumulation |
||||
|
if (strlen($value) > 0) { |
||||
|
$tokens1[] = new FormulaToken($value, FormulaToken::TOKEN_TYPE_OPERAND); |
||||
|
} |
||||
|
|
||||
|
// move tokenList to new set, excluding unnecessary white-space tokens and converting necessary ones to intersections |
||||
|
$tokenCount = count($tokens1); |
||||
|
for ($i = 0; $i < $tokenCount; ++$i) { |
||||
|
$token = $tokens1[$i]; |
||||
|
if (isset($tokens1[$i - 1])) { |
||||
|
$previousToken = $tokens1[$i - 1]; |
||||
|
} else { |
||||
|
$previousToken = null; |
||||
|
} |
||||
|
if (isset($tokens1[$i + 1])) { |
||||
|
$nextToken = $tokens1[$i + 1]; |
||||
|
} else { |
||||
|
$nextToken = null; |
||||
|
} |
||||
|
|
||||
|
if ($token === null) { |
||||
|
continue; |
||||
|
} |
||||
|
|
||||
|
if ($token->getTokenType() != FormulaToken::TOKEN_TYPE_WHITESPACE) { |
||||
|
$tokens2[] = $token; |
||||
|
|
||||
|
continue; |
||||
|
} |
||||
|
|
||||
|
if ($previousToken === null) { |
||||
|
continue; |
||||
|
} |
||||
|
|
||||
|
if ( |
||||
|
!( |
||||
|
(($previousToken->getTokenType() == FormulaToken::TOKEN_TYPE_FUNCTION) && ($previousToken->getTokenSubType() == FormulaToken::TOKEN_SUBTYPE_STOP)) || |
||||
|
(($previousToken->getTokenType() == FormulaToken::TOKEN_TYPE_SUBEXPRESSION) && ($previousToken->getTokenSubType() == FormulaToken::TOKEN_SUBTYPE_STOP)) || |
||||
|
($previousToken->getTokenType() == FormulaToken::TOKEN_TYPE_OPERAND) |
||||
|
) |
||||
|
) { |
||||
|
continue; |
||||
|
} |
||||
|
|
||||
|
if ($nextToken === null) { |
||||
|
continue; |
||||
|
} |
||||
|
|
||||
|
if ( |
||||
|
!( |
||||
|
(($nextToken->getTokenType() == FormulaToken::TOKEN_TYPE_FUNCTION) && ($nextToken->getTokenSubType() == FormulaToken::TOKEN_SUBTYPE_START)) || |
||||
|
(($nextToken->getTokenType() == FormulaToken::TOKEN_TYPE_SUBEXPRESSION) && ($nextToken->getTokenSubType() == FormulaToken::TOKEN_SUBTYPE_START)) || |
||||
|
($nextToken->getTokenType() == FormulaToken::TOKEN_TYPE_OPERAND) |
||||
|
) |
||||
|
) { |
||||
|
continue; |
||||
|
} |
||||
|
|
||||
|
$tokens2[] = new FormulaToken($value, FormulaToken::TOKEN_TYPE_OPERATORINFIX, FormulaToken::TOKEN_SUBTYPE_INTERSECTION); |
||||
|
} |
||||
|
|
||||
|
// move tokens to final list, switching infix "-" operators to prefix when appropriate, switching infix "+" operators |
||||
|
// to noop when appropriate, identifying operand and infix-operator subtypes, and pulling "@" from function names |
||||
|
$this->tokens = []; |
||||
|
|
||||
|
$tokenCount = count($tokens2); |
||||
|
for ($i = 0; $i < $tokenCount; ++$i) { |
||||
|
$token = $tokens2[$i]; |
||||
|
if (isset($tokens2[$i - 1])) { |
||||
|
$previousToken = $tokens2[$i - 1]; |
||||
|
} else { |
||||
|
$previousToken = null; |
||||
|
} |
||||
|
if (isset($tokens2[$i + 1])) { |
||||
|
$nextToken = $tokens2[$i + 1]; |
||||
|
} else { |
||||
|
$nextToken = null; |
||||
|
} |
||||
|
|
||||
|
if ($token === null) { |
||||
|
continue; |
||||
|
} |
||||
|
|
||||
|
if ($token->getTokenType() == FormulaToken::TOKEN_TYPE_OPERATORINFIX && $token->getValue() == '-') { |
||||
|
if ($i == 0) { |
||||
|
$token->setTokenType(FormulaToken::TOKEN_TYPE_OPERATORPREFIX); |
||||
|
} elseif ( |
||||
|
(($previousToken->getTokenType() == FormulaToken::TOKEN_TYPE_FUNCTION) && |
||||
|
($previousToken->getTokenSubType() == FormulaToken::TOKEN_SUBTYPE_STOP)) || |
||||
|
(($previousToken->getTokenType() == FormulaToken::TOKEN_TYPE_SUBEXPRESSION) && |
||||
|
($previousToken->getTokenSubType() == FormulaToken::TOKEN_SUBTYPE_STOP)) || |
||||
|
($previousToken->getTokenType() == FormulaToken::TOKEN_TYPE_OPERATORPOSTFIX) || |
||||
|
($previousToken->getTokenType() == FormulaToken::TOKEN_TYPE_OPERAND) |
||||
|
) { |
||||
|
$token->setTokenSubType(FormulaToken::TOKEN_SUBTYPE_MATH); |
||||
|
} else { |
||||
|
$token->setTokenType(FormulaToken::TOKEN_TYPE_OPERATORPREFIX); |
||||
|
} |
||||
|
|
||||
|
$this->tokens[] = $token; |
||||
|
|
||||
|
continue; |
||||
|
} |
||||
|
|
||||
|
if ($token->getTokenType() == FormulaToken::TOKEN_TYPE_OPERATORINFIX && $token->getValue() == '+') { |
||||
|
if ($i == 0) { |
||||
|
continue; |
||||
|
} elseif ( |
||||
|
(($previousToken->getTokenType() == FormulaToken::TOKEN_TYPE_FUNCTION) && |
||||
|
($previousToken->getTokenSubType() == FormulaToken::TOKEN_SUBTYPE_STOP)) || |
||||
|
(($previousToken->getTokenType() == FormulaToken::TOKEN_TYPE_SUBEXPRESSION) && |
||||
|
($previousToken->getTokenSubType() == FormulaToken::TOKEN_SUBTYPE_STOP)) || |
||||
|
($previousToken->getTokenType() == FormulaToken::TOKEN_TYPE_OPERATORPOSTFIX) || |
||||
|
($previousToken->getTokenType() == FormulaToken::TOKEN_TYPE_OPERAND) |
||||
|
) { |
||||
|
$token->setTokenSubType(FormulaToken::TOKEN_SUBTYPE_MATH); |
||||
|
} else { |
||||
|
continue; |
||||
|
} |
||||
|
|
||||
|
$this->tokens[] = $token; |
||||
|
|
||||
|
continue; |
||||
|
} |
||||
|
|
||||
|
if ( |
||||
|
$token->getTokenType() == FormulaToken::TOKEN_TYPE_OPERATORINFIX && |
||||
|
$token->getTokenSubType() == FormulaToken::TOKEN_SUBTYPE_NOTHING |
||||
|
) { |
||||
|
if (strpos('<>=', substr($token->getValue(), 0, 1)) !== false) { |
||||
|
$token->setTokenSubType(FormulaToken::TOKEN_SUBTYPE_LOGICAL); |
||||
|
} elseif ($token->getValue() == '&') { |
||||
|
$token->setTokenSubType(FormulaToken::TOKEN_SUBTYPE_CONCATENATION); |
||||
|
} else { |
||||
|
$token->setTokenSubType(FormulaToken::TOKEN_SUBTYPE_MATH); |
||||
|
} |
||||
|
|
||||
|
$this->tokens[] = $token; |
||||
|
|
||||
|
continue; |
||||
|
} |
||||
|
|
||||
|
if ( |
||||
|
$token->getTokenType() == FormulaToken::TOKEN_TYPE_OPERAND && |
||||
|
$token->getTokenSubType() == FormulaToken::TOKEN_SUBTYPE_NOTHING |
||||
|
) { |
||||
|
if (!is_numeric($token->getValue())) { |
||||
|
if (strtoupper($token->getValue()) == 'TRUE' || strtoupper($token->getValue()) == 'FALSE') { |
||||
|
$token->setTokenSubType(FormulaToken::TOKEN_SUBTYPE_LOGICAL); |
||||
|
} else { |
||||
|
$token->setTokenSubType(FormulaToken::TOKEN_SUBTYPE_RANGE); |
||||
|
} |
||||
|
} else { |
||||
|
$token->setTokenSubType(FormulaToken::TOKEN_SUBTYPE_NUMBER); |
||||
|
} |
||||
|
|
||||
|
$this->tokens[] = $token; |
||||
|
|
||||
|
continue; |
||||
|
} |
||||
|
|
||||
|
if ($token->getTokenType() == FormulaToken::TOKEN_TYPE_FUNCTION) { |
||||
|
if (strlen($token->getValue()) > 0) { |
||||
|
if (substr($token->getValue(), 0, 1) == '@') { |
||||
|
$token->setValue(substr($token->getValue(), 1)); |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
$this->tokens[] = $token; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,150 @@ |
|||||
|
<?php |
||||
|
|
||||
|
namespace PhpOffice\PhpSpreadsheet\Calculation; |
||||
|
|
||||
|
/** |
||||
|
* PARTLY BASED ON: |
||||
|
* Copyright (c) 2007 E. W. Bachtal, Inc. |
||||
|
* |
||||
|
* Permission is hereby granted, free of charge, to any person obtaining a copy of this software |
||||
|
* and associated documentation files (the "Software"), to deal in the Software without restriction, |
||||
|
* including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, |
||||
|
* and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, |
||||
|
* subject to the following conditions: |
||||
|
* |
||||
|
* The above copyright notice and this permission notice shall be included in all copies or substantial |
||||
|
* portions of the Software. |
||||
|
* |
||||
|
* The software is provided "as is", without warranty of any kind, express or implied, including but not |
||||
|
* limited to the warranties of merchantability, fitness for a particular purpose and noninfringement. In |
||||
|
* no event shall the authors or copyright holders be liable for any claim, damages or other liability, |
||||
|
* whether in an action of contract, tort or otherwise, arising from, out of or in connection with the |
||||
|
* software or the use or other dealings in the software. |
||||
|
* |
||||
|
* https://ewbi.blogs.com/develops/2007/03/excel_formula_p.html |
||||
|
* https://ewbi.blogs.com/develops/2004/12/excel_formula_p.html |
||||
|
*/ |
||||
|
class FormulaToken |
||||
|
{ |
||||
|
// Token types |
||||
|
const TOKEN_TYPE_NOOP = 'Noop'; |
||||
|
const TOKEN_TYPE_OPERAND = 'Operand'; |
||||
|
const TOKEN_TYPE_FUNCTION = 'Function'; |
||||
|
const TOKEN_TYPE_SUBEXPRESSION = 'Subexpression'; |
||||
|
const TOKEN_TYPE_ARGUMENT = 'Argument'; |
||||
|
const TOKEN_TYPE_OPERATORPREFIX = 'OperatorPrefix'; |
||||
|
const TOKEN_TYPE_OPERATORINFIX = 'OperatorInfix'; |
||||
|
const TOKEN_TYPE_OPERATORPOSTFIX = 'OperatorPostfix'; |
||||
|
const TOKEN_TYPE_WHITESPACE = 'Whitespace'; |
||||
|
const TOKEN_TYPE_UNKNOWN = 'Unknown'; |
||||
|
|
||||
|
// Token subtypes |
||||
|
const TOKEN_SUBTYPE_NOTHING = 'Nothing'; |
||||
|
const TOKEN_SUBTYPE_START = 'Start'; |
||||
|
const TOKEN_SUBTYPE_STOP = 'Stop'; |
||||
|
const TOKEN_SUBTYPE_TEXT = 'Text'; |
||||
|
const TOKEN_SUBTYPE_NUMBER = 'Number'; |
||||
|
const TOKEN_SUBTYPE_LOGICAL = 'Logical'; |
||||
|
const TOKEN_SUBTYPE_ERROR = 'Error'; |
||||
|
const TOKEN_SUBTYPE_RANGE = 'Range'; |
||||
|
const TOKEN_SUBTYPE_MATH = 'Math'; |
||||
|
const TOKEN_SUBTYPE_CONCATENATION = 'Concatenation'; |
||||
|
const TOKEN_SUBTYPE_INTERSECTION = 'Intersection'; |
||||
|
const TOKEN_SUBTYPE_UNION = 'Union'; |
||||
|
|
||||
|
/** |
||||
|
* Value. |
||||
|
* |
||||
|
* @var string |
||||
|
*/ |
||||
|
private $value; |
||||
|
|
||||
|
/** |
||||
|
* Token Type (represented by TOKEN_TYPE_*). |
||||
|
* |
||||
|
* @var string |
||||
|
*/ |
||||
|
private $tokenType; |
||||
|
|
||||
|
/** |
||||
|
* Token SubType (represented by TOKEN_SUBTYPE_*). |
||||
|
* |
||||
|
* @var string |
||||
|
*/ |
||||
|
private $tokenSubType; |
||||
|
|
||||
|
/** |
||||
|
* Create a new FormulaToken. |
||||
|
* |
||||
|
* @param string $value |
||||
|
* @param string $tokenType Token type (represented by TOKEN_TYPE_*) |
||||
|
* @param string $tokenSubType Token Subtype (represented by TOKEN_SUBTYPE_*) |
||||
|
*/ |
||||
|
public function __construct($value, $tokenType = self::TOKEN_TYPE_UNKNOWN, $tokenSubType = self::TOKEN_SUBTYPE_NOTHING) |
||||
|
{ |
||||
|
// Initialise values |
||||
|
$this->value = $value; |
||||
|
$this->tokenType = $tokenType; |
||||
|
$this->tokenSubType = $tokenSubType; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* Get Value. |
||||
|
* |
||||
|
* @return string |
||||
|
*/ |
||||
|
public function getValue() |
||||
|
{ |
||||
|
return $this->value; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* Set Value. |
||||
|
* |
||||
|
* @param string $value |
||||
|
*/ |
||||
|
public function setValue($value): void |
||||
|
{ |
||||
|
$this->value = $value; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* Get Token Type (represented by TOKEN_TYPE_*). |
||||
|
* |
||||
|
* @return string |
||||
|
*/ |
||||
|
public function getTokenType() |
||||
|
{ |
||||
|
return $this->tokenType; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* Set Token Type (represented by TOKEN_TYPE_*). |
||||
|
* |
||||
|
* @param string $value |
||||
|
*/ |
||||
|
public function setTokenType($value): void |
||||
|
{ |
||||
|
$this->tokenType = $value; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* Get Token SubType (represented by TOKEN_SUBTYPE_*). |
||||
|
* |
||||
|
* @return string |
||||
|
*/ |
||||
|
public function getTokenSubType() |
||||
|
{ |
||||
|
return $this->tokenSubType; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* Set Token SubType (represented by TOKEN_SUBTYPE_*). |
||||
|
* |
||||
|
* @param string $value |
||||
|
*/ |
||||
|
public function setTokenSubType($value): void |
||||
|
{ |
||||
|
$this->tokenSubType = $value; |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,729 @@ |
|||||
|
<?php |
||||
|
|
||||
|
namespace PhpOffice\PhpSpreadsheet\Calculation; |
||||
|
|
||||
|
use PhpOffice\PhpSpreadsheet\Cell\Cell; |
||||
|
use PhpOffice\PhpSpreadsheet\Shared\Date; |
||||
|
use PhpOffice\PhpSpreadsheet\Worksheet\Worksheet; |
||||
|
|
||||
|
class Functions |
||||
|
{ |
||||
|
const PRECISION = 8.88E-016; |
||||
|
|
||||
|
/** |
||||
|
* 2 / PI. |
||||
|
*/ |
||||
|
const M_2DIVPI = 0.63661977236758134307553505349006; |
||||
|
|
||||
|
const COMPATIBILITY_EXCEL = 'Excel'; |
||||
|
const COMPATIBILITY_GNUMERIC = 'Gnumeric'; |
||||
|
const COMPATIBILITY_OPENOFFICE = 'OpenOfficeCalc'; |
||||
|
|
||||
|
/** Use of RETURNDATE_PHP_NUMERIC is discouraged - not 32-bit Y2038-safe, no timezone. */ |
||||
|
const RETURNDATE_PHP_NUMERIC = 'P'; |
||||
|
/** Use of RETURNDATE_UNIX_TIMESTAMP is discouraged - not 32-bit Y2038-safe, no timezone. */ |
||||
|
const RETURNDATE_UNIX_TIMESTAMP = 'P'; |
||||
|
const RETURNDATE_PHP_OBJECT = 'O'; |
||||
|
const RETURNDATE_PHP_DATETIME_OBJECT = 'O'; |
||||
|
const RETURNDATE_EXCEL = 'E'; |
||||
|
|
||||
|
/** |
||||
|
* Compatibility mode to use for error checking and responses. |
||||
|
* |
||||
|
* @var string |
||||
|
*/ |
||||
|
protected static $compatibilityMode = self::COMPATIBILITY_EXCEL; |
||||
|
|
||||
|
/** |
||||
|
* Data Type to use when returning date values. |
||||
|
* |
||||
|
* @var string |
||||
|
*/ |
||||
|
protected static $returnDateType = self::RETURNDATE_EXCEL; |
||||
|
|
||||
|
/** |
||||
|
* List of error codes. |
||||
|
* |
||||
|
* @var array |
||||
|
*/ |
||||
|
protected static $errorCodes = [ |
||||
|
'null' => '#NULL!', |
||||
|
'divisionbyzero' => '#DIV/0!', |
||||
|
'value' => '#VALUE!', |
||||
|
'reference' => '#REF!', |
||||
|
'name' => '#NAME?', |
||||
|
'num' => '#NUM!', |
||||
|
'na' => '#N/A', |
||||
|
'gettingdata' => '#GETTING_DATA', |
||||
|
]; |
||||
|
|
||||
|
/** |
||||
|
* Set the Compatibility Mode. |
||||
|
* |
||||
|
* @param string $compatibilityMode Compatibility Mode |
||||
|
* Permitted values are: |
||||
|
* Functions::COMPATIBILITY_EXCEL 'Excel' |
||||
|
* Functions::COMPATIBILITY_GNUMERIC 'Gnumeric' |
||||
|
* Functions::COMPATIBILITY_OPENOFFICE 'OpenOfficeCalc' |
||||
|
* |
||||
|
* @return bool (Success or Failure) |
||||
|
*/ |
||||
|
public static function setCompatibilityMode($compatibilityMode) |
||||
|
{ |
||||
|
if ( |
||||
|
($compatibilityMode == self::COMPATIBILITY_EXCEL) || |
||||
|
($compatibilityMode == self::COMPATIBILITY_GNUMERIC) || |
||||
|
($compatibilityMode == self::COMPATIBILITY_OPENOFFICE) |
||||
|
) { |
||||
|
self::$compatibilityMode = $compatibilityMode; |
||||
|
|
||||
|
return true; |
||||
|
} |
||||
|
|
||||
|
return false; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* Return the current Compatibility Mode. |
||||
|
* |
||||
|
* @return string Compatibility Mode |
||||
|
* Possible Return values are: |
||||
|
* Functions::COMPATIBILITY_EXCEL 'Excel' |
||||
|
* Functions::COMPATIBILITY_GNUMERIC 'Gnumeric' |
||||
|
* Functions::COMPATIBILITY_OPENOFFICE 'OpenOfficeCalc' |
||||
|
*/ |
||||
|
public static function getCompatibilityMode() |
||||
|
{ |
||||
|
return self::$compatibilityMode; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* Set the Return Date Format used by functions that return a date/time (Excel, PHP Serialized Numeric or PHP Object). |
||||
|
* |
||||
|
* @param string $returnDateType Return Date Format |
||||
|
* Permitted values are: |
||||
|
* Functions::RETURNDATE_UNIX_TIMESTAMP 'P' |
||||
|
* Functions::RETURNDATE_PHP_DATETIME_OBJECT 'O' |
||||
|
* Functions::RETURNDATE_EXCEL 'E' |
||||
|
* |
||||
|
* @return bool Success or failure |
||||
|
*/ |
||||
|
public static function setReturnDateType($returnDateType) |
||||
|
{ |
||||
|
if ( |
||||
|
($returnDateType == self::RETURNDATE_UNIX_TIMESTAMP) || |
||||
|
($returnDateType == self::RETURNDATE_PHP_DATETIME_OBJECT) || |
||||
|
($returnDateType == self::RETURNDATE_EXCEL) |
||||
|
) { |
||||
|
self::$returnDateType = $returnDateType; |
||||
|
|
||||
|
return true; |
||||
|
} |
||||
|
|
||||
|
return false; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* Return the current Return Date Format for functions that return a date/time (Excel, PHP Serialized Numeric or PHP Object). |
||||
|
* |
||||
|
* @return string Return Date Format |
||||
|
* Possible Return values are: |
||||
|
* Functions::RETURNDATE_UNIX_TIMESTAMP 'P' |
||||
|
* Functions::RETURNDATE_PHP_DATETIME_OBJECT 'O' |
||||
|
* Functions::RETURNDATE_EXCEL 'E' |
||||
|
*/ |
||||
|
public static function getReturnDateType() |
||||
|
{ |
||||
|
return self::$returnDateType; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* DUMMY. |
||||
|
* |
||||
|
* @return string #Not Yet Implemented |
||||
|
*/ |
||||
|
public static function DUMMY() |
||||
|
{ |
||||
|
return '#Not Yet Implemented'; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* DIV0. |
||||
|
* |
||||
|
* @return string #Not Yet Implemented |
||||
|
*/ |
||||
|
public static function DIV0() |
||||
|
{ |
||||
|
return self::$errorCodes['divisionbyzero']; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* NA. |
||||
|
* |
||||
|
* Excel Function: |
||||
|
* =NA() |
||||
|
* |
||||
|
* Returns the error value #N/A |
||||
|
* #N/A is the error value that means "no value is available." |
||||
|
* |
||||
|
* @return string #N/A! |
||||
|
*/ |
||||
|
public static function NA() |
||||
|
{ |
||||
|
return self::$errorCodes['na']; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* NaN. |
||||
|
* |
||||
|
* Returns the error value #NUM! |
||||
|
* |
||||
|
* @return string #NUM! |
||||
|
*/ |
||||
|
public static function NAN() |
||||
|
{ |
||||
|
return self::$errorCodes['num']; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* NAME. |
||||
|
* |
||||
|
* Returns the error value #NAME? |
||||
|
* |
||||
|
* @return string #NAME? |
||||
|
*/ |
||||
|
public static function NAME() |
||||
|
{ |
||||
|
return self::$errorCodes['name']; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* REF. |
||||
|
* |
||||
|
* Returns the error value #REF! |
||||
|
* |
||||
|
* @return string #REF! |
||||
|
*/ |
||||
|
public static function REF() |
||||
|
{ |
||||
|
return self::$errorCodes['reference']; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* NULL. |
||||
|
* |
||||
|
* Returns the error value #NULL! |
||||
|
* |
||||
|
* @return string #NULL! |
||||
|
*/ |
||||
|
public static function null() |
||||
|
{ |
||||
|
return self::$errorCodes['null']; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* VALUE. |
||||
|
* |
||||
|
* Returns the error value #VALUE! |
||||
|
* |
||||
|
* @return string #VALUE! |
||||
|
*/ |
||||
|
public static function VALUE() |
||||
|
{ |
||||
|
return self::$errorCodes['value']; |
||||
|
} |
||||
|
|
||||
|
public static function isMatrixValue($idx) |
||||
|
{ |
||||
|
return (substr_count($idx, '.') <= 1) || (preg_match('/\.[A-Z]/', $idx) > 0); |
||||
|
} |
||||
|
|
||||
|
public static function isValue($idx) |
||||
|
{ |
||||
|
return substr_count($idx, '.') == 0; |
||||
|
} |
||||
|
|
||||
|
public static function isCellValue($idx) |
||||
|
{ |
||||
|
return substr_count($idx, '.') > 1; |
||||
|
} |
||||
|
|
||||
|
public static function ifCondition($condition) |
||||
|
{ |
||||
|
$condition = self::flattenSingleValue($condition); |
||||
|
|
||||
|
if ($condition === '') { |
||||
|
return '=""'; |
||||
|
} |
||||
|
if (!is_string($condition) || !in_array($condition[0], ['>', '<', '='])) { |
||||
|
$condition = self::operandSpecialHandling($condition); |
||||
|
if (is_bool($condition)) { |
||||
|
return '=' . ($condition ? 'TRUE' : 'FALSE'); |
||||
|
} elseif (!is_numeric($condition)) { |
||||
|
$condition = Calculation::wrapResult(strtoupper($condition)); |
||||
|
} |
||||
|
|
||||
|
return str_replace('""""', '""', '=' . $condition); |
||||
|
} |
||||
|
preg_match('/(=|<[>=]?|>=?)(.*)/', $condition, $matches); |
||||
|
[, $operator, $operand] = $matches; |
||||
|
|
||||
|
$operand = self::operandSpecialHandling($operand); |
||||
|
if (is_numeric(trim($operand, '"'))) { |
||||
|
$operand = trim($operand, '"'); |
||||
|
} elseif (!is_numeric($operand) && $operand !== 'FALSE' && $operand !== 'TRUE') { |
||||
|
$operand = str_replace('"', '""', $operand); |
||||
|
$operand = Calculation::wrapResult(strtoupper($operand)); |
||||
|
} |
||||
|
|
||||
|
return str_replace('""""', '""', $operator . $operand); |
||||
|
} |
||||
|
|
||||
|
private static function operandSpecialHandling($operand) |
||||
|
{ |
||||
|
if (is_numeric($operand) || is_bool($operand)) { |
||||
|
return $operand; |
||||
|
} elseif (strtoupper($operand) === Calculation::getTRUE() || strtoupper($operand) === Calculation::getFALSE()) { |
||||
|
return strtoupper($operand); |
||||
|
} |
||||
|
|
||||
|
// Check for percentage |
||||
|
if (preg_match('/^\-?\d*\.?\d*\s?\%$/', $operand)) { |
||||
|
return ((float) rtrim($operand, '%')) / 100; |
||||
|
} |
||||
|
|
||||
|
// Check for dates |
||||
|
if (($dateValueOperand = Date::stringToExcel($operand)) !== false) { |
||||
|
return $dateValueOperand; |
||||
|
} |
||||
|
|
||||
|
return $operand; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* ERROR_TYPE. |
||||
|
* |
||||
|
* @param mixed $value Value to check |
||||
|
* |
||||
|
* @return int|string |
||||
|
*/ |
||||
|
public static function errorType($value = '') |
||||
|
{ |
||||
|
$value = self::flattenSingleValue($value); |
||||
|
|
||||
|
$i = 1; |
||||
|
foreach (self::$errorCodes as $errorCode) { |
||||
|
if ($value === $errorCode) { |
||||
|
return $i; |
||||
|
} |
||||
|
++$i; |
||||
|
} |
||||
|
|
||||
|
return self::NA(); |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* IS_BLANK. |
||||
|
* |
||||
|
* @param mixed $value Value to check |
||||
|
* |
||||
|
* @return bool |
||||
|
*/ |
||||
|
public static function isBlank($value = null) |
||||
|
{ |
||||
|
if ($value !== null) { |
||||
|
$value = self::flattenSingleValue($value); |
||||
|
} |
||||
|
|
||||
|
return $value === null; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* IS_ERR. |
||||
|
* |
||||
|
* @param mixed $value Value to check |
||||
|
* |
||||
|
* @return bool |
||||
|
*/ |
||||
|
public static function isErr($value = '') |
||||
|
{ |
||||
|
$value = self::flattenSingleValue($value); |
||||
|
|
||||
|
return self::isError($value) && (!self::isNa(($value))); |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* IS_ERROR. |
||||
|
* |
||||
|
* @param mixed $value Value to check |
||||
|
* |
||||
|
* @return bool |
||||
|
*/ |
||||
|
public static function isError($value = '') |
||||
|
{ |
||||
|
$value = self::flattenSingleValue($value); |
||||
|
|
||||
|
if (!is_string($value)) { |
||||
|
return false; |
||||
|
} |
||||
|
|
||||
|
return in_array($value, self::$errorCodes); |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* IS_NA. |
||||
|
* |
||||
|
* @param mixed $value Value to check |
||||
|
* |
||||
|
* @return bool |
||||
|
*/ |
||||
|
public static function isNa($value = '') |
||||
|
{ |
||||
|
$value = self::flattenSingleValue($value); |
||||
|
|
||||
|
return $value === self::NA(); |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* IS_EVEN. |
||||
|
* |
||||
|
* @param mixed $value Value to check |
||||
|
* |
||||
|
* @return bool|string |
||||
|
*/ |
||||
|
public static function isEven($value = null) |
||||
|
{ |
||||
|
$value = self::flattenSingleValue($value); |
||||
|
|
||||
|
if ($value === null) { |
||||
|
return self::NAME(); |
||||
|
} elseif ((is_bool($value)) || ((is_string($value)) && (!is_numeric($value)))) { |
||||
|
return self::VALUE(); |
||||
|
} |
||||
|
|
||||
|
return $value % 2 == 0; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* IS_ODD. |
||||
|
* |
||||
|
* @param mixed $value Value to check |
||||
|
* |
||||
|
* @return bool|string |
||||
|
*/ |
||||
|
public static function isOdd($value = null) |
||||
|
{ |
||||
|
$value = self::flattenSingleValue($value); |
||||
|
|
||||
|
if ($value === null) { |
||||
|
return self::NAME(); |
||||
|
} elseif ((is_bool($value)) || ((is_string($value)) && (!is_numeric($value)))) { |
||||
|
return self::VALUE(); |
||||
|
} |
||||
|
|
||||
|
return abs($value) % 2 == 1; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* IS_NUMBER. |
||||
|
* |
||||
|
* @param mixed $value Value to check |
||||
|
* |
||||
|
* @return bool |
||||
|
*/ |
||||
|
public static function isNumber($value = null) |
||||
|
{ |
||||
|
$value = self::flattenSingleValue($value); |
||||
|
|
||||
|
if (is_string($value)) { |
||||
|
return false; |
||||
|
} |
||||
|
|
||||
|
return is_numeric($value); |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* IS_LOGICAL. |
||||
|
* |
||||
|
* @param mixed $value Value to check |
||||
|
* |
||||
|
* @return bool |
||||
|
*/ |
||||
|
public static function isLogical($value = null) |
||||
|
{ |
||||
|
$value = self::flattenSingleValue($value); |
||||
|
|
||||
|
return is_bool($value); |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* IS_TEXT. |
||||
|
* |
||||
|
* @param mixed $value Value to check |
||||
|
* |
||||
|
* @return bool |
||||
|
*/ |
||||
|
public static function isText($value = null) |
||||
|
{ |
||||
|
$value = self::flattenSingleValue($value); |
||||
|
|
||||
|
return is_string($value) && !self::isError($value); |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* IS_NONTEXT. |
||||
|
* |
||||
|
* @param mixed $value Value to check |
||||
|
* |
||||
|
* @return bool |
||||
|
*/ |
||||
|
public static function isNonText($value = null) |
||||
|
{ |
||||
|
return !self::isText($value); |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* N. |
||||
|
* |
||||
|
* Returns a value converted to a number |
||||
|
* |
||||
|
* @param null|mixed $value The value you want converted |
||||
|
* |
||||
|
* @return number N converts values listed in the following table |
||||
|
* If value is or refers to N returns |
||||
|
* A number That number |
||||
|
* A date The serial number of that date |
||||
|
* TRUE 1 |
||||
|
* FALSE 0 |
||||
|
* An error value The error value |
||||
|
* Anything else 0 |
||||
|
*/ |
||||
|
public static function n($value = null) |
||||
|
{ |
||||
|
while (is_array($value)) { |
||||
|
$value = array_shift($value); |
||||
|
} |
||||
|
|
||||
|
switch (gettype($value)) { |
||||
|
case 'double': |
||||
|
case 'float': |
||||
|
case 'integer': |
||||
|
return $value; |
||||
|
case 'boolean': |
||||
|
return (int) $value; |
||||
|
case 'string': |
||||
|
// Errors |
||||
|
if ((strlen($value) > 0) && ($value[0] == '#')) { |
||||
|
return $value; |
||||
|
} |
||||
|
|
||||
|
break; |
||||
|
} |
||||
|
|
||||
|
return 0; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* TYPE. |
||||
|
* |
||||
|
* Returns a number that identifies the type of a value |
||||
|
* |
||||
|
* @param null|mixed $value The value you want tested |
||||
|
* |
||||
|
* @return number N converts values listed in the following table |
||||
|
* If value is or refers to N returns |
||||
|
* A number 1 |
||||
|
* Text 2 |
||||
|
* Logical Value 4 |
||||
|
* An error value 16 |
||||
|
* Array or Matrix 64 |
||||
|
*/ |
||||
|
public static function TYPE($value = null) |
||||
|
{ |
||||
|
$value = self::flattenArrayIndexed($value); |
||||
|
if (is_array($value) && (count($value) > 1)) { |
||||
|
end($value); |
||||
|
$a = key($value); |
||||
|
// Range of cells is an error |
||||
|
if (self::isCellValue($a)) { |
||||
|
return 16; |
||||
|
// Test for Matrix |
||||
|
} elseif (self::isMatrixValue($a)) { |
||||
|
return 64; |
||||
|
} |
||||
|
} elseif (empty($value)) { |
||||
|
// Empty Cell |
||||
|
return 1; |
||||
|
} |
||||
|
$value = self::flattenSingleValue($value); |
||||
|
|
||||
|
if (($value === null) || (is_float($value)) || (is_int($value))) { |
||||
|
return 1; |
||||
|
} elseif (is_bool($value)) { |
||||
|
return 4; |
||||
|
} elseif (is_array($value)) { |
||||
|
return 64; |
||||
|
} elseif (is_string($value)) { |
||||
|
// Errors |
||||
|
if ((strlen($value) > 0) && ($value[0] == '#')) { |
||||
|
return 16; |
||||
|
} |
||||
|
|
||||
|
return 2; |
||||
|
} |
||||
|
|
||||
|
return 0; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* Convert a multi-dimensional array to a simple 1-dimensional array. |
||||
|
* |
||||
|
* @param array|mixed $array Array to be flattened |
||||
|
* |
||||
|
* @return array Flattened array |
||||
|
*/ |
||||
|
public static function flattenArray($array) |
||||
|
{ |
||||
|
if (!is_array($array)) { |
||||
|
return (array) $array; |
||||
|
} |
||||
|
|
||||
|
$arrayValues = []; |
||||
|
foreach ($array as $value) { |
||||
|
if (is_array($value)) { |
||||
|
foreach ($value as $val) { |
||||
|
if (is_array($val)) { |
||||
|
foreach ($val as $v) { |
||||
|
$arrayValues[] = $v; |
||||
|
} |
||||
|
} else { |
||||
|
$arrayValues[] = $val; |
||||
|
} |
||||
|
} |
||||
|
} else { |
||||
|
$arrayValues[] = $value; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
return $arrayValues; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* @param mixed $value |
||||
|
* |
||||
|
* @return null|mixed |
||||
|
*/ |
||||
|
public static function scalar($value) |
||||
|
{ |
||||
|
if (!is_array($value)) { |
||||
|
return $value; |
||||
|
} |
||||
|
|
||||
|
do { |
||||
|
$value = array_pop($value); |
||||
|
} while (is_array($value)); |
||||
|
|
||||
|
return $value; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* Convert a multi-dimensional array to a simple 1-dimensional array, but retain an element of indexing. |
||||
|
* |
||||
|
* @param array|mixed $array Array to be flattened |
||||
|
* |
||||
|
* @return array Flattened array |
||||
|
*/ |
||||
|
public static function flattenArrayIndexed($array) |
||||
|
{ |
||||
|
if (!is_array($array)) { |
||||
|
return (array) $array; |
||||
|
} |
||||
|
|
||||
|
$arrayValues = []; |
||||
|
foreach ($array as $k1 => $value) { |
||||
|
if (is_array($value)) { |
||||
|
foreach ($value as $k2 => $val) { |
||||
|
if (is_array($val)) { |
||||
|
foreach ($val as $k3 => $v) { |
||||
|
$arrayValues[$k1 . '.' . $k2 . '.' . $k3] = $v; |
||||
|
} |
||||
|
} else { |
||||
|
$arrayValues[$k1 . '.' . $k2] = $val; |
||||
|
} |
||||
|
} |
||||
|
} else { |
||||
|
$arrayValues[$k1] = $value; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
return $arrayValues; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* Convert an array to a single scalar value by extracting the first element. |
||||
|
* |
||||
|
* @param mixed $value Array or scalar value |
||||
|
* |
||||
|
* @return mixed |
||||
|
*/ |
||||
|
public static function flattenSingleValue($value = '') |
||||
|
{ |
||||
|
while (is_array($value)) { |
||||
|
$value = array_shift($value); |
||||
|
} |
||||
|
|
||||
|
return $value; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* ISFORMULA. |
||||
|
* |
||||
|
* @param mixed $cellReference The cell to check |
||||
|
* @param ?Cell $cell The current cell (containing this formula) |
||||
|
* |
||||
|
* @return bool|string |
||||
|
*/ |
||||
|
public static function isFormula($cellReference = '', ?Cell $cell = null) |
||||
|
{ |
||||
|
if ($cell === null) { |
||||
|
return self::REF(); |
||||
|
} |
||||
|
$cellReference = self::expandDefinedName((string) $cellReference, $cell); |
||||
|
$cellReference = self::trimTrailingRange($cellReference); |
||||
|
|
||||
|
preg_match('/^' . Calculation::CALCULATION_REGEXP_CELLREF . '$/i', $cellReference, $matches); |
||||
|
|
||||
|
$cellReference = $matches[6] . $matches[7]; |
||||
|
$worksheetName = str_replace("''", "'", trim($matches[2], "'")); |
||||
|
|
||||
|
$worksheet = (!empty($worksheetName)) |
||||
|
? $cell->getWorksheet()->getParent()->getSheetByName($worksheetName) |
||||
|
: $cell->getWorksheet(); |
||||
|
|
||||
|
return $worksheet->getCell($cellReference)->isFormula(); |
||||
|
} |
||||
|
|
||||
|
public static function expandDefinedName(string $coordinate, Cell $cell): string |
||||
|
{ |
||||
|
$worksheet = $cell->getWorksheet(); |
||||
|
$spreadsheet = $worksheet->getParent(); |
||||
|
// Uppercase coordinate |
||||
|
$pCoordinatex = strtoupper($coordinate); |
||||
|
// Eliminate leading equal sign |
||||
|
$pCoordinatex = Worksheet::pregReplace('/^=/', '', $pCoordinatex); |
||||
|
$defined = $spreadsheet->getDefinedName($pCoordinatex, $worksheet); |
||||
|
if ($defined !== null) { |
||||
|
$worksheet2 = $defined->getWorkSheet(); |
||||
|
if (!$defined->isFormula() && $worksheet2 !== null) { |
||||
|
$coordinate = "'" . $worksheet2->getTitle() . "'!" . Worksheet::pregReplace('/^=/', '', $defined->getValue()); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
return $coordinate; |
||||
|
} |
||||
|
|
||||
|
public static function trimTrailingRange(string $coordinate): string |
||||
|
{ |
||||
|
return Worksheet::pregReplace('/:[\\w\$]+$/', '', $coordinate); |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,11 @@ |
|||||
|
<?php |
||||
|
|
||||
|
namespace PhpOffice\PhpSpreadsheet\Calculation\Internal; |
||||
|
|
||||
|
class MakeMatrix |
||||
|
{ |
||||
|
public static function make(...$args): array |
||||
|
{ |
||||
|
return $args; |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,314 @@ |
|||||
|
<?php |
||||
|
|
||||
|
namespace PhpOffice\PhpSpreadsheet\Calculation; |
||||
|
|
||||
|
use PhpOffice\PhpSpreadsheet\Calculation\Logical\Boolean; |
||||
|
|
||||
|
/** |
||||
|
* @deprecated 1.17.0 |
||||
|
*/ |
||||
|
class Logical |
||||
|
{ |
||||
|
/** |
||||
|
* TRUE. |
||||
|
* |
||||
|
* Returns the boolean TRUE. |
||||
|
* |
||||
|
* Excel Function: |
||||
|
* =TRUE() |
||||
|
* |
||||
|
* @Deprecated 1.17.0 |
||||
|
* |
||||
|
* @see Logical\Boolean::TRUE() |
||||
|
* Use the TRUE() method in the Logical\Boolean class instead |
||||
|
* |
||||
|
* @return bool True |
||||
|
*/ |
||||
|
public static function true(): bool |
||||
|
{ |
||||
|
return Boolean::true(); |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* FALSE. |
||||
|
* |
||||
|
* Returns the boolean FALSE. |
||||
|
* |
||||
|
* Excel Function: |
||||
|
* =FALSE() |
||||
|
* |
||||
|
* @Deprecated 1.17.0 |
||||
|
* |
||||
|
* @see Logical\Boolean::FALSE() |
||||
|
* Use the FALSE() method in the Logical\Boolean class instead |
||||
|
* |
||||
|
* @return bool False |
||||
|
*/ |
||||
|
public static function false(): bool |
||||
|
{ |
||||
|
return Boolean::false(); |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* LOGICAL_AND. |
||||
|
* |
||||
|
* Returns boolean TRUE if all its arguments are TRUE; returns FALSE if one or more argument is FALSE. |
||||
|
* |
||||
|
* Excel Function: |
||||
|
* =AND(logical1[,logical2[, ...]]) |
||||
|
* |
||||
|
* The arguments must evaluate to logical values such as TRUE or FALSE, or the arguments must be arrays |
||||
|
* or references that contain logical values. |
||||
|
* |
||||
|
* Boolean arguments are treated as True or False as appropriate |
||||
|
* Integer or floating point arguments are treated as True, except for 0 or 0.0 which are False |
||||
|
* If any argument value is a string, or a Null, the function returns a #VALUE! error, unless the string |
||||
|
* holds the value TRUE or FALSE, in which case it is evaluated as the corresponding boolean value |
||||
|
* |
||||
|
* @Deprecated 1.17.0 |
||||
|
* |
||||
|
* @see Logical\Operations::logicalAnd() |
||||
|
* Use the logicalAnd() method in the Logical\Operations class instead |
||||
|
* |
||||
|
* @param mixed ...$args Data values |
||||
|
* |
||||
|
* @return bool|string the logical AND of the arguments |
||||
|
*/ |
||||
|
public static function logicalAnd(...$args) |
||||
|
{ |
||||
|
return Logical\Operations::logicalAnd(...$args); |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* LOGICAL_OR. |
||||
|
* |
||||
|
* Returns boolean TRUE if any argument is TRUE; returns FALSE if all arguments are FALSE. |
||||
|
* |
||||
|
* Excel Function: |
||||
|
* =OR(logical1[,logical2[, ...]]) |
||||
|
* |
||||
|
* The arguments must evaluate to logical values such as TRUE or FALSE, or the arguments must be arrays |
||||
|
* or references that contain logical values. |
||||
|
* |
||||
|
* Boolean arguments are treated as True or False as appropriate |
||||
|
* Integer or floating point arguments are treated as True, except for 0 or 0.0 which are False |
||||
|
* If any argument value is a string, or a Null, the function returns a #VALUE! error, unless the string |
||||
|
* holds the value TRUE or FALSE, in which case it is evaluated as the corresponding boolean value |
||||
|
* |
||||
|
* @Deprecated 1.17.0 |
||||
|
* |
||||
|
* @see Logical\Operations::logicalOr() |
||||
|
* Use the logicalOr() method in the Logical\Operations class instead |
||||
|
* |
||||
|
* @param mixed $args Data values |
||||
|
* |
||||
|
* @return bool|string the logical OR of the arguments |
||||
|
*/ |
||||
|
public static function logicalOr(...$args) |
||||
|
{ |
||||
|
return Logical\Operations::logicalOr(...$args); |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* LOGICAL_XOR. |
||||
|
* |
||||
|
* Returns the Exclusive Or logical operation for one or more supplied conditions. |
||||
|
* i.e. the Xor function returns TRUE if an odd number of the supplied conditions evaluate to TRUE, |
||||
|
* and FALSE otherwise. |
||||
|
* |
||||
|
* Excel Function: |
||||
|
* =XOR(logical1[,logical2[, ...]]) |
||||
|
* |
||||
|
* The arguments must evaluate to logical values such as TRUE or FALSE, or the arguments must be arrays |
||||
|
* or references that contain logical values. |
||||
|
* |
||||
|
* Boolean arguments are treated as True or False as appropriate |
||||
|
* Integer or floating point arguments are treated as True, except for 0 or 0.0 which are False |
||||
|
* If any argument value is a string, or a Null, the function returns a #VALUE! error, unless the string |
||||
|
* holds the value TRUE or FALSE, in which case it is evaluated as the corresponding boolean value |
||||
|
* |
||||
|
* @Deprecated 1.17.0 |
||||
|
* |
||||
|
* @see Logical\Operations::logicalXor() |
||||
|
* Use the logicalXor() method in the Logical\Operations class instead |
||||
|
* |
||||
|
* @param mixed $args Data values |
||||
|
* |
||||
|
* @return bool|string the logical XOR of the arguments |
||||
|
*/ |
||||
|
public static function logicalXor(...$args) |
||||
|
{ |
||||
|
return Logical\Operations::logicalXor(...$args); |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* NOT. |
||||
|
* |
||||
|
* Returns the boolean inverse of the argument. |
||||
|
* |
||||
|
* Excel Function: |
||||
|
* =NOT(logical) |
||||
|
* |
||||
|
* The argument must evaluate to a logical value such as TRUE or FALSE |
||||
|
* |
||||
|
* Boolean arguments are treated as True or False as appropriate |
||||
|
* Integer or floating point arguments are treated as True, except for 0 or 0.0 which are False |
||||
|
* If any argument value is a string, or a Null, the function returns a #VALUE! error, unless the string |
||||
|
* holds the value TRUE or FALSE, in which case it is evaluated as the corresponding boolean value |
||||
|
* |
||||
|
* @Deprecated 1.17.0 |
||||
|
* |
||||
|
* @see Logical\Operations::NOT() |
||||
|
* Use the NOT() method in the Logical\Operations class instead |
||||
|
* |
||||
|
* @param mixed $logical A value or expression that can be evaluated to TRUE or FALSE |
||||
|
* |
||||
|
* @return array|bool|string the boolean inverse of the argument |
||||
|
*/ |
||||
|
public static function NOT($logical = false) |
||||
|
{ |
||||
|
return Logical\Operations::NOT($logical); |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* STATEMENT_IF. |
||||
|
* |
||||
|
* Returns one value if a condition you specify evaluates to TRUE and another value if it evaluates to FALSE. |
||||
|
* |
||||
|
* Excel Function: |
||||
|
* =IF(condition[,returnIfTrue[,returnIfFalse]]) |
||||
|
* |
||||
|
* Condition is any value or expression that can be evaluated to TRUE or FALSE. |
||||
|
* For example, A10=100 is a logical expression; if the value in cell A10 is equal to 100, |
||||
|
* the expression evaluates to TRUE. Otherwise, the expression evaluates to FALSE. |
||||
|
* This argument can use any comparison calculation operator. |
||||
|
* ReturnIfTrue is the value that is returned if condition evaluates to TRUE. |
||||
|
* For example, if this argument is the text string "Within budget" and the condition argument |
||||
|
* evaluates to TRUE, then the IF function returns the text "Within budget" |
||||
|
* If condition is TRUE and ReturnIfTrue is blank, this argument returns 0 (zero). |
||||
|
* To display the word TRUE, use the logical value TRUE for this argument. |
||||
|
* ReturnIfTrue can be another formula. |
||||
|
* ReturnIfFalse is the value that is returned if condition evaluates to FALSE. |
||||
|
* For example, if this argument is the text string "Over budget" and the condition argument |
||||
|
* evaluates to FALSE, then the IF function returns the text "Over budget". |
||||
|
* If condition is FALSE and ReturnIfFalse is omitted, then the logical value FALSE is returned. |
||||
|
* If condition is FALSE and ReturnIfFalse is blank, then the value 0 (zero) is returned. |
||||
|
* ReturnIfFalse can be another formula. |
||||
|
* |
||||
|
* @Deprecated 1.17.0 |
||||
|
* |
||||
|
* @see Logical\Conditional::statementIf() |
||||
|
* Use the statementIf() method in the Logical\Conditional class instead |
||||
|
* |
||||
|
* @param mixed $condition Condition to evaluate |
||||
|
* @param mixed $returnIfTrue Value to return when condition is true |
||||
|
* @param mixed $returnIfFalse Optional value to return when condition is false |
||||
|
* |
||||
|
* @return mixed The value of returnIfTrue or returnIfFalse determined by condition |
||||
|
*/ |
||||
|
public static function statementIf($condition = true, $returnIfTrue = 0, $returnIfFalse = false) |
||||
|
{ |
||||
|
return Logical\Conditional::statementIf($condition, $returnIfTrue, $returnIfFalse); |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* STATEMENT_SWITCH. |
||||
|
* |
||||
|
* Returns corresponding with first match (any data type such as a string, numeric, date, etc). |
||||
|
* |
||||
|
* Excel Function: |
||||
|
* =SWITCH (expression, value1, result1, value2, result2, ... value_n, result_n [, default]) |
||||
|
* |
||||
|
* Expression |
||||
|
* The expression to compare to a list of values. |
||||
|
* value1, value2, ... value_n |
||||
|
* A list of values that are compared to expression. |
||||
|
* The SWITCH function is looking for the first value that matches the expression. |
||||
|
* result1, result2, ... result_n |
||||
|
* A list of results. The SWITCH function returns the corresponding result when a value |
||||
|
* matches expression. |
||||
|
* default |
||||
|
* Optional. It is the default to return if expression does not match any of the values |
||||
|
* (value1, value2, ... value_n). |
||||
|
* |
||||
|
* @Deprecated 1.17.0 |
||||
|
* |
||||
|
* @see Logical\Conditional::statementSwitch() |
||||
|
* Use the statementSwitch() method in the Logical\Conditional class instead |
||||
|
* |
||||
|
* @param mixed $arguments Statement arguments |
||||
|
* |
||||
|
* @return mixed The value of matched expression |
||||
|
*/ |
||||
|
public static function statementSwitch(...$arguments) |
||||
|
{ |
||||
|
return Logical\Conditional::statementSwitch(...$arguments); |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* IFERROR. |
||||
|
* |
||||
|
* Excel Function: |
||||
|
* =IFERROR(testValue,errorpart) |
||||
|
* |
||||
|
* @Deprecated 1.17.0 |
||||
|
* |
||||
|
* @see Logical\Conditional::IFERROR() |
||||
|
* Use the IFERROR() method in the Logical\Conditional class instead |
||||
|
* |
||||
|
* @param mixed $testValue Value to check, is also the value returned when no error |
||||
|
* @param mixed $errorpart Value to return when testValue is an error condition |
||||
|
* |
||||
|
* @return mixed The value of errorpart or testValue determined by error condition |
||||
|
*/ |
||||
|
public static function IFERROR($testValue = '', $errorpart = '') |
||||
|
{ |
||||
|
return Logical\Conditional::IFERROR($testValue, $errorpart); |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* IFNA. |
||||
|
* |
||||
|
* Excel Function: |
||||
|
* =IFNA(testValue,napart) |
||||
|
* |
||||
|
* @Deprecated 1.17.0 |
||||
|
* |
||||
|
* @see Logical\Conditional::IFNA() |
||||
|
* Use the IFNA() method in the Logical\Conditional class instead |
||||
|
* |
||||
|
* @param mixed $testValue Value to check, is also the value returned when not an NA |
||||
|
* @param mixed $napart Value to return when testValue is an NA condition |
||||
|
* |
||||
|
* @return mixed The value of errorpart or testValue determined by error condition |
||||
|
*/ |
||||
|
public static function IFNA($testValue = '', $napart = '') |
||||
|
{ |
||||
|
return Logical\Conditional::IFNA($testValue, $napart); |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* IFS. |
||||
|
* |
||||
|
* Excel Function: |
||||
|
* =IFS(testValue1;returnIfTrue1;testValue2;returnIfTrue2;...;testValue_n;returnIfTrue_n) |
||||
|
* |
||||
|
* testValue1 ... testValue_n |
||||
|
* Conditions to Evaluate |
||||
|
* returnIfTrue1 ... returnIfTrue_n |
||||
|
* Value returned if corresponding testValue (nth) was true |
||||
|
* |
||||
|
* @Deprecated 1.17.0 |
||||
|
* |
||||
|
* @see Logical\Conditional::IFS() |
||||
|
* Use the IFS() method in the Logical\Conditional class instead |
||||
|
* |
||||
|
* @param mixed ...$arguments Statement arguments |
||||
|
* |
||||
|
* @return mixed|string The value of returnIfTrue_n, if testValue_n was true. #N/A if none of testValues was true |
||||
|
*/ |
||||
|
public static function IFS(...$arguments) |
||||
|
{ |
||||
|
return Logical\Conditional::IFS(...$arguments); |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,206 @@ |
|||||
|
<?php |
||||
|
|
||||
|
namespace PhpOffice\PhpSpreadsheet\Calculation\Logical; |
||||
|
|
||||
|
use PhpOffice\PhpSpreadsheet\Calculation\ArrayEnabled; |
||||
|
use PhpOffice\PhpSpreadsheet\Calculation\Calculation; |
||||
|
use PhpOffice\PhpSpreadsheet\Calculation\Functions; |
||||
|
|
||||
|
class Operations |
||||
|
{ |
||||
|
use ArrayEnabled; |
||||
|
|
||||
|
/** |
||||
|
* LOGICAL_AND. |
||||
|
* |
||||
|
* Returns boolean TRUE if all its arguments are TRUE; returns FALSE if one or more argument is FALSE. |
||||
|
* |
||||
|
* Excel Function: |
||||
|
* =AND(logical1[,logical2[, ...]]) |
||||
|
* |
||||
|
* The arguments must evaluate to logical values such as TRUE or FALSE, or the arguments must be arrays |
||||
|
* or references that contain logical values. |
||||
|
* |
||||
|
* Boolean arguments are treated as True or False as appropriate |
||||
|
* Integer or floating point arguments are treated as True, except for 0 or 0.0 which are False |
||||
|
* If any argument value is a string, or a Null, the function returns a #VALUE! error, unless the string |
||||
|
* holds the value TRUE or FALSE, in which case it is evaluated as the corresponding boolean value |
||||
|
* |
||||
|
* @param mixed ...$args Data values |
||||
|
* |
||||
|
* @return bool|string the logical AND of the arguments |
||||
|
*/ |
||||
|
public static function logicalAnd(...$args) |
||||
|
{ |
||||
|
$args = Functions::flattenArray($args); |
||||
|
|
||||
|
if (count($args) == 0) { |
||||
|
return Functions::VALUE(); |
||||
|
} |
||||
|
|
||||
|
$args = array_filter($args, function ($value) { |
||||
|
return $value !== null || (is_string($value) && trim($value) == ''); |
||||
|
}); |
||||
|
|
||||
|
$returnValue = self::countTrueValues($args); |
||||
|
if (is_string($returnValue)) { |
||||
|
return $returnValue; |
||||
|
} |
||||
|
$argCount = count($args); |
||||
|
|
||||
|
return ($returnValue > 0) && ($returnValue == $argCount); |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* LOGICAL_OR. |
||||
|
* |
||||
|
* Returns boolean TRUE if any argument is TRUE; returns FALSE if all arguments are FALSE. |
||||
|
* |
||||
|
* Excel Function: |
||||
|
* =OR(logical1[,logical2[, ...]]) |
||||
|
* |
||||
|
* The arguments must evaluate to logical values such as TRUE or FALSE, or the arguments must be arrays |
||||
|
* or references that contain logical values. |
||||
|
* |
||||
|
* Boolean arguments are treated as True or False as appropriate |
||||
|
* Integer or floating point arguments are treated as True, except for 0 or 0.0 which are False |
||||
|
* If any argument value is a string, or a Null, the function returns a #VALUE! error, unless the string |
||||
|
* holds the value TRUE or FALSE, in which case it is evaluated as the corresponding boolean value |
||||
|
* |
||||
|
* @param mixed $args Data values |
||||
|
* |
||||
|
* @return bool|string the logical OR of the arguments |
||||
|
*/ |
||||
|
public static function logicalOr(...$args) |
||||
|
{ |
||||
|
$args = Functions::flattenArray($args); |
||||
|
|
||||
|
if (count($args) == 0) { |
||||
|
return Functions::VALUE(); |
||||
|
} |
||||
|
|
||||
|
$args = array_filter($args, function ($value) { |
||||
|
return $value !== null || (is_string($value) && trim($value) == ''); |
||||
|
}); |
||||
|
|
||||
|
$returnValue = self::countTrueValues($args); |
||||
|
if (is_string($returnValue)) { |
||||
|
return $returnValue; |
||||
|
} |
||||
|
|
||||
|
return $returnValue > 0; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* LOGICAL_XOR. |
||||
|
* |
||||
|
* Returns the Exclusive Or logical operation for one or more supplied conditions. |
||||
|
* i.e. the Xor function returns TRUE if an odd number of the supplied conditions evaluate to TRUE, |
||||
|
* and FALSE otherwise. |
||||
|
* |
||||
|
* Excel Function: |
||||
|
* =XOR(logical1[,logical2[, ...]]) |
||||
|
* |
||||
|
* The arguments must evaluate to logical values such as TRUE or FALSE, or the arguments must be arrays |
||||
|
* or references that contain logical values. |
||||
|
* |
||||
|
* Boolean arguments are treated as True or False as appropriate |
||||
|
* Integer or floating point arguments are treated as True, except for 0 or 0.0 which are False |
||||
|
* If any argument value is a string, or a Null, the function returns a #VALUE! error, unless the string |
||||
|
* holds the value TRUE or FALSE, in which case it is evaluated as the corresponding boolean value |
||||
|
* |
||||
|
* @param mixed $args Data values |
||||
|
* |
||||
|
* @return bool|string the logical XOR of the arguments |
||||
|
*/ |
||||
|
public static function logicalXor(...$args) |
||||
|
{ |
||||
|
$args = Functions::flattenArray($args); |
||||
|
|
||||
|
if (count($args) == 0) { |
||||
|
return Functions::VALUE(); |
||||
|
} |
||||
|
|
||||
|
$args = array_filter($args, function ($value) { |
||||
|
return $value !== null || (is_string($value) && trim($value) == ''); |
||||
|
}); |
||||
|
|
||||
|
$returnValue = self::countTrueValues($args); |
||||
|
if (is_string($returnValue)) { |
||||
|
return $returnValue; |
||||
|
} |
||||
|
|
||||
|
return $returnValue % 2 == 1; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* NOT. |
||||
|
* |
||||
|
* Returns the boolean inverse of the argument. |
||||
|
* |
||||
|
* Excel Function: |
||||
|
* =NOT(logical) |
||||
|
* |
||||
|
* The argument must evaluate to a logical value such as TRUE or FALSE |
||||
|
* |
||||
|
* Boolean arguments are treated as True or False as appropriate |
||||
|
* Integer or floating point arguments are treated as True, except for 0 or 0.0 which are False |
||||
|
* If any argument value is a string, or a Null, the function returns a #VALUE! error, unless the string |
||||
|
* holds the value TRUE or FALSE, in which case it is evaluated as the corresponding boolean value |
||||
|
* |
||||
|
* @param mixed $logical A value or expression that can be evaluated to TRUE or FALSE |
||||
|
* Or can be an array of values |
||||
|
* |
||||
|
* @return array|bool|string the boolean inverse of the argument |
||||
|
* If an array of values is passed as an argument, then the returned result will also be an array |
||||
|
* with the same dimensions |
||||
|
*/ |
||||
|
public static function NOT($logical = false) |
||||
|
{ |
||||
|
if (is_array($logical)) { |
||||
|
return self::evaluateSingleArgumentArray([self::class, __FUNCTION__], $logical); |
||||
|
} |
||||
|
|
||||
|
if (is_string($logical)) { |
||||
|
$logical = mb_strtoupper($logical, 'UTF-8'); |
||||
|
if (($logical == 'TRUE') || ($logical == Calculation::getTRUE())) { |
||||
|
return false; |
||||
|
} elseif (($logical == 'FALSE') || ($logical == Calculation::getFALSE())) { |
||||
|
return true; |
||||
|
} |
||||
|
|
||||
|
return Functions::VALUE(); |
||||
|
} |
||||
|
|
||||
|
return !$logical; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* @return int|string |
||||
|
*/ |
||||
|
private static function countTrueValues(array $args) |
||||
|
{ |
||||
|
$trueValueCount = 0; |
||||
|
|
||||
|
foreach ($args as $arg) { |
||||
|
// Is it a boolean value? |
||||
|
if (is_bool($arg)) { |
||||
|
$trueValueCount += $arg; |
||||
|
} elseif ((is_numeric($arg)) && (!is_string($arg))) { |
||||
|
$trueValueCount += ((int) $arg != 0); |
||||
|
} elseif (is_string($arg)) { |
||||
|
$arg = mb_strtoupper($arg, 'UTF-8'); |
||||
|
if (($arg == 'TRUE') || ($arg == Calculation::getTRUE())) { |
||||
|
$arg = true; |
||||
|
} elseif (($arg == 'FALSE') || ($arg == Calculation::getFALSE())) { |
||||
|
$arg = false; |
||||
|
} else { |
||||
|
return Functions::VALUE(); |
||||
|
} |
||||
|
$trueValueCount += ($arg != 0); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
return $trueValueCount; |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,416 @@ |
|||||
|
<?php |
||||
|
|
||||
|
namespace PhpOffice\PhpSpreadsheet\Calculation; |
||||
|
|
||||
|
use PhpOffice\PhpSpreadsheet\Calculation\LookupRef\Address; |
||||
|
use PhpOffice\PhpSpreadsheet\Calculation\LookupRef\HLookup; |
||||
|
use PhpOffice\PhpSpreadsheet\Calculation\LookupRef\Indirect; |
||||
|
use PhpOffice\PhpSpreadsheet\Calculation\LookupRef\Lookup; |
||||
|
use PhpOffice\PhpSpreadsheet\Calculation\LookupRef\Matrix; |
||||
|
use PhpOffice\PhpSpreadsheet\Calculation\LookupRef\Offset; |
||||
|
use PhpOffice\PhpSpreadsheet\Calculation\LookupRef\RowColumnInformation; |
||||
|
use PhpOffice\PhpSpreadsheet\Calculation\LookupRef\VLookup; |
||||
|
use PhpOffice\PhpSpreadsheet\Cell\Cell; |
||||
|
use PhpOffice\PhpSpreadsheet\Worksheet\Worksheet; |
||||
|
|
||||
|
/** |
||||
|
* @deprecated 1.18.0 |
||||
|
*/ |
||||
|
class LookupRef |
||||
|
{ |
||||
|
/** |
||||
|
* CELL_ADDRESS. |
||||
|
* |
||||
|
* Creates a cell address as text, given specified row and column numbers. |
||||
|
* |
||||
|
* Excel Function: |
||||
|
* =ADDRESS(row, column, [relativity], [referenceStyle], [sheetText]) |
||||
|
* |
||||
|
* @Deprecated 1.18.0 |
||||
|
* |
||||
|
* @see LookupRef\Address::cell() |
||||
|
* Use the cell() method in the LookupRef\Address class instead |
||||
|
* |
||||
|
* @param mixed $row Row number to use in the cell reference |
||||
|
* @param mixed $column Column number to use in the cell reference |
||||
|
* @param int $relativity Flag indicating the type of reference to return |
||||
|
* 1 or omitted Absolute |
||||
|
* 2 Absolute row; relative column |
||||
|
* 3 Relative row; absolute column |
||||
|
* 4 Relative |
||||
|
* @param bool $referenceStyle A logical value that specifies the A1 or R1C1 reference style. |
||||
|
* TRUE or omitted CELL_ADDRESS returns an A1-style reference |
||||
|
* FALSE CELL_ADDRESS returns an R1C1-style reference |
||||
|
* @param string $sheetText Optional Name of worksheet to use |
||||
|
* |
||||
|
* @return string |
||||
|
*/ |
||||
|
public static function cellAddress($row, $column, $relativity = 1, $referenceStyle = true, $sheetText = '') |
||||
|
{ |
||||
|
return Address::cell($row, $column, $relativity, $referenceStyle, $sheetText); |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* COLUMN. |
||||
|
* |
||||
|
* Returns the column number of the given cell reference |
||||
|
* If the cell reference is a range of cells, COLUMN returns the column numbers of each column |
||||
|
* in the reference as a horizontal array. |
||||
|
* If cell reference is omitted, and the function is being called through the calculation engine, |
||||
|
* then it is assumed to be the reference of the cell in which the COLUMN function appears; |
||||
|
* otherwise this function returns 1. |
||||
|
* |
||||
|
* Excel Function: |
||||
|
* =COLUMN([cellAddress]) |
||||
|
* |
||||
|
* @Deprecated 1.18.0 |
||||
|
* |
||||
|
* @see LookupRef\RowColumnInformation::COLUMN() |
||||
|
* Use the COLUMN() method in the LookupRef\RowColumnInformation class instead |
||||
|
* |
||||
|
* @param null|array|string $cellAddress A reference to a range of cells for which you want the column numbers |
||||
|
* |
||||
|
* @return int|int[]|string |
||||
|
*/ |
||||
|
public static function COLUMN($cellAddress = null, ?Cell $cell = null) |
||||
|
{ |
||||
|
return RowColumnInformation::COLUMN($cellAddress, $cell); |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* COLUMNS. |
||||
|
* |
||||
|
* Returns the number of columns in an array or reference. |
||||
|
* |
||||
|
* Excel Function: |
||||
|
* =COLUMNS(cellAddress) |
||||
|
* |
||||
|
* @Deprecated 1.18.0 |
||||
|
* |
||||
|
* @see LookupRef\RowColumnInformation::COLUMNS() |
||||
|
* Use the COLUMNS() method in the LookupRef\RowColumnInformation class instead |
||||
|
* |
||||
|
* @param null|array|string $cellAddress An array or array formula, or a reference to a range of cells |
||||
|
* for which you want the number of columns |
||||
|
* |
||||
|
* @return int|string The number of columns in cellAddress, or a string if arguments are invalid |
||||
|
*/ |
||||
|
public static function COLUMNS($cellAddress = null) |
||||
|
{ |
||||
|
return RowColumnInformation::COLUMNS($cellAddress); |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* ROW. |
||||
|
* |
||||
|
* Returns the row number of the given cell reference |
||||
|
* If the cell reference is a range of cells, ROW returns the row numbers of each row in the reference |
||||
|
* as a vertical array. |
||||
|
* If cell reference is omitted, and the function is being called through the calculation engine, |
||||
|
* then it is assumed to be the reference of the cell in which the ROW function appears; |
||||
|
* otherwise this function returns 1. |
||||
|
* |
||||
|
* Excel Function: |
||||
|
* =ROW([cellAddress]) |
||||
|
* |
||||
|
* @Deprecated 1.18.0 |
||||
|
* |
||||
|
* @see LookupRef\RowColumnInformation::ROW() |
||||
|
* Use the ROW() method in the LookupRef\RowColumnInformation class instead |
||||
|
* |
||||
|
* @param null|array|string $cellAddress A reference to a range of cells for which you want the row numbers |
||||
|
* |
||||
|
* @return int|mixed[]|string |
||||
|
*/ |
||||
|
public static function ROW($cellAddress = null, ?Cell $cell = null) |
||||
|
{ |
||||
|
return RowColumnInformation::ROW($cellAddress, $cell); |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* ROWS. |
||||
|
* |
||||
|
* Returns the number of rows in an array or reference. |
||||
|
* |
||||
|
* Excel Function: |
||||
|
* =ROWS(cellAddress) |
||||
|
* |
||||
|
* @Deprecated 1.18.0 |
||||
|
* |
||||
|
* @see LookupRef\RowColumnInformation::ROWS() |
||||
|
* Use the ROWS() method in the LookupRef\RowColumnInformation class instead |
||||
|
* |
||||
|
* @param null|array|string $cellAddress An array or array formula, or a reference to a range of cells |
||||
|
* for which you want the number of rows |
||||
|
* |
||||
|
* @return int|string The number of rows in cellAddress, or a string if arguments are invalid |
||||
|
*/ |
||||
|
public static function ROWS($cellAddress = null) |
||||
|
{ |
||||
|
return RowColumnInformation::ROWS($cellAddress); |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* HYPERLINK. |
||||
|
* |
||||
|
* Excel Function: |
||||
|
* =HYPERLINK(linkURL,displayName) |
||||
|
* |
||||
|
* @Deprecated 1.18.0 |
||||
|
* |
||||
|
* @param mixed $linkURL Expect string. Value to check, is also the value returned when no error |
||||
|
* @param mixed $displayName Expect string. Value to return when testValue is an error condition |
||||
|
* @param Cell $cell The cell to set the hyperlink in |
||||
|
* |
||||
|
* @return string The value of $displayName (or $linkURL if $displayName was blank) |
||||
|
* |
||||
|
*@see LookupRef\Hyperlink::set() |
||||
|
* Use the set() method in the LookupRef\Hyperlink class instead |
||||
|
*/ |
||||
|
public static function HYPERLINK($linkURL = '', $displayName = null, ?Cell $cell = null) |
||||
|
{ |
||||
|
return LookupRef\Hyperlink::set($linkURL, $displayName, $cell); |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* INDIRECT. |
||||
|
* |
||||
|
* Returns the reference specified by a text string. |
||||
|
* References are immediately evaluated to display their contents. |
||||
|
* |
||||
|
* Excel Function: |
||||
|
* =INDIRECT(cellAddress) |
||||
|
* |
||||
|
* @Deprecated 1.18.0 |
||||
|
* |
||||
|
* @param array|string $cellAddress $cellAddress The cell address of the current cell (containing this formula) |
||||
|
* @param Cell $cell The current cell (containing this formula) |
||||
|
* |
||||
|
* @return array|string An array containing a cell or range of cells, or a string on error |
||||
|
* |
||||
|
*@see LookupRef\Indirect::INDIRECT() |
||||
|
* Use the INDIRECT() method in the LookupRef\Indirect class instead |
||||
|
* |
||||
|
* NOTE - INDIRECT() does not yet support the optional a1 parameter introduced in Excel 2010 |
||||
|
*/ |
||||
|
public static function INDIRECT($cellAddress, Cell $cell) |
||||
|
{ |
||||
|
return Indirect::INDIRECT($cellAddress, true, $cell); |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* OFFSET. |
||||
|
* |
||||
|
* Returns a reference to a range that is a specified number of rows and columns from a cell or range of cells. |
||||
|
* The reference that is returned can be a single cell or a range of cells. You can specify the number of rows and |
||||
|
* the number of columns to be returned. |
||||
|
* |
||||
|
* Excel Function: |
||||
|
* =OFFSET(cellAddress, rows, cols, [height], [width]) |
||||
|
* |
||||
|
* @Deprecated 1.18.0 |
||||
|
* |
||||
|
* @see LookupRef\Offset::OFFSET() |
||||
|
* Use the OFFSET() method in the LookupRef\Offset class instead |
||||
|
* |
||||
|
* @param null|string $cellAddress The reference from which you want to base the offset. |
||||
|
* Reference must refer to a cell or range of adjacent cells; |
||||
|
* otherwise, OFFSET returns the #VALUE! error value. |
||||
|
* @param mixed $rows The number of rows, up or down, that you want the upper-left cell to refer to. |
||||
|
* Using 5 as the rows argument specifies that the upper-left cell in the |
||||
|
* reference is five rows below reference. Rows can be positive (which means |
||||
|
* below the starting reference) or negative (which means above the starting |
||||
|
* reference). |
||||
|
* @param mixed $columns The number of columns, to the left or right, that you want the upper-left cell |
||||
|
* of the result to refer to. Using 5 as the cols argument specifies that the |
||||
|
* upper-left cell in the reference is five columns to the right of reference. |
||||
|
* Cols can be positive (which means to the right of the starting reference) |
||||
|
* or negative (which means to the left of the starting reference). |
||||
|
* @param mixed $height The height, in number of rows, that you want the returned reference to be. |
||||
|
* Height must be a positive number. |
||||
|
* @param mixed $width The width, in number of columns, that you want the returned reference to be. |
||||
|
* Width must be a positive number. |
||||
|
* |
||||
|
* @return array|string An array containing a cell or range of cells, or a string on error |
||||
|
*/ |
||||
|
public static function OFFSET($cellAddress = null, $rows = 0, $columns = 0, $height = null, $width = null, ?Cell $cell = null) |
||||
|
{ |
||||
|
return Offset::OFFSET($cellAddress, $rows, $columns, $height, $width, $cell); |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* CHOOSE. |
||||
|
* |
||||
|
* Uses lookup_value to return a value from the list of value arguments. |
||||
|
* Use CHOOSE to select one of up to 254 values based on the lookup_value. |
||||
|
* |
||||
|
* Excel Function: |
||||
|
* =CHOOSE(index_num, value1, [value2], ...) |
||||
|
* |
||||
|
* @Deprecated 1.18.0 |
||||
|
* |
||||
|
* @see LookupRef\Selection::choose() |
||||
|
* Use the choose() method in the LookupRef\Selection class instead |
||||
|
* |
||||
|
* @return mixed The selected value |
||||
|
*/ |
||||
|
public static function CHOOSE(...$chooseArgs) |
||||
|
{ |
||||
|
return LookupRef\Selection::choose(...$chooseArgs); |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* MATCH. |
||||
|
* |
||||
|
* The MATCH function searches for a specified item in a range of cells |
||||
|
* |
||||
|
* Excel Function: |
||||
|
* =MATCH(lookup_value, lookup_array, [match_type]) |
||||
|
* |
||||
|
* @Deprecated 1.18.0 |
||||
|
* |
||||
|
* @see LookupRef\ExcelMatch::MATCH() |
||||
|
* Use the MATCH() method in the LookupRef\ExcelMatch class instead |
||||
|
* |
||||
|
* @param mixed $lookupValue The value that you want to match in lookup_array |
||||
|
* @param mixed $lookupArray The range of cells being searched |
||||
|
* @param mixed $matchType The number -1, 0, or 1. -1 means above, 0 means exact match, 1 means below. |
||||
|
* If match_type is 1 or -1, the list has to be ordered. |
||||
|
* |
||||
|
* @return int|string The relative position of the found item |
||||
|
*/ |
||||
|
public static function MATCH($lookupValue, $lookupArray, $matchType = 1) |
||||
|
{ |
||||
|
return LookupRef\ExcelMatch::MATCH($lookupValue, $lookupArray, $matchType); |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* INDEX. |
||||
|
* |
||||
|
* Uses an index to choose a value from a reference or array |
||||
|
* |
||||
|
* Excel Function: |
||||
|
* =INDEX(range_array, row_num, [column_num]) |
||||
|
* |
||||
|
* @Deprecated 1.18.0 |
||||
|
* |
||||
|
* @see LookupRef\Matrix::index() |
||||
|
* Use the index() method in the LookupRef\Matrix class instead |
||||
|
* |
||||
|
* @param mixed $rowNum The row in the array or range from which to return a value. |
||||
|
* If row_num is omitted, column_num is required. |
||||
|
* @param mixed $columnNum The column in the array or range from which to return a value. |
||||
|
* If column_num is omitted, row_num is required. |
||||
|
* @param mixed $matrix |
||||
|
* |
||||
|
* @return mixed the value of a specified cell or array of cells |
||||
|
*/ |
||||
|
public static function INDEX($matrix, $rowNum = 0, $columnNum = 0) |
||||
|
{ |
||||
|
return Matrix::index($matrix, $rowNum, $columnNum); |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* TRANSPOSE. |
||||
|
* |
||||
|
* @Deprecated 1.18.0 |
||||
|
* |
||||
|
* @see LookupRef\Matrix::transpose() |
||||
|
* Use the transpose() method in the LookupRef\Matrix class instead |
||||
|
* |
||||
|
* @param array $matrixData A matrix of values |
||||
|
* |
||||
|
* @return array |
||||
|
* |
||||
|
* Unlike the Excel TRANSPOSE function, which will only work on a single row or column, |
||||
|
* this function will transpose a full matrix |
||||
|
*/ |
||||
|
public static function TRANSPOSE($matrixData) |
||||
|
{ |
||||
|
return Matrix::transpose($matrixData); |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* VLOOKUP |
||||
|
* The VLOOKUP function searches for value in the left-most column of lookup_array and returns the value |
||||
|
* in the same row based on the index_number. |
||||
|
* |
||||
|
* @Deprecated 1.18.0 |
||||
|
* |
||||
|
* @see LookupRef\VLookup::lookup() |
||||
|
* Use the lookup() method in the LookupRef\VLookup class instead |
||||
|
* |
||||
|
* @param mixed $lookup_value The value that you want to match in lookup_array |
||||
|
* @param mixed $lookup_array The range of cells being searched |
||||
|
* @param mixed $index_number The column number in table_array from which the matching value must be returned. |
||||
|
* The first column is 1. |
||||
|
* @param mixed $not_exact_match determines if you are looking for an exact match based on lookup_value |
||||
|
* |
||||
|
* @return mixed The value of the found cell |
||||
|
*/ |
||||
|
public static function VLOOKUP($lookup_value, $lookup_array, $index_number, $not_exact_match = true) |
||||
|
{ |
||||
|
return VLookup::lookup($lookup_value, $lookup_array, $index_number, $not_exact_match); |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* HLOOKUP |
||||
|
* The HLOOKUP function searches for value in the top-most row of lookup_array and returns the value |
||||
|
* in the same column based on the index_number. |
||||
|
* |
||||
|
* @Deprecated 1.18.0 |
||||
|
* |
||||
|
* @see LookupRef\HLookup::lookup() |
||||
|
* Use the lookup() method in the LookupRef\HLookup class instead |
||||
|
* |
||||
|
* @param mixed $lookup_value The value that you want to match in lookup_array |
||||
|
* @param mixed $lookup_array The range of cells being searched |
||||
|
* @param mixed $index_number The row number in table_array from which the matching value must be returned. |
||||
|
* The first row is 1. |
||||
|
* @param mixed $not_exact_match determines if you are looking for an exact match based on lookup_value |
||||
|
* |
||||
|
* @return mixed The value of the found cell |
||||
|
*/ |
||||
|
public static function HLOOKUP($lookup_value, $lookup_array, $index_number, $not_exact_match = true) |
||||
|
{ |
||||
|
return HLookup::lookup($lookup_value, $lookup_array, $index_number, $not_exact_match); |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* LOOKUP |
||||
|
* The LOOKUP function searches for value either from a one-row or one-column range or from an array. |
||||
|
* |
||||
|
* @Deprecated 1.18.0 |
||||
|
* |
||||
|
* @see LookupRef\Lookup::lookup() |
||||
|
* Use the lookup() method in the LookupRef\Lookup class instead |
||||
|
* |
||||
|
* @param mixed $lookup_value The value that you want to match in lookup_array |
||||
|
* @param mixed $lookup_vector The range of cells being searched |
||||
|
* @param null|mixed $result_vector The column from which the matching value must be returned |
||||
|
* |
||||
|
* @return mixed The value of the found cell |
||||
|
*/ |
||||
|
public static function LOOKUP($lookup_value, $lookup_vector, $result_vector = null) |
||||
|
{ |
||||
|
return Lookup::lookup($lookup_value, $lookup_vector, $result_vector); |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* FORMULATEXT. |
||||
|
* |
||||
|
* @Deprecated 1.18.0 |
||||
|
* |
||||
|
* @param mixed $cellReference The cell to check |
||||
|
* @param Cell $cell The current cell (containing this formula) |
||||
|
* |
||||
|
* @return string |
||||
|
* |
||||
|
*@see LookupRef\Formula::text() |
||||
|
* Use the text() method in the LookupRef\Formula class instead |
||||
|
*/ |
||||
|
public static function FORMULATEXT($cellReference = '', ?Cell $cell = null) |
||||
|
{ |
||||
|
return LookupRef\Formula::text($cellReference, $cell); |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,198 @@ |
|||||
|
<?php |
||||
|
|
||||
|
namespace PhpOffice\PhpSpreadsheet\Calculation\LookupRef; |
||||
|
|
||||
|
use PhpOffice\PhpSpreadsheet\Calculation\Exception; |
||||
|
use PhpOffice\PhpSpreadsheet\Calculation\Functions; |
||||
|
use PhpOffice\PhpSpreadsheet\Calculation\Internal\WildcardMatch; |
||||
|
use PhpOffice\PhpSpreadsheet\Shared\StringHelper; |
||||
|
|
||||
|
class ExcelMatch |
||||
|
{ |
||||
|
public const MATCHTYPE_SMALLEST_VALUE = -1; |
||||
|
public const MATCHTYPE_FIRST_VALUE = 0; |
||||
|
public const MATCHTYPE_LARGEST_VALUE = 1; |
||||
|
|
||||
|
/** |
||||
|
* MATCH. |
||||
|
* |
||||
|
* The MATCH function searches for a specified item in a range of cells |
||||
|
* |
||||
|
* Excel Function: |
||||
|
* =MATCH(lookup_value, lookup_array, [match_type]) |
||||
|
* |
||||
|
* @param mixed $lookupValue The value that you want to match in lookup_array |
||||
|
* @param mixed $lookupArray The range of cells being searched |
||||
|
* @param mixed $matchType The number -1, 0, or 1. -1 means above, 0 means exact match, 1 means below. |
||||
|
* If match_type is 1 or -1, the list has to be ordered. |
||||
|
* |
||||
|
* @return int|string The relative position of the found item |
||||
|
*/ |
||||
|
public static function MATCH($lookupValue, $lookupArray, $matchType = self::MATCHTYPE_LARGEST_VALUE) |
||||
|
{ |
||||
|
$lookupArray = Functions::flattenArray($lookupArray); |
||||
|
$lookupValue = Functions::flattenSingleValue($lookupValue); |
||||
|
$matchType = ($matchType === null) |
||||
|
? self::MATCHTYPE_LARGEST_VALUE |
||||
|
: (int) Functions::flattenSingleValue($matchType); |
||||
|
|
||||
|
try { |
||||
|
// Input validation |
||||
|
self::validateLookupValue($lookupValue); |
||||
|
self::validateMatchType($matchType); |
||||
|
self::validateLookupArray($lookupArray); |
||||
|
|
||||
|
$keySet = array_keys($lookupArray); |
||||
|
if ($matchType == self::MATCHTYPE_LARGEST_VALUE) { |
||||
|
// If match_type is 1 the list has to be processed from last to first |
||||
|
$lookupArray = array_reverse($lookupArray); |
||||
|
$keySet = array_reverse($keySet); |
||||
|
} |
||||
|
|
||||
|
$lookupArray = self::prepareLookupArray($lookupArray, $matchType); |
||||
|
} catch (Exception $e) { |
||||
|
return $e->getMessage(); |
||||
|
} |
||||
|
|
||||
|
// MATCH() is not case sensitive, so we convert lookup value to be lower cased if it's a string type. |
||||
|
if (is_string($lookupValue)) { |
||||
|
$lookupValue = StringHelper::strToLower($lookupValue); |
||||
|
} |
||||
|
|
||||
|
$valueKey = null; |
||||
|
switch ($matchType) { |
||||
|
case self::MATCHTYPE_LARGEST_VALUE: |
||||
|
$valueKey = self::matchLargestValue($lookupArray, $lookupValue, $keySet); |
||||
|
|
||||
|
break; |
||||
|
case self::MATCHTYPE_FIRST_VALUE: |
||||
|
$valueKey = self::matchFirstValue($lookupArray, $lookupValue); |
||||
|
|
||||
|
break; |
||||
|
case self::MATCHTYPE_SMALLEST_VALUE: |
||||
|
default: |
||||
|
$valueKey = self::matchSmallestValue($lookupArray, $lookupValue); |
||||
|
} |
||||
|
|
||||
|
if ($valueKey !== null) { |
||||
|
return ++$valueKey; |
||||
|
} |
||||
|
|
||||
|
// Unsuccessful in finding a match, return #N/A error value |
||||
|
return Functions::NA(); |
||||
|
} |
||||
|
|
||||
|
private static function matchFirstValue($lookupArray, $lookupValue) |
||||
|
{ |
||||
|
$wildcardLookup = ((bool) preg_match('/([\?\*])/', $lookupValue)); |
||||
|
$wildcard = WildcardMatch::wildcard($lookupValue); |
||||
|
|
||||
|
foreach ($lookupArray as $i => $lookupArrayValue) { |
||||
|
$typeMatch = ((gettype($lookupValue) === gettype($lookupArrayValue)) || |
||||
|
(is_numeric($lookupValue) && is_numeric($lookupArrayValue))); |
||||
|
|
||||
|
if ( |
||||
|
$typeMatch && is_string($lookupValue) && |
||||
|
$wildcardLookup && WildcardMatch::compare($lookupArrayValue, $wildcard) |
||||
|
) { |
||||
|
// wildcard match |
||||
|
return $i; |
||||
|
} elseif ($lookupArrayValue === $lookupValue) { |
||||
|
// exact match |
||||
|
return $i; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
return null; |
||||
|
} |
||||
|
|
||||
|
private static function matchLargestValue($lookupArray, $lookupValue, $keySet) |
||||
|
{ |
||||
|
foreach ($lookupArray as $i => $lookupArrayValue) { |
||||
|
$typeMatch = ((gettype($lookupValue) === gettype($lookupArrayValue)) || |
||||
|
(is_numeric($lookupValue) && is_numeric($lookupArrayValue))); |
||||
|
|
||||
|
if ($typeMatch && ($lookupArrayValue <= $lookupValue)) { |
||||
|
return array_search($i, $keySet); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
return null; |
||||
|
} |
||||
|
|
||||
|
private static function matchSmallestValue($lookupArray, $lookupValue) |
||||
|
{ |
||||
|
$valueKey = null; |
||||
|
|
||||
|
// The basic algorithm is: |
||||
|
// Iterate and keep the highest match until the next element is smaller than the searched value. |
||||
|
// Return immediately if perfect match is found |
||||
|
foreach ($lookupArray as $i => $lookupArrayValue) { |
||||
|
$typeMatch = gettype($lookupValue) === gettype($lookupArrayValue); |
||||
|
|
||||
|
if ($lookupArrayValue === $lookupValue) { |
||||
|
// Another "special" case. If a perfect match is found, |
||||
|
// the algorithm gives up immediately |
||||
|
return $i; |
||||
|
} elseif ($typeMatch && $lookupArrayValue >= $lookupValue) { |
||||
|
$valueKey = $i; |
||||
|
} elseif ($typeMatch && $lookupArrayValue < $lookupValue) { |
||||
|
//Excel algorithm gives up immediately if the first element is smaller than the searched value |
||||
|
break; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
return $valueKey; |
||||
|
} |
||||
|
|
||||
|
private static function validateLookupValue($lookupValue): void |
||||
|
{ |
||||
|
// Lookup_value type has to be number, text, or logical values |
||||
|
if ((!is_numeric($lookupValue)) && (!is_string($lookupValue)) && (!is_bool($lookupValue))) { |
||||
|
throw new Exception(Functions::NA()); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
private static function validateMatchType($matchType): void |
||||
|
{ |
||||
|
// Match_type is 0, 1 or -1 |
||||
|
if ( |
||||
|
($matchType !== self::MATCHTYPE_FIRST_VALUE) && |
||||
|
($matchType !== self::MATCHTYPE_LARGEST_VALUE) && ($matchType !== self::MATCHTYPE_SMALLEST_VALUE) |
||||
|
) { |
||||
|
throw new Exception(Functions::NA()); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
private static function validateLookupArray($lookupArray): void |
||||
|
{ |
||||
|
// Lookup_array should not be empty |
||||
|
$lookupArraySize = count($lookupArray); |
||||
|
if ($lookupArraySize <= 0) { |
||||
|
throw new Exception(Functions::NA()); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
private static function prepareLookupArray($lookupArray, $matchType) |
||||
|
{ |
||||
|
// Lookup_array should contain only number, text, or logical values, or empty (null) cells |
||||
|
foreach ($lookupArray as $i => $value) { |
||||
|
// check the type of the value |
||||
|
if ((!is_numeric($value)) && (!is_string($value)) && (!is_bool($value)) && ($value !== null)) { |
||||
|
throw new Exception(Functions::NA()); |
||||
|
} |
||||
|
// Convert strings to lowercase for case-insensitive testing |
||||
|
if (is_string($value)) { |
||||
|
$lookupArray[$i] = StringHelper::strToLower($value); |
||||
|
} |
||||
|
if ( |
||||
|
($value === null) && |
||||
|
(($matchType == self::MATCHTYPE_LARGEST_VALUE) || ($matchType == self::MATCHTYPE_SMALLEST_VALUE)) |
||||
|
) { |
||||
|
unset($lookupArray[$i]); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
return $lookupArray; |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,43 @@ |
|||||
|
<?php |
||||
|
|
||||
|
namespace PhpOffice\PhpSpreadsheet\Calculation\LookupRef; |
||||
|
|
||||
|
use PhpOffice\PhpSpreadsheet\Calculation\Calculation; |
||||
|
use PhpOffice\PhpSpreadsheet\Calculation\Functions; |
||||
|
use PhpOffice\PhpSpreadsheet\Cell\Cell; |
||||
|
|
||||
|
class Formula |
||||
|
{ |
||||
|
/** |
||||
|
* FORMULATEXT. |
||||
|
* |
||||
|
* @param mixed $cellReference The cell to check |
||||
|
* @param Cell $cell The current cell (containing this formula) |
||||
|
* |
||||
|
* @return string |
||||
|
*/ |
||||
|
public static function text($cellReference = '', ?Cell $cell = null) |
||||
|
{ |
||||
|
if ($cell === null) { |
||||
|
return Functions::REF(); |
||||
|
} |
||||
|
|
||||
|
preg_match('/^' . Calculation::CALCULATION_REGEXP_CELLREF . '$/i', $cellReference, $matches); |
||||
|
|
||||
|
$cellReference = $matches[6] . $matches[7]; |
||||
|
$worksheetName = trim($matches[3], "'"); |
||||
|
$worksheet = (!empty($worksheetName)) |
||||
|
? $cell->getWorksheet()->getParent()->getSheetByName($worksheetName) |
||||
|
: $cell->getWorksheet(); |
||||
|
|
||||
|
if ( |
||||
|
$worksheet === null || |
||||
|
!$worksheet->cellExists($cellReference) || |
||||
|
!$worksheet->getCell($cellReference)->isFormula() |
||||
|
) { |
||||
|
return Functions::NA(); |
||||
|
} |
||||
|
|
||||
|
return $worksheet->getCell($cellReference)->getValue(); |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,116 @@ |
|||||
|
<?php |
||||
|
|
||||
|
namespace PhpOffice\PhpSpreadsheet\Calculation\LookupRef; |
||||
|
|
||||
|
use PhpOffice\PhpSpreadsheet\Calculation\Exception; |
||||
|
use PhpOffice\PhpSpreadsheet\Calculation\Functions; |
||||
|
use PhpOffice\PhpSpreadsheet\Cell\Coordinate; |
||||
|
use PhpOffice\PhpSpreadsheet\Shared\StringHelper; |
||||
|
|
||||
|
class HLookup extends LookupBase |
||||
|
{ |
||||
|
/** |
||||
|
* HLOOKUP |
||||
|
* The HLOOKUP function searches for value in the top-most row of lookup_array and returns the value |
||||
|
* in the same column based on the index_number. |
||||
|
* |
||||
|
* @param mixed $lookupValue The value that you want to match in lookup_array |
||||
|
* @param mixed $lookupArray The range of cells being searched |
||||
|
* @param mixed $indexNumber The row number in table_array from which the matching value must be returned. |
||||
|
* The first row is 1. |
||||
|
* @param mixed $notExactMatch determines if you are looking for an exact match based on lookup_value |
||||
|
* |
||||
|
* @return mixed The value of the found cell |
||||
|
*/ |
||||
|
public static function lookup($lookupValue, $lookupArray, $indexNumber, $notExactMatch = true) |
||||
|
{ |
||||
|
$lookupValue = Functions::flattenSingleValue($lookupValue); |
||||
|
$indexNumber = Functions::flattenSingleValue($indexNumber); |
||||
|
$notExactMatch = ($notExactMatch === null) ? true : Functions::flattenSingleValue($notExactMatch); |
||||
|
$lookupArray = self::convertLiteralArray($lookupArray); |
||||
|
|
||||
|
try { |
||||
|
$indexNumber = self::validateIndexLookup($lookupArray, $indexNumber); |
||||
|
} catch (Exception $e) { |
||||
|
return $e->getMessage(); |
||||
|
} |
||||
|
|
||||
|
$f = array_keys($lookupArray); |
||||
|
$firstRow = reset($f); |
||||
|
if ((!is_array($lookupArray[$firstRow])) || ($indexNumber > count($lookupArray))) { |
||||
|
return Functions::REF(); |
||||
|
} |
||||
|
|
||||
|
$firstkey = $f[0] - 1; |
||||
|
$returnColumn = $firstkey + $indexNumber; |
||||
|
$firstColumn = array_shift($f); |
||||
|
$rowNumber = self::hLookupSearch($lookupValue, $lookupArray, $firstColumn, $notExactMatch); |
||||
|
|
||||
|
if ($rowNumber !== null) { |
||||
|
// otherwise return the appropriate value |
||||
|
return $lookupArray[$returnColumn][Coordinate::stringFromColumnIndex($rowNumber)]; |
||||
|
} |
||||
|
|
||||
|
return Functions::NA(); |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* @param mixed $lookupValue The value that you want to match in lookup_array |
||||
|
* @param mixed $column The column to look up |
||||
|
* @param mixed $notExactMatch determines if you are looking for an exact match based on lookup_value |
||||
|
*/ |
||||
|
private static function hLookupSearch($lookupValue, array $lookupArray, $column, $notExactMatch): ?int |
||||
|
{ |
||||
|
$lookupLower = StringHelper::strToLower($lookupValue); |
||||
|
|
||||
|
$rowNumber = null; |
||||
|
foreach ($lookupArray[$column] as $rowKey => $rowData) { |
||||
|
// break if we have passed possible keys |
||||
|
$bothNumeric = is_numeric($lookupValue) && is_numeric($rowData); |
||||
|
$bothNotNumeric = !is_numeric($lookupValue) && !is_numeric($rowData); |
||||
|
$cellDataLower = StringHelper::strToLower($rowData); |
||||
|
|
||||
|
if ( |
||||
|
$notExactMatch && |
||||
|
(($bothNumeric && $rowData > $lookupValue) || ($bothNotNumeric && $cellDataLower > $lookupLower)) |
||||
|
) { |
||||
|
break; |
||||
|
} |
||||
|
|
||||
|
$rowNumber = self::checkMatch( |
||||
|
$bothNumeric, |
||||
|
$bothNotNumeric, |
||||
|
$notExactMatch, |
||||
|
Coordinate::columnIndexFromString($rowKey), |
||||
|
$cellDataLower, |
||||
|
$lookupLower, |
||||
|
$rowNumber |
||||
|
); |
||||
|
} |
||||
|
|
||||
|
return $rowNumber; |
||||
|
} |
||||
|
|
||||
|
private static function convertLiteralArray(array $lookupArray): array |
||||
|
{ |
||||
|
if (array_key_exists(0, $lookupArray)) { |
||||
|
$lookupArray2 = []; |
||||
|
$row = 0; |
||||
|
foreach ($lookupArray as $arrayVal) { |
||||
|
++$row; |
||||
|
if (!is_array($arrayVal)) { |
||||
|
$arrayVal = [$arrayVal]; |
||||
|
} |
||||
|
$arrayVal2 = []; |
||||
|
foreach ($arrayVal as $key2 => $val2) { |
||||
|
$index = Coordinate::stringFromColumnIndex($key2 + 1); |
||||
|
$arrayVal2[$index] = $val2; |
||||
|
} |
||||
|
$lookupArray2[$row] = $arrayVal2; |
||||
|
} |
||||
|
$lookupArray = $lookupArray2; |
||||
|
} |
||||
|
|
||||
|
return $lookupArray; |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,74 @@ |
|||||
|
<?php |
||||
|
|
||||
|
namespace PhpOffice\PhpSpreadsheet\Calculation\LookupRef; |
||||
|
|
||||
|
use PhpOffice\PhpSpreadsheet\Cell\AddressHelper; |
||||
|
use PhpOffice\PhpSpreadsheet\Cell\Cell; |
||||
|
use PhpOffice\PhpSpreadsheet\DefinedName; |
||||
|
use PhpOffice\PhpSpreadsheet\Worksheet\Worksheet; |
||||
|
|
||||
|
class Helpers |
||||
|
{ |
||||
|
public const CELLADDRESS_USE_A1 = true; |
||||
|
|
||||
|
public const CELLADDRESS_USE_R1C1 = false; |
||||
|
|
||||
|
private static function convertR1C1(string &$cellAddress1, ?string &$cellAddress2, bool $a1): string |
||||
|
{ |
||||
|
if ($a1 === self::CELLADDRESS_USE_R1C1) { |
||||
|
$cellAddress1 = AddressHelper::convertToA1($cellAddress1); |
||||
|
if ($cellAddress2) { |
||||
|
$cellAddress2 = AddressHelper::convertToA1($cellAddress2); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
return $cellAddress1 . ($cellAddress2 ? ":$cellAddress2" : ''); |
||||
|
} |
||||
|
|
||||
|
private static function adjustSheetTitle(string &$sheetTitle, ?string $value): void |
||||
|
{ |
||||
|
if ($sheetTitle) { |
||||
|
$sheetTitle .= '!'; |
||||
|
if (stripos($value ?? '', $sheetTitle) === 0) { |
||||
|
$sheetTitle = ''; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
public static function extractCellAddresses(string $cellAddress, bool $a1, Worksheet $sheet, string $sheetName = ''): array |
||||
|
{ |
||||
|
$cellAddress1 = $cellAddress; |
||||
|
$cellAddress2 = null; |
||||
|
$namedRange = DefinedName::resolveName($cellAddress1, $sheet, $sheetName); |
||||
|
if ($namedRange !== null) { |
||||
|
$workSheet = $namedRange->getWorkSheet(); |
||||
|
$sheetTitle = ($workSheet === null) ? '' : $workSheet->getTitle(); |
||||
|
$value = preg_replace('/^=/', '', $namedRange->getValue()); |
||||
|
self::adjustSheetTitle($sheetTitle, $value); |
||||
|
$cellAddress1 = $sheetTitle . $value; |
||||
|
$cellAddress = $cellAddress1; |
||||
|
$a1 = self::CELLADDRESS_USE_A1; |
||||
|
} |
||||
|
if (strpos($cellAddress, ':') !== false) { |
||||
|
[$cellAddress1, $cellAddress2] = explode(':', $cellAddress); |
||||
|
} |
||||
|
$cellAddress = self::convertR1C1($cellAddress1, $cellAddress2, $a1); |
||||
|
|
||||
|
return [$cellAddress1, $cellAddress2, $cellAddress]; |
||||
|
} |
||||
|
|
||||
|
public static function extractWorksheet(string $cellAddress, Cell $cell): array |
||||
|
{ |
||||
|
$sheetName = ''; |
||||
|
if (strpos($cellAddress, '!') !== false) { |
||||
|
[$sheetName, $cellAddress] = Worksheet::extractSheetTitle($cellAddress, true); |
||||
|
$sheetName = trim($sheetName, "'"); |
||||
|
} |
||||
|
|
||||
|
$worksheet = ($sheetName !== '') |
||||
|
? $cell->getWorksheet()->getParent()->getSheetByName($sheetName) |
||||
|
: $cell->getWorksheet(); |
||||
|
|
||||
|
return [$cellAddress, $worksheet, $sheetName]; |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,40 @@ |
|||||
|
<?php |
||||
|
|
||||
|
namespace PhpOffice\PhpSpreadsheet\Calculation\LookupRef; |
||||
|
|
||||
|
use PhpOffice\PhpSpreadsheet\Calculation\Functions; |
||||
|
use PhpOffice\PhpSpreadsheet\Cell\Cell; |
||||
|
|
||||
|
class Hyperlink |
||||
|
{ |
||||
|
/** |
||||
|
* HYPERLINK. |
||||
|
* |
||||
|
* Excel Function: |
||||
|
* =HYPERLINK(linkURL, [displayName]) |
||||
|
* |
||||
|
* @param mixed $linkURL Expect string. Value to check, is also the value returned when no error |
||||
|
* @param mixed $displayName Expect string. Value to return when testValue is an error condition |
||||
|
* @param Cell $cell The cell to set the hyperlink in |
||||
|
* |
||||
|
* @return mixed The value of $displayName (or $linkURL if $displayName was blank) |
||||
|
*/ |
||||
|
public static function set($linkURL = '', $displayName = null, ?Cell $cell = null) |
||||
|
{ |
||||
|
$linkURL = ($linkURL === null) ? '' : Functions::flattenSingleValue($linkURL); |
||||
|
$displayName = ($displayName === null) ? '' : Functions::flattenSingleValue($displayName); |
||||
|
|
||||
|
if ((!is_object($cell)) || (trim($linkURL) == '')) { |
||||
|
return Functions::REF(); |
||||
|
} |
||||
|
|
||||
|
if ((is_object($displayName)) || trim($displayName) == '') { |
||||
|
$displayName = $linkURL; |
||||
|
} |
||||
|
|
||||
|
$cell->getHyperlink()->setUrl($linkURL); |
||||
|
$cell->getHyperlink()->setTooltip($displayName); |
||||
|
|
||||
|
return $displayName; |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,97 @@ |
|||||
|
<?php |
||||
|
|
||||
|
namespace PhpOffice\PhpSpreadsheet\Calculation\LookupRef; |
||||
|
|
||||
|
use Exception; |
||||
|
use PhpOffice\PhpSpreadsheet\Calculation\Calculation; |
||||
|
use PhpOffice\PhpSpreadsheet\Calculation\Functions; |
||||
|
use PhpOffice\PhpSpreadsheet\Cell\Cell; |
||||
|
use PhpOffice\PhpSpreadsheet\Worksheet\Worksheet; |
||||
|
|
||||
|
class Indirect |
||||
|
{ |
||||
|
/** |
||||
|
* Determine whether cell address is in A1 (true) or R1C1 (false) format. |
||||
|
* |
||||
|
* @param mixed $a1fmt Expect bool Helpers::CELLADDRESS_USE_A1 or CELLADDRESS_USE_R1C1, |
||||
|
* but can be provided as numeric which is cast to bool |
||||
|
*/ |
||||
|
private static function a1Format($a1fmt): bool |
||||
|
{ |
||||
|
$a1fmt = Functions::flattenSingleValue($a1fmt); |
||||
|
if ($a1fmt === null) { |
||||
|
return Helpers::CELLADDRESS_USE_A1; |
||||
|
} |
||||
|
if (is_string($a1fmt)) { |
||||
|
throw new Exception(Functions::VALUE()); |
||||
|
} |
||||
|
|
||||
|
return (bool) $a1fmt; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* Convert cellAddress to string, verify not null string. |
||||
|
* |
||||
|
* @param array|string $cellAddress |
||||
|
*/ |
||||
|
private static function validateAddress($cellAddress): string |
||||
|
{ |
||||
|
$cellAddress = Functions::flattenSingleValue($cellAddress); |
||||
|
if (!is_string($cellAddress) || !$cellAddress) { |
||||
|
throw new Exception(Functions::REF()); |
||||
|
} |
||||
|
|
||||
|
return $cellAddress; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* INDIRECT. |
||||
|
* |
||||
|
* Returns the reference specified by a text string. |
||||
|
* References are immediately evaluated to display their contents. |
||||
|
* |
||||
|
* Excel Function: |
||||
|
* =INDIRECT(cellAddress, bool) where the bool argument is optional |
||||
|
* |
||||
|
* @param array|string $cellAddress $cellAddress The cell address of the current cell (containing this formula) |
||||
|
* @param mixed $a1fmt Expect bool Helpers::CELLADDRESS_USE_A1 or CELLADDRESS_USE_R1C1, |
||||
|
* but can be provided as numeric which is cast to bool |
||||
|
* @param Cell $cell The current cell (containing this formula) |
||||
|
* |
||||
|
* @return array|string An array containing a cell or range of cells, or a string on error |
||||
|
*/ |
||||
|
public static function INDIRECT($cellAddress, $a1fmt, Cell $cell) |
||||
|
{ |
||||
|
try { |
||||
|
$a1 = self::a1Format($a1fmt); |
||||
|
$cellAddress = self::validateAddress($cellAddress); |
||||
|
} catch (Exception $e) { |
||||
|
return $e->getMessage(); |
||||
|
} |
||||
|
|
||||
|
[$cellAddress, $worksheet, $sheetName] = Helpers::extractWorksheet($cellAddress, $cell); |
||||
|
|
||||
|
[$cellAddress1, $cellAddress2, $cellAddress] = Helpers::extractCellAddresses($cellAddress, $a1, $cell->getWorkSheet(), $sheetName); |
||||
|
|
||||
|
if ( |
||||
|
(!preg_match('/^' . Calculation::CALCULATION_REGEXP_CELLREF . '$/i', $cellAddress1, $matches)) || |
||||
|
(($cellAddress2 !== null) && (!preg_match('/^' . Calculation::CALCULATION_REGEXP_CELLREF . '$/i', $cellAddress2, $matches))) |
||||
|
) { |
||||
|
return Functions::REF(); |
||||
|
} |
||||
|
|
||||
|
return self::extractRequiredCells($worksheet, $cellAddress); |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* Extract range values. |
||||
|
* |
||||
|
* @return mixed Array of values in range if range contains more than one element. |
||||
|
* Otherwise, a single value is returned. |
||||
|
*/ |
||||
|
private static function extractRequiredCells(?Worksheet $worksheet, string $cellAddress) |
||||
|
{ |
||||
|
return Calculation::getInstance($worksheet !== null ? $worksheet->getParent() : null) |
||||
|
->extractCellRange($cellAddress, $worksheet, false); |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,105 @@ |
|||||
|
<?php |
||||
|
|
||||
|
namespace PhpOffice\PhpSpreadsheet\Calculation\LookupRef; |
||||
|
|
||||
|
use PhpOffice\PhpSpreadsheet\Calculation\Functions; |
||||
|
use PhpOffice\PhpSpreadsheet\Calculation\LookupRef; |
||||
|
|
||||
|
class Lookup |
||||
|
{ |
||||
|
/** |
||||
|
* LOOKUP |
||||
|
* The LOOKUP function searches for value either from a one-row or one-column range or from an array. |
||||
|
* |
||||
|
* @param mixed $lookupValue The value that you want to match in lookup_array |
||||
|
* @param mixed $lookupVector The range of cells being searched |
||||
|
* @param null|mixed $resultVector The column from which the matching value must be returned |
||||
|
* |
||||
|
* @return mixed The value of the found cell |
||||
|
*/ |
||||
|
public static function lookup($lookupValue, $lookupVector, $resultVector = null) |
||||
|
{ |
||||
|
$lookupValue = Functions::flattenSingleValue($lookupValue); |
||||
|
|
||||
|
if (!is_array($lookupVector)) { |
||||
|
return Functions::NA(); |
||||
|
} |
||||
|
$hasResultVector = isset($resultVector); |
||||
|
$lookupRows = self::rowCount($lookupVector); |
||||
|
$lookupColumns = self::columnCount($lookupVector); |
||||
|
// we correctly orient our results |
||||
|
if (($lookupRows === 1 && $lookupColumns > 1) || (!$hasResultVector && $lookupRows === 2 && $lookupColumns !== 2)) { |
||||
|
$lookupVector = LookupRef\Matrix::transpose($lookupVector); |
||||
|
$lookupRows = self::rowCount($lookupVector); |
||||
|
$lookupColumns = self::columnCount($lookupVector); |
||||
|
} |
||||
|
|
||||
|
$resultVector = self::verifyResultVector($lookupVector, $resultVector); |
||||
|
|
||||
|
if ($lookupRows === 2 && !$hasResultVector) { |
||||
|
$resultVector = array_pop($lookupVector); |
||||
|
$lookupVector = array_shift($lookupVector); |
||||
|
} |
||||
|
|
||||
|
if ($lookupColumns !== 2) { |
||||
|
$lookupVector = self::verifyLookupValues($lookupVector, $resultVector); |
||||
|
} |
||||
|
|
||||
|
return VLookup::lookup($lookupValue, $lookupVector, 2); |
||||
|
} |
||||
|
|
||||
|
private static function verifyLookupValues(array $lookupVector, array $resultVector): array |
||||
|
{ |
||||
|
foreach ($lookupVector as &$value) { |
||||
|
if (is_array($value)) { |
||||
|
$k = array_keys($value); |
||||
|
$key1 = $key2 = array_shift($k); |
||||
|
++$key2; |
||||
|
$dataValue1 = $value[$key1]; |
||||
|
} else { |
||||
|
$key1 = 0; |
||||
|
$key2 = 1; |
||||
|
$dataValue1 = $value; |
||||
|
} |
||||
|
|
||||
|
$dataValue2 = array_shift($resultVector); |
||||
|
if (is_array($dataValue2)) { |
||||
|
$dataValue2 = array_shift($dataValue2); |
||||
|
} |
||||
|
$value = [$key1 => $dataValue1, $key2 => $dataValue2]; |
||||
|
} |
||||
|
unset($value); |
||||
|
|
||||
|
return $lookupVector; |
||||
|
} |
||||
|
|
||||
|
private static function verifyResultVector(array $lookupVector, $resultVector) |
||||
|
{ |
||||
|
if ($resultVector === null) { |
||||
|
$resultVector = $lookupVector; |
||||
|
} |
||||
|
|
||||
|
$resultRows = self::rowCount($resultVector); |
||||
|
$resultColumns = self::columnCount($resultVector); |
||||
|
|
||||
|
// we correctly orient our results |
||||
|
if ($resultRows === 1 && $resultColumns > 1) { |
||||
|
$resultVector = LookupRef\Matrix::transpose($resultVector); |
||||
|
} |
||||
|
|
||||
|
return $resultVector; |
||||
|
} |
||||
|
|
||||
|
private static function rowCount(array $dataArray): int |
||||
|
{ |
||||
|
return count($dataArray); |
||||
|
} |
||||
|
|
||||
|
private static function columnCount(array $dataArray): int |
||||
|
{ |
||||
|
$rowKeys = array_keys($dataArray); |
||||
|
$row = array_shift($rowKeys); |
||||
|
|
||||
|
return count($dataArray[$row]); |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,48 @@ |
|||||
|
<?php |
||||
|
|
||||
|
namespace PhpOffice\PhpSpreadsheet\Calculation\LookupRef; |
||||
|
|
||||
|
use PhpOffice\PhpSpreadsheet\Calculation\Exception; |
||||
|
use PhpOffice\PhpSpreadsheet\Calculation\Functions; |
||||
|
|
||||
|
abstract class LookupBase |
||||
|
{ |
||||
|
protected static function validateIndexLookup($lookup_array, $index_number) |
||||
|
{ |
||||
|
// index_number must be a number greater than or equal to 1 |
||||
|
if (!is_numeric($index_number) || $index_number < 1) { |
||||
|
throw new Exception(Functions::VALUE()); |
||||
|
} |
||||
|
|
||||
|
// index_number must be less than or equal to the number of columns in lookup_array |
||||
|
if ((!is_array($lookup_array)) || (empty($lookup_array))) { |
||||
|
throw new Exception(Functions::REF()); |
||||
|
} |
||||
|
|
||||
|
return (int) $index_number; |
||||
|
} |
||||
|
|
||||
|
protected static function checkMatch( |
||||
|
bool $bothNumeric, |
||||
|
bool $bothNotNumeric, |
||||
|
$notExactMatch, |
||||
|
int $rowKey, |
||||
|
string $cellDataLower, |
||||
|
string $lookupLower, |
||||
|
?int $rowNumber |
||||
|
): ?int { |
||||
|
// remember the last key, but only if datatypes match |
||||
|
if ($bothNumeric || $bothNotNumeric) { |
||||
|
// Spreadsheets software returns first exact match, |
||||
|
// we have sorted and we might have broken key orders |
||||
|
// we want the first one (by its initial index) |
||||
|
if ($notExactMatch) { |
||||
|
$rowNumber = $rowKey; |
||||
|
} elseif (($cellDataLower == $lookupLower) && (($rowNumber === null) || ($rowKey < $rowNumber))) { |
||||
|
$rowNumber = $rowKey; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
return $rowNumber; |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,39 @@ |
|||||
|
<?php |
||||
|
|
||||
|
namespace PhpOffice\PhpSpreadsheet\Calculation\LookupRef; |
||||
|
|
||||
|
use PhpOffice\PhpSpreadsheet\Calculation\Exception; |
||||
|
use PhpOffice\PhpSpreadsheet\Calculation\Functions; |
||||
|
|
||||
|
class LookupRefValidations |
||||
|
{ |
||||
|
/** |
||||
|
* @param mixed $value |
||||
|
*/ |
||||
|
public static function validateInt($value): int |
||||
|
{ |
||||
|
if (!is_numeric($value)) { |
||||
|
if (Functions::isError($value)) { |
||||
|
throw new Exception($value); |
||||
|
} |
||||
|
|
||||
|
throw new Exception(Functions::VALUE()); |
||||
|
} |
||||
|
|
||||
|
return (int) floor((float) $value); |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* @param mixed $value |
||||
|
*/ |
||||
|
public static function validatePositiveInt($value, bool $allowZero = true): int |
||||
|
{ |
||||
|
$value = self::validateInt($value); |
||||
|
|
||||
|
if (($allowZero === false && $value <= 0) || $value < 0) { |
||||
|
throw new Exception(Functions::VALUE()); |
||||
|
} |
||||
|
|
||||
|
return $value; |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,110 @@ |
|||||
|
<?php |
||||
|
|
||||
|
namespace PhpOffice\PhpSpreadsheet\Calculation\LookupRef; |
||||
|
|
||||
|
use PhpOffice\PhpSpreadsheet\Calculation\Exception; |
||||
|
use PhpOffice\PhpSpreadsheet\Calculation\Functions; |
||||
|
|
||||
|
class Matrix |
||||
|
{ |
||||
|
/** |
||||
|
* TRANSPOSE. |
||||
|
* |
||||
|
* @param array|mixed $matrixData A matrix of values |
||||
|
* |
||||
|
* @return array |
||||
|
*/ |
||||
|
public static function transpose($matrixData) |
||||
|
{ |
||||
|
$returnMatrix = []; |
||||
|
if (!is_array($matrixData)) { |
||||
|
$matrixData = [[$matrixData]]; |
||||
|
} |
||||
|
|
||||
|
$column = 0; |
||||
|
foreach ($matrixData as $matrixRow) { |
||||
|
$row = 0; |
||||
|
foreach ($matrixRow as $matrixCell) { |
||||
|
$returnMatrix[$row][$column] = $matrixCell; |
||||
|
++$row; |
||||
|
} |
||||
|
++$column; |
||||
|
} |
||||
|
|
||||
|
return $returnMatrix; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* INDEX. |
||||
|
* |
||||
|
* Uses an index to choose a value from a reference or array |
||||
|
* |
||||
|
* Excel Function: |
||||
|
* =INDEX(range_array, row_num, [column_num], [area_num]) |
||||
|
* |
||||
|
* @param mixed $matrix A range of cells or an array constant |
||||
|
* @param mixed $rowNum The row in the array or range from which to return a value. |
||||
|
* If row_num is omitted, column_num is required. |
||||
|
* @param mixed $columnNum The column in the array or range from which to return a value. |
||||
|
* If column_num is omitted, row_num is required. |
||||
|
* |
||||
|
* TODO Provide support for area_num, currently not supported |
||||
|
* |
||||
|
* @return mixed the value of a specified cell or array of cells |
||||
|
*/ |
||||
|
public static function index($matrix, $rowNum = 0, $columnNum = 0) |
||||
|
{ |
||||
|
$rowNum = ($rowNum === null) ? 0 : Functions::flattenSingleValue($rowNum); |
||||
|
$columnNum = ($columnNum === null) ? 0 : Functions::flattenSingleValue($columnNum); |
||||
|
|
||||
|
try { |
||||
|
$rowNum = LookupRefValidations::validatePositiveInt($rowNum); |
||||
|
$columnNum = LookupRefValidations::validatePositiveInt($columnNum); |
||||
|
} catch (Exception $e) { |
||||
|
return $e->getMessage(); |
||||
|
} |
||||
|
|
||||
|
if (!is_array($matrix) || ($rowNum > count($matrix))) { |
||||
|
return Functions::REF(); |
||||
|
} |
||||
|
|
||||
|
$rowKeys = array_keys($matrix); |
||||
|
$columnKeys = @array_keys($matrix[$rowKeys[0]]); |
||||
|
|
||||
|
if ($columnNum > count($columnKeys)) { |
||||
|
return Functions::REF(); |
||||
|
} |
||||
|
|
||||
|
if ($columnNum === 0) { |
||||
|
return self::extractRowValue($matrix, $rowKeys, $rowNum); |
||||
|
} |
||||
|
|
||||
|
$columnNum = $columnKeys[--$columnNum]; |
||||
|
if ($rowNum === 0) { |
||||
|
return array_map( |
||||
|
function ($value) { |
||||
|
return [$value]; |
||||
|
}, |
||||
|
array_column($matrix, $columnNum) |
||||
|
); |
||||
|
} |
||||
|
$rowNum = $rowKeys[--$rowNum]; |
||||
|
|
||||
|
return $matrix[$rowNum][$columnNum]; |
||||
|
} |
||||
|
|
||||
|
private static function extractRowValue(array $matrix, array $rowKeys, int $rowNum) |
||||
|
{ |
||||
|
if ($rowNum === 0) { |
||||
|
return $matrix; |
||||
|
} |
||||
|
|
||||
|
$rowNum = $rowKeys[--$rowNum]; |
||||
|
$row = $matrix[$rowNum]; |
||||
|
if (is_array($row)) { |
||||
|
return [$rowNum => $row]; |
||||
|
} |
||||
|
|
||||
|
return $row; |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,136 @@ |
|||||
|
<?php |
||||
|
|
||||
|
namespace PhpOffice\PhpSpreadsheet\Calculation\LookupRef; |
||||
|
|
||||
|
use PhpOffice\PhpSpreadsheet\Calculation\Calculation; |
||||
|
use PhpOffice\PhpSpreadsheet\Calculation\Functions; |
||||
|
use PhpOffice\PhpSpreadsheet\Cell\Cell; |
||||
|
use PhpOffice\PhpSpreadsheet\Cell\Coordinate; |
||||
|
use PhpOffice\PhpSpreadsheet\Worksheet\Worksheet; |
||||
|
|
||||
|
class Offset |
||||
|
{ |
||||
|
/** |
||||
|
* OFFSET. |
||||
|
* |
||||
|
* Returns a reference to a range that is a specified number of rows and columns from a cell or range of cells. |
||||
|
* The reference that is returned can be a single cell or a range of cells. You can specify the number of rows and |
||||
|
* the number of columns to be returned. |
||||
|
* |
||||
|
* Excel Function: |
||||
|
* =OFFSET(cellAddress, rows, cols, [height], [width]) |
||||
|
* |
||||
|
* @param null|string $cellAddress The reference from which you want to base the offset. |
||||
|
* Reference must refer to a cell or range of adjacent cells; |
||||
|
* otherwise, OFFSET returns the #VALUE! error value. |
||||
|
* @param mixed $rows The number of rows, up or down, that you want the upper-left cell to refer to. |
||||
|
* Using 5 as the rows argument specifies that the upper-left cell in the |
||||
|
* reference is five rows below reference. Rows can be positive (which means |
||||
|
* below the starting reference) or negative (which means above the starting |
||||
|
* reference). |
||||
|
* @param mixed $columns The number of columns, to the left or right, that you want the upper-left cell |
||||
|
* of the result to refer to. Using 5 as the cols argument specifies that the |
||||
|
* upper-left cell in the reference is five columns to the right of reference. |
||||
|
* Cols can be positive (which means to the right of the starting reference) |
||||
|
* or negative (which means to the left of the starting reference). |
||||
|
* @param mixed $height The height, in number of rows, that you want the returned reference to be. |
||||
|
* Height must be a positive number. |
||||
|
* @param mixed $width The width, in number of columns, that you want the returned reference to be. |
||||
|
* Width must be a positive number. |
||||
|
* |
||||
|
* @return array|int|string An array containing a cell or range of cells, or a string on error |
||||
|
*/ |
||||
|
public static function OFFSET($cellAddress = null, $rows = 0, $columns = 0, $height = null, $width = null, ?Cell $cell = null) |
||||
|
{ |
||||
|
$rows = Functions::flattenSingleValue($rows); |
||||
|
$columns = Functions::flattenSingleValue($columns); |
||||
|
$height = Functions::flattenSingleValue($height); |
||||
|
$width = Functions::flattenSingleValue($width); |
||||
|
|
||||
|
if ($cellAddress === null || $cellAddress === '') { |
||||
|
return Functions::VALUE(); |
||||
|
} |
||||
|
|
||||
|
if (!is_object($cell)) { |
||||
|
return Functions::REF(); |
||||
|
} |
||||
|
|
||||
|
[$cellAddress, $worksheet] = self::extractWorksheet($cellAddress, $cell); |
||||
|
|
||||
|
$startCell = $endCell = $cellAddress; |
||||
|
if (strpos($cellAddress, ':')) { |
||||
|
[$startCell, $endCell] = explode(':', $cellAddress); |
||||
|
} |
||||
|
[$startCellColumn, $startCellRow] = Coordinate::coordinateFromString($startCell); |
||||
|
[$endCellColumn, $endCellRow] = Coordinate::coordinateFromString($endCell); |
||||
|
|
||||
|
$startCellRow += $rows; |
||||
|
$startCellColumn = Coordinate::columnIndexFromString($startCellColumn) - 1; |
||||
|
$startCellColumn += $columns; |
||||
|
|
||||
|
if (($startCellRow <= 0) || ($startCellColumn < 0)) { |
||||
|
return Functions::REF(); |
||||
|
} |
||||
|
|
||||
|
$endCellColumn = self::adjustEndCellColumnForWidth($endCellColumn, $width, $startCellColumn, $columns); |
||||
|
$startCellColumn = Coordinate::stringFromColumnIndex($startCellColumn + 1); |
||||
|
|
||||
|
$endCellRow = self::adustEndCellRowForHeight($height, $startCellRow, $rows, $endCellRow); |
||||
|
|
||||
|
if (($endCellRow <= 0) || ($endCellColumn < 0)) { |
||||
|
return Functions::REF(); |
||||
|
} |
||||
|
$endCellColumn = Coordinate::stringFromColumnIndex($endCellColumn + 1); |
||||
|
|
||||
|
$cellAddress = "{$startCellColumn}{$startCellRow}"; |
||||
|
if (($startCellColumn != $endCellColumn) || ($startCellRow != $endCellRow)) { |
||||
|
$cellAddress .= ":{$endCellColumn}{$endCellRow}"; |
||||
|
} |
||||
|
|
||||
|
return self::extractRequiredCells($worksheet, $cellAddress); |
||||
|
} |
||||
|
|
||||
|
private static function extractRequiredCells(?Worksheet $worksheet, string $cellAddress) |
||||
|
{ |
||||
|
return Calculation::getInstance($worksheet !== null ? $worksheet->getParent() : null) |
||||
|
->extractCellRange($cellAddress, $worksheet, false); |
||||
|
} |
||||
|
|
||||
|
private static function extractWorksheet($cellAddress, Cell $cell): array |
||||
|
{ |
||||
|
$sheetName = ''; |
||||
|
if (strpos($cellAddress, '!') !== false) { |
||||
|
[$sheetName, $cellAddress] = Worksheet::extractSheetTitle($cellAddress, true); |
||||
|
$sheetName = trim($sheetName, "'"); |
||||
|
} |
||||
|
|
||||
|
$worksheet = ($sheetName !== '') |
||||
|
? $cell->getWorksheet()->getParent()->getSheetByName($sheetName) |
||||
|
: $cell->getWorksheet(); |
||||
|
|
||||
|
return [$cellAddress, $worksheet]; |
||||
|
} |
||||
|
|
||||
|
private static function adjustEndCellColumnForWidth(string $endCellColumn, $width, int $startCellColumn, $columns) |
||||
|
{ |
||||
|
$endCellColumn = Coordinate::columnIndexFromString($endCellColumn) - 1; |
||||
|
if (($width !== null) && (!is_object($width))) { |
||||
|
$endCellColumn = $startCellColumn + (int) $width - 1; |
||||
|
} else { |
||||
|
$endCellColumn += (int) $columns; |
||||
|
} |
||||
|
|
||||
|
return $endCellColumn; |
||||
|
} |
||||
|
|
||||
|
private static function adustEndCellRowForHeight($height, int $startCellRow, $rows, $endCellRow): int |
||||
|
{ |
||||
|
if (($height !== null) && (!is_object($height))) { |
||||
|
$endCellRow = $startCellRow + (int) $height - 1; |
||||
|
} else { |
||||
|
$endCellRow += (int) $rows; |
||||
|
} |
||||
|
|
||||
|
return $endCellRow; |
||||
|
} |
||||
|
} |
||||
File diff suppressed because it is too large
@ -0,0 +1,37 @@ |
|||||
|
<?php |
||||
|
|
||||
|
namespace PhpOffice\PhpSpreadsheet\Calculation\MathTrig; |
||||
|
|
||||
|
use PhpOffice\PhpSpreadsheet\Calculation\ArrayEnabled; |
||||
|
use PhpOffice\PhpSpreadsheet\Calculation\Exception; |
||||
|
|
||||
|
class Exp |
||||
|
{ |
||||
|
use ArrayEnabled; |
||||
|
|
||||
|
/** |
||||
|
* EXP. |
||||
|
* |
||||
|
* Returns the result of builtin function exp after validating args. |
||||
|
* |
||||
|
* @param mixed $number Should be numeric, or can be an array of numbers |
||||
|
* |
||||
|
* @return array|float|string Rounded number |
||||
|
* If an array of numbers is passed as the argument, then the returned result will also be an array |
||||
|
* with the same dimensions |
||||
|
*/ |
||||
|
public static function evaluate($number) |
||||
|
{ |
||||
|
if (is_array($number)) { |
||||
|
return self::evaluateSingleArgumentArray([self::class, __FUNCTION__], $number); |
||||
|
} |
||||
|
|
||||
|
try { |
||||
|
$number = Helpers::validateNumericNullBool($number); |
||||
|
} catch (Exception $e) { |
||||
|
return $e->getMessage(); |
||||
|
} |
||||
|
|
||||
|
return exp($number); |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,125 @@ |
|||||
|
<?php |
||||
|
|
||||
|
namespace PhpOffice\PhpSpreadsheet\Calculation\MathTrig; |
||||
|
|
||||
|
use PhpOffice\PhpSpreadsheet\Calculation\ArrayEnabled; |
||||
|
use PhpOffice\PhpSpreadsheet\Calculation\Exception; |
||||
|
use PhpOffice\PhpSpreadsheet\Calculation\Functions; |
||||
|
use PhpOffice\PhpSpreadsheet\Calculation\Statistical; |
||||
|
|
||||
|
class Factorial |
||||
|
{ |
||||
|
use ArrayEnabled; |
||||
|
|
||||
|
/** |
||||
|
* FACT. |
||||
|
* |
||||
|
* Returns the factorial of a number. |
||||
|
* The factorial of a number is equal to 1*2*3*...* number. |
||||
|
* |
||||
|
* Excel Function: |
||||
|
* FACT(factVal) |
||||
|
* |
||||
|
* @param array|float $factVal Factorial Value, or can be an array of numbers |
||||
|
* |
||||
|
* @return array|float|int|string Factorial, or a string containing an error |
||||
|
* If an array of numbers is passed as the argument, then the returned result will also be an array |
||||
|
* with the same dimensions |
||||
|
*/ |
||||
|
public static function fact($factVal) |
||||
|
{ |
||||
|
if (is_array($factVal)) { |
||||
|
return self::evaluateSingleArgumentArray([self::class, __FUNCTION__], $factVal); |
||||
|
} |
||||
|
|
||||
|
try { |
||||
|
$factVal = Helpers::validateNumericNullBool($factVal); |
||||
|
Helpers::validateNotNegative($factVal); |
||||
|
} catch (Exception $e) { |
||||
|
return $e->getMessage(); |
||||
|
} |
||||
|
|
||||
|
$factLoop = floor($factVal); |
||||
|
if ($factVal > $factLoop) { |
||||
|
if (Functions::getCompatibilityMode() == Functions::COMPATIBILITY_GNUMERIC) { |
||||
|
return Statistical\Distributions\Gamma::gammaValue($factVal + 1); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
$factorial = 1; |
||||
|
while ($factLoop > 1) { |
||||
|
$factorial *= $factLoop--; |
||||
|
} |
||||
|
|
||||
|
return $factorial; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* FACTDOUBLE. |
||||
|
* |
||||
|
* Returns the double factorial of a number. |
||||
|
* |
||||
|
* Excel Function: |
||||
|
* FACTDOUBLE(factVal) |
||||
|
* |
||||
|
* @param array|float $factVal Factorial Value, or can be an array of numbers |
||||
|
* |
||||
|
* @return array|float|int|string Double Factorial, or a string containing an error |
||||
|
* If an array of numbers is passed as the argument, then the returned result will also be an array |
||||
|
* with the same dimensions |
||||
|
*/ |
||||
|
public static function factDouble($factVal) |
||||
|
{ |
||||
|
if (is_array($factVal)) { |
||||
|
return self::evaluateSingleArgumentArray([self::class, __FUNCTION__], $factVal); |
||||
|
} |
||||
|
|
||||
|
try { |
||||
|
$factVal = Helpers::validateNumericNullSubstitution($factVal, 0); |
||||
|
Helpers::validateNotNegative($factVal); |
||||
|
} catch (Exception $e) { |
||||
|
return $e->getMessage(); |
||||
|
} |
||||
|
|
||||
|
$factLoop = floor($factVal); |
||||
|
$factorial = 1; |
||||
|
while ($factLoop > 1) { |
||||
|
$factorial *= $factLoop; |
||||
|
$factLoop -= 2; |
||||
|
} |
||||
|
|
||||
|
return $factorial; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* MULTINOMIAL. |
||||
|
* |
||||
|
* Returns the ratio of the factorial of a sum of values to the product of factorials. |
||||
|
* |
||||
|
* @param mixed[] $args An array of mixed values for the Data Series |
||||
|
* |
||||
|
* @return float|string The result, or a string containing an error |
||||
|
*/ |
||||
|
public static function multinomial(...$args) |
||||
|
{ |
||||
|
$summer = 0; |
||||
|
$divisor = 1; |
||||
|
|
||||
|
try { |
||||
|
// Loop through arguments |
||||
|
foreach (Functions::flattenArray($args) as $argx) { |
||||
|
$arg = Helpers::validateNumericNullSubstitution($argx, null); |
||||
|
Helpers::validateNotNegative($arg); |
||||
|
$arg = (int) $arg; |
||||
|
$summer += $arg; |
||||
|
$divisor *= self::fact($arg); |
||||
|
} |
||||
|
} catch (Exception $e) { |
||||
|
return $e->getMessage(); |
||||
|
} |
||||
|
|
||||
|
$summer = self::fact($summer); |
||||
|
|
||||
|
return $summer / $divisor; |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,194 @@ |
|||||
|
<?php |
||||
|
|
||||
|
namespace PhpOffice\PhpSpreadsheet\Calculation\MathTrig; |
||||
|
|
||||
|
use PhpOffice\PhpSpreadsheet\Calculation\ArrayEnabled; |
||||
|
use PhpOffice\PhpSpreadsheet\Calculation\Exception; |
||||
|
use PhpOffice\PhpSpreadsheet\Calculation\Functions; |
||||
|
|
||||
|
class Floor |
||||
|
{ |
||||
|
use ArrayEnabled; |
||||
|
|
||||
|
private static function floorCheck1Arg(): void |
||||
|
{ |
||||
|
$compatibility = Functions::getCompatibilityMode(); |
||||
|
if ($compatibility === Functions::COMPATIBILITY_EXCEL) { |
||||
|
throw new Exception('Excel requires 2 arguments for FLOOR'); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* FLOOR. |
||||
|
* |
||||
|
* Rounds number down, toward zero, to the nearest multiple of significance. |
||||
|
* |
||||
|
* Excel Function: |
||||
|
* FLOOR(number[,significance]) |
||||
|
* |
||||
|
* @param mixed $number Expect float. Number to round |
||||
|
* Or can be an array of values |
||||
|
* @param mixed $significance Expect float. Significance |
||||
|
* Or can be an array of values |
||||
|
* |
||||
|
* @return array|float|string Rounded Number, or a string containing an error |
||||
|
* If an array of numbers is passed as an argument, then the returned result will also be an array |
||||
|
* with the same dimensions |
||||
|
*/ |
||||
|
public static function floor($number, $significance = null) |
||||
|
{ |
||||
|
if (is_array($number) || is_array($significance)) { |
||||
|
return self::evaluateArrayArguments([self::class, __FUNCTION__], $number, $significance); |
||||
|
} |
||||
|
|
||||
|
if ($significance === null) { |
||||
|
self::floorCheck1Arg(); |
||||
|
} |
||||
|
|
||||
|
try { |
||||
|
$number = Helpers::validateNumericNullBool($number); |
||||
|
$significance = Helpers::validateNumericNullSubstitution($significance, ($number < 0) ? -1 : 1); |
||||
|
} catch (Exception $e) { |
||||
|
return $e->getMessage(); |
||||
|
} |
||||
|
|
||||
|
return self::argumentsOk((float) $number, (float) $significance); |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* FLOOR.MATH. |
||||
|
* |
||||
|
* Round a number down to the nearest integer or to the nearest multiple of significance. |
||||
|
* |
||||
|
* Excel Function: |
||||
|
* FLOOR.MATH(number[,significance[,mode]]) |
||||
|
* |
||||
|
* @param mixed $number Number to round |
||||
|
* Or can be an array of values |
||||
|
* @param mixed $significance Significance |
||||
|
* Or can be an array of values |
||||
|
* @param mixed $mode direction to round negative numbers |
||||
|
* Or can be an array of values |
||||
|
* |
||||
|
* @return array|float|string Rounded Number, or a string containing an error |
||||
|
* If an array of numbers is passed as an argument, then the returned result will also be an array |
||||
|
* with the same dimensions |
||||
|
*/ |
||||
|
public static function math($number, $significance = null, $mode = 0) |
||||
|
{ |
||||
|
if (is_array($number) || is_array($significance) || is_array($mode)) { |
||||
|
return self::evaluateArrayArguments([self::class, __FUNCTION__], $number, $significance, $mode); |
||||
|
} |
||||
|
|
||||
|
try { |
||||
|
$number = Helpers::validateNumericNullBool($number); |
||||
|
$significance = Helpers::validateNumericNullSubstitution($significance, ($number < 0) ? -1 : 1); |
||||
|
$mode = Helpers::validateNumericNullSubstitution($mode, null); |
||||
|
} catch (Exception $e) { |
||||
|
return $e->getMessage(); |
||||
|
} |
||||
|
|
||||
|
return self::argsOk((float) $number, (float) $significance, (int) $mode); |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* FLOOR.PRECISE. |
||||
|
* |
||||
|
* Rounds number down, toward zero, to the nearest multiple of significance. |
||||
|
* |
||||
|
* Excel Function: |
||||
|
* FLOOR.PRECISE(number[,significance]) |
||||
|
* |
||||
|
* @param array|float $number Number to round |
||||
|
* Or can be an array of values |
||||
|
* @param array|float $significance Significance |
||||
|
* Or can be an array of values |
||||
|
* |
||||
|
* @return array|float|string Rounded Number, or a string containing an error |
||||
|
* If an array of numbers is passed as an argument, then the returned result will also be an array |
||||
|
* with the same dimensions |
||||
|
*/ |
||||
|
public static function precise($number, $significance = 1) |
||||
|
{ |
||||
|
if (is_array($number) || is_array($significance)) { |
||||
|
return self::evaluateArrayArguments([self::class, __FUNCTION__], $number, $significance); |
||||
|
} |
||||
|
|
||||
|
try { |
||||
|
$number = Helpers::validateNumericNullBool($number); |
||||
|
$significance = Helpers::validateNumericNullSubstitution($significance, null); |
||||
|
} catch (Exception $e) { |
||||
|
return $e->getMessage(); |
||||
|
} |
||||
|
|
||||
|
return self::argumentsOkPrecise((float) $number, (float) $significance); |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* Avoid Scrutinizer problems concerning complexity. |
||||
|
* |
||||
|
* @return float|string |
||||
|
*/ |
||||
|
private static function argumentsOkPrecise(float $number, float $significance) |
||||
|
{ |
||||
|
if ($significance == 0.0) { |
||||
|
return Functions::DIV0(); |
||||
|
} |
||||
|
if ($number == 0.0) { |
||||
|
return 0.0; |
||||
|
} |
||||
|
|
||||
|
return floor($number / abs($significance)) * abs($significance); |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* Avoid Scrutinizer complexity problems. |
||||
|
* |
||||
|
* @return float|string Rounded Number, or a string containing an error |
||||
|
*/ |
||||
|
private static function argsOk(float $number, float $significance, int $mode) |
||||
|
{ |
||||
|
if (!$significance) { |
||||
|
return Functions::DIV0(); |
||||
|
} |
||||
|
if (!$number) { |
||||
|
return 0.0; |
||||
|
} |
||||
|
if (self::floorMathTest($number, $significance, $mode)) { |
||||
|
return ceil($number / $significance) * $significance; |
||||
|
} |
||||
|
|
||||
|
return floor($number / $significance) * $significance; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* Let FLOORMATH complexity pass Scrutinizer. |
||||
|
*/ |
||||
|
private static function floorMathTest(float $number, float $significance, int $mode): bool |
||||
|
{ |
||||
|
return Helpers::returnSign($significance) == -1 || (Helpers::returnSign($number) == -1 && !empty($mode)); |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* Avoid Scrutinizer problems concerning complexity. |
||||
|
* |
||||
|
* @return float|string |
||||
|
*/ |
||||
|
private static function argumentsOk(float $number, float $significance) |
||||
|
{ |
||||
|
if ($significance == 0.0) { |
||||
|
return Functions::DIV0(); |
||||
|
} |
||||
|
if ($number == 0.0) { |
||||
|
return 0.0; |
||||
|
} |
||||
|
if (Helpers::returnSign($significance) == 1) { |
||||
|
return floor($number / $significance) * $significance; |
||||
|
} |
||||
|
if (Helpers::returnSign($number) == -1 && Helpers::returnSign($significance) == -1) { |
||||
|
return floor($number / $significance) * $significance; |
||||
|
} |
||||
|
|
||||
|
return Functions::NAN(); |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,69 @@ |
|||||
|
<?php |
||||
|
|
||||
|
namespace PhpOffice\PhpSpreadsheet\Calculation\MathTrig; |
||||
|
|
||||
|
use PhpOffice\PhpSpreadsheet\Calculation\Exception; |
||||
|
use PhpOffice\PhpSpreadsheet\Calculation\Functions; |
||||
|
|
||||
|
class Gcd |
||||
|
{ |
||||
|
/** |
||||
|
* Recursively determine GCD. |
||||
|
* |
||||
|
* Returns the greatest common divisor of a series of numbers. |
||||
|
* The greatest common divisor is the largest integer that divides both |
||||
|
* number1 and number2 without a remainder. |
||||
|
* |
||||
|
* Excel Function: |
||||
|
* GCD(number1[,number2[, ...]]) |
||||
|
* |
||||
|
* @param float|int $a |
||||
|
* @param float|int $b |
||||
|
* |
||||
|
* @return float|int |
||||
|
*/ |
||||
|
private static function evaluateGCD($a, $b) |
||||
|
{ |
||||
|
return $b ? self::evaluateGCD($b, $a % $b) : $a; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* GCD. |
||||
|
* |
||||
|
* Returns the greatest common divisor of a series of numbers. |
||||
|
* The greatest common divisor is the largest integer that divides both |
||||
|
* number1 and number2 without a remainder. |
||||
|
* |
||||
|
* Excel Function: |
||||
|
* GCD(number1[,number2[, ...]]) |
||||
|
* |
||||
|
* @param mixed ...$args Data values |
||||
|
* |
||||
|
* @return float|int|string Greatest Common Divisor, or a string containing an error |
||||
|
*/ |
||||
|
public static function evaluate(...$args) |
||||
|
{ |
||||
|
try { |
||||
|
$arrayArgs = []; |
||||
|
foreach (Functions::flattenArray($args) as $value1) { |
||||
|
if ($value1 !== null) { |
||||
|
$value = Helpers::validateNumericNullSubstitution($value1, 1); |
||||
|
Helpers::validateNotNegative($value); |
||||
|
$arrayArgs[] = (int) $value; |
||||
|
} |
||||
|
} |
||||
|
} catch (Exception $e) { |
||||
|
return $e->getMessage(); |
||||
|
} |
||||
|
|
||||
|
if (count($arrayArgs) <= 0) { |
||||
|
return Functions::VALUE(); |
||||
|
} |
||||
|
$gcd = (int) array_pop($arrayArgs); |
||||
|
do { |
||||
|
$gcd = self::evaluateGCD($gcd, (int) array_pop($arrayArgs)); |
||||
|
} while (!empty($arrayArgs)); |
||||
|
|
||||
|
return $gcd; |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,129 @@ |
|||||
|
<?php |
||||
|
|
||||
|
namespace PhpOffice\PhpSpreadsheet\Calculation\MathTrig; |
||||
|
|
||||
|
use PhpOffice\PhpSpreadsheet\Calculation\Exception; |
||||
|
use PhpOffice\PhpSpreadsheet\Calculation\Functions; |
||||
|
|
||||
|
class Helpers |
||||
|
{ |
||||
|
/** |
||||
|
* Many functions accept null/false/true argument treated as 0/0/1. |
||||
|
* |
||||
|
* @return float|string quotient or DIV0 if denominator is too small |
||||
|
*/ |
||||
|
public static function verySmallDenominator(float $numerator, float $denominator) |
||||
|
{ |
||||
|
return (abs($denominator) < 1.0E-12) ? Functions::DIV0() : ($numerator / $denominator); |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* Many functions accept null/false/true argument treated as 0/0/1. |
||||
|
* |
||||
|
* @param mixed $number |
||||
|
* |
||||
|
* @return float|int |
||||
|
*/ |
||||
|
public static function validateNumericNullBool($number) |
||||
|
{ |
||||
|
$number = Functions::flattenSingleValue($number); |
||||
|
if ($number === null) { |
||||
|
return 0; |
||||
|
} |
||||
|
if (is_bool($number)) { |
||||
|
return (int) $number; |
||||
|
} |
||||
|
if (is_numeric($number)) { |
||||
|
return 0 + $number; |
||||
|
} |
||||
|
|
||||
|
throw new Exception(Functions::VALUE()); |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* Validate numeric, but allow substitute for null. |
||||
|
* |
||||
|
* @param mixed $number |
||||
|
* @param null|float|int $substitute |
||||
|
* |
||||
|
* @return float|int |
||||
|
*/ |
||||
|
public static function validateNumericNullSubstitution($number, $substitute) |
||||
|
{ |
||||
|
$number = Functions::flattenSingleValue($number); |
||||
|
if ($number === null && $substitute !== null) { |
||||
|
return $substitute; |
||||
|
} |
||||
|
if (is_numeric($number)) { |
||||
|
return 0 + $number; |
||||
|
} |
||||
|
|
||||
|
throw new Exception(Functions::VALUE()); |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* Confirm number >= 0. |
||||
|
* |
||||
|
* @param float|int $number |
||||
|
*/ |
||||
|
public static function validateNotNegative($number, ?string $except = null): void |
||||
|
{ |
||||
|
if ($number >= 0) { |
||||
|
return; |
||||
|
} |
||||
|
|
||||
|
throw new Exception($except ?? Functions::NAN()); |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* Confirm number > 0. |
||||
|
* |
||||
|
* @param float|int $number |
||||
|
*/ |
||||
|
public static function validatePositive($number, ?string $except = null): void |
||||
|
{ |
||||
|
if ($number > 0) { |
||||
|
return; |
||||
|
} |
||||
|
|
||||
|
throw new Exception($except ?? Functions::NAN()); |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* Confirm number != 0. |
||||
|
* |
||||
|
* @param float|int $number |
||||
|
*/ |
||||
|
public static function validateNotZero($number): void |
||||
|
{ |
||||
|
if ($number) { |
||||
|
return; |
||||
|
} |
||||
|
|
||||
|
throw new Exception(Functions::DIV0()); |
||||
|
} |
||||
|
|
||||
|
public static function returnSign(float $number): int |
||||
|
{ |
||||
|
return $number ? (($number > 0) ? 1 : -1) : 0; |
||||
|
} |
||||
|
|
||||
|
public static function getEven(float $number): float |
||||
|
{ |
||||
|
$significance = 2 * self::returnSign($number); |
||||
|
|
||||
|
return $significance ? (ceil($number / $significance) * $significance) : 0; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* Return NAN or value depending on argument. |
||||
|
* |
||||
|
* @param float $result Number |
||||
|
* |
||||
|
* @return float|string |
||||
|
*/ |
||||
|
public static function numberOrNan($result) |
||||
|
{ |
||||
|
return is_nan($result) ? Functions::NAN() : $result; |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,40 @@ |
|||||
|
<?php |
||||
|
|
||||
|
namespace PhpOffice\PhpSpreadsheet\Calculation\MathTrig; |
||||
|
|
||||
|
use PhpOffice\PhpSpreadsheet\Calculation\ArrayEnabled; |
||||
|
use PhpOffice\PhpSpreadsheet\Calculation\Exception; |
||||
|
|
||||
|
class IntClass |
||||
|
{ |
||||
|
use ArrayEnabled; |
||||
|
|
||||
|
/** |
||||
|
* INT. |
||||
|
* |
||||
|
* Casts a floating point value to an integer |
||||
|
* |
||||
|
* Excel Function: |
||||
|
* INT(number) |
||||
|
* |
||||
|
* @param array|float $number Number to cast to an integer, or can be an array of numbers |
||||
|
* |
||||
|
* @return array|string Integer value, or a string containing an error |
||||
|
* If an array of numbers is passed as the argument, then the returned result will also be an array |
||||
|
* with the same dimensions |
||||
|
*/ |
||||
|
public static function evaluate($number) |
||||
|
{ |
||||
|
if (is_array($number)) { |
||||
|
return self::evaluateSingleArgumentArray([self::class, __FUNCTION__], $number); |
||||
|
} |
||||
|
|
||||
|
try { |
||||
|
$number = Helpers::validateNumericNullBool($number); |
||||
|
} catch (Exception $e) { |
||||
|
return $e->getMessage(); |
||||
|
} |
||||
|
|
||||
|
return (int) floor($number); |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,110 @@ |
|||||
|
<?php |
||||
|
|
||||
|
namespace PhpOffice\PhpSpreadsheet\Calculation\MathTrig; |
||||
|
|
||||
|
use PhpOffice\PhpSpreadsheet\Calculation\Exception; |
||||
|
use PhpOffice\PhpSpreadsheet\Calculation\Functions; |
||||
|
|
||||
|
class Lcm |
||||
|
{ |
||||
|
// |
||||
|
// Private method to return an array of the factors of the input value |
||||
|
// |
||||
|
private static function factors(float $value): array |
||||
|
{ |
||||
|
$startVal = floor(sqrt($value)); |
||||
|
|
||||
|
$factorArray = []; |
||||
|
for ($i = $startVal; $i > 1; --$i) { |
||||
|
if (($value % $i) == 0) { |
||||
|
$factorArray = array_merge($factorArray, self::factors($value / $i)); |
||||
|
$factorArray = array_merge($factorArray, self::factors($i)); |
||||
|
if ($i <= sqrt($value)) { |
||||
|
break; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
if (!empty($factorArray)) { |
||||
|
rsort($factorArray); |
||||
|
|
||||
|
return $factorArray; |
||||
|
} |
||||
|
|
||||
|
return [(int) $value]; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* LCM. |
||||
|
* |
||||
|
* Returns the lowest common multiplier of a series of numbers |
||||
|
* The least common multiple is the smallest positive integer that is a multiple |
||||
|
* of all integer arguments number1, number2, and so on. Use LCM to add fractions |
||||
|
* with different denominators. |
||||
|
* |
||||
|
* Excel Function: |
||||
|
* LCM(number1[,number2[, ...]]) |
||||
|
* |
||||
|
* @param mixed ...$args Data values |
||||
|
* |
||||
|
* @return int|string Lowest Common Multiplier, or a string containing an error |
||||
|
*/ |
||||
|
public static function evaluate(...$args) |
||||
|
{ |
||||
|
try { |
||||
|
$arrayArgs = []; |
||||
|
$anyZeros = 0; |
||||
|
$anyNonNulls = 0; |
||||
|
foreach (Functions::flattenArray($args) as $value1) { |
||||
|
$anyNonNulls += (int) ($value1 !== null); |
||||
|
$value = Helpers::validateNumericNullSubstitution($value1, 1); |
||||
|
Helpers::validateNotNegative($value); |
||||
|
$arrayArgs[] = (int) $value; |
||||
|
$anyZeros += (int) !((bool) $value); |
||||
|
} |
||||
|
self::testNonNulls($anyNonNulls); |
||||
|
if ($anyZeros) { |
||||
|
return 0; |
||||
|
} |
||||
|
} catch (Exception $e) { |
||||
|
return $e->getMessage(); |
||||
|
} |
||||
|
|
||||
|
$returnValue = 1; |
||||
|
$allPoweredFactors = []; |
||||
|
// Loop through arguments |
||||
|
foreach ($arrayArgs as $value) { |
||||
|
$myFactors = self::factors(floor($value)); |
||||
|
$myCountedFactors = array_count_values($myFactors); |
||||
|
$myPoweredFactors = []; |
||||
|
foreach ($myCountedFactors as $myCountedFactor => $myCountedPower) { |
||||
|
$myPoweredFactors[$myCountedFactor] = $myCountedFactor ** $myCountedPower; |
||||
|
} |
||||
|
self::processPoweredFactors($allPoweredFactors, $myPoweredFactors); |
||||
|
} |
||||
|
foreach ($allPoweredFactors as $allPoweredFactor) { |
||||
|
$returnValue *= (int) $allPoweredFactor; |
||||
|
} |
||||
|
|
||||
|
return $returnValue; |
||||
|
} |
||||
|
|
||||
|
private static function processPoweredFactors(array &$allPoweredFactors, array &$myPoweredFactors): void |
||||
|
{ |
||||
|
foreach ($myPoweredFactors as $myPoweredValue => $myPoweredFactor) { |
||||
|
if (isset($allPoweredFactors[$myPoweredValue])) { |
||||
|
if ($allPoweredFactors[$myPoweredValue] < $myPoweredFactor) { |
||||
|
$allPoweredFactors[$myPoweredValue] = $myPoweredFactor; |
||||
|
} |
||||
|
} else { |
||||
|
$allPoweredFactors[$myPoweredValue] = $myPoweredFactor; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
private static function testNonNulls(int $anyNonNulls): void |
||||
|
{ |
||||
|
if (!$anyNonNulls) { |
||||
|
throw new Exception(Functions::VALUE()); |
||||
|
} |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,102 @@ |
|||||
|
<?php |
||||
|
|
||||
|
namespace PhpOffice\PhpSpreadsheet\Calculation\MathTrig; |
||||
|
|
||||
|
use PhpOffice\PhpSpreadsheet\Calculation\ArrayEnabled; |
||||
|
use PhpOffice\PhpSpreadsheet\Calculation\Exception; |
||||
|
|
||||
|
class Logarithms |
||||
|
{ |
||||
|
use ArrayEnabled; |
||||
|
|
||||
|
/** |
||||
|
* LOG_BASE. |
||||
|
* |
||||
|
* Returns the logarithm of a number to a specified base. The default base is 10. |
||||
|
* |
||||
|
* Excel Function: |
||||
|
* LOG(number[,base]) |
||||
|
* |
||||
|
* @param mixed $number The positive real number for which you want the logarithm |
||||
|
* Or can be an array of values |
||||
|
* @param mixed $base The base of the logarithm. If base is omitted, it is assumed to be 10. |
||||
|
* Or can be an array of values |
||||
|
* |
||||
|
* @return array|float|string The result, or a string containing an error |
||||
|
* If an array of numbers is passed as an argument, then the returned result will also be an array |
||||
|
* with the same dimensions |
||||
|
*/ |
||||
|
public static function withBase($number, $base = 10) |
||||
|
{ |
||||
|
if (is_array($number) || is_array($base)) { |
||||
|
return self::evaluateArrayArguments([self::class, __FUNCTION__], $number, $base); |
||||
|
} |
||||
|
|
||||
|
try { |
||||
|
$number = Helpers::validateNumericNullBool($number); |
||||
|
Helpers::validatePositive($number); |
||||
|
$base = Helpers::validateNumericNullBool($base); |
||||
|
Helpers::validatePositive($base); |
||||
|
} catch (Exception $e) { |
||||
|
return $e->getMessage(); |
||||
|
} |
||||
|
|
||||
|
return log($number, $base); |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* LOG10. |
||||
|
* |
||||
|
* Returns the result of builtin function log after validating args. |
||||
|
* |
||||
|
* @param mixed $number Should be numeric |
||||
|
* Or can be an array of values |
||||
|
* |
||||
|
* @return array|float|string Rounded number |
||||
|
* If an array of numbers is passed as an argument, then the returned result will also be an array |
||||
|
* with the same dimensions |
||||
|
*/ |
||||
|
public static function base10($number) |
||||
|
{ |
||||
|
if (is_array($number)) { |
||||
|
return self::evaluateSingleArgumentArray([self::class, __FUNCTION__], $number); |
||||
|
} |
||||
|
|
||||
|
try { |
||||
|
$number = Helpers::validateNumericNullBool($number); |
||||
|
Helpers::validatePositive($number); |
||||
|
} catch (Exception $e) { |
||||
|
return $e->getMessage(); |
||||
|
} |
||||
|
|
||||
|
return log10($number); |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* LN. |
||||
|
* |
||||
|
* Returns the result of builtin function log after validating args. |
||||
|
* |
||||
|
* @param mixed $number Should be numeric |
||||
|
* Or can be an array of values |
||||
|
* |
||||
|
* @return array|float|string Rounded number |
||||
|
* If an array of numbers is passed as an argument, then the returned result will also be an array |
||||
|
* with the same dimensions |
||||
|
*/ |
||||
|
public static function natural($number) |
||||
|
{ |
||||
|
if (is_array($number)) { |
||||
|
return self::evaluateSingleArgumentArray([self::class, __FUNCTION__], $number); |
||||
|
} |
||||
|
|
||||
|
try { |
||||
|
$number = Helpers::validateNumericNullBool($number); |
||||
|
Helpers::validatePositive($number); |
||||
|
} catch (Exception $e) { |
||||
|
return $e->getMessage(); |
||||
|
} |
||||
|
|
||||
|
return log($number); |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,179 @@ |
|||||
|
<?php |
||||
|
|
||||
|
namespace PhpOffice\PhpSpreadsheet\Calculation\MathTrig; |
||||
|
|
||||
|
use Matrix\Builder; |
||||
|
use Matrix\Div0Exception as MatrixDiv0Exception; |
||||
|
use Matrix\Exception as MatrixException; |
||||
|
use Matrix\Matrix; |
||||
|
use PhpOffice\PhpSpreadsheet\Calculation\Exception; |
||||
|
use PhpOffice\PhpSpreadsheet\Calculation\Functions; |
||||
|
|
||||
|
class MatrixFunctions |
||||
|
{ |
||||
|
/** |
||||
|
* Convert parameter to Matrix. |
||||
|
* |
||||
|
* @param mixed $matrixValues A matrix of values |
||||
|
*/ |
||||
|
private static function getMatrix($matrixValues): Matrix |
||||
|
{ |
||||
|
$matrixData = []; |
||||
|
if (!is_array($matrixValues)) { |
||||
|
$matrixValues = [[$matrixValues]]; |
||||
|
} |
||||
|
|
||||
|
$row = 0; |
||||
|
foreach ($matrixValues as $matrixRow) { |
||||
|
if (!is_array($matrixRow)) { |
||||
|
$matrixRow = [$matrixRow]; |
||||
|
} |
||||
|
$column = 0; |
||||
|
foreach ($matrixRow as $matrixCell) { |
||||
|
if ((is_string($matrixCell)) || ($matrixCell === null)) { |
||||
|
throw new Exception(Functions::VALUE()); |
||||
|
} |
||||
|
$matrixData[$row][$column] = $matrixCell; |
||||
|
++$column; |
||||
|
} |
||||
|
++$row; |
||||
|
} |
||||
|
|
||||
|
return new Matrix($matrixData); |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* SEQUENCE. |
||||
|
* |
||||
|
* Generates a list of sequential numbers in an array. |
||||
|
* |
||||
|
* Excel Function: |
||||
|
* SEQUENCE(rows,[columns],[start],[step]) |
||||
|
* |
||||
|
* @param mixed $rows the number of rows to return, defaults to 1 |
||||
|
* @param mixed $columns the number of columns to return, defaults to 1 |
||||
|
* @param mixed $start the first number in the sequence, defaults to 1 |
||||
|
* @param mixed $step the amount to increment each subsequent value in the array, defaults to 1 |
||||
|
* |
||||
|
* @return array|string The resulting array, or a string containing an error |
||||
|
*/ |
||||
|
public static function sequence($rows = 1, $columns = 1, $start = 1, $step = 1) |
||||
|
{ |
||||
|
try { |
||||
|
$rows = (int) Helpers::validateNumericNullSubstitution($rows, 1); |
||||
|
Helpers::validatePositive($rows); |
||||
|
$columns = (int) Helpers::validateNumericNullSubstitution($columns, 1); |
||||
|
Helpers::validatePositive($columns); |
||||
|
$start = Helpers::validateNumericNullSubstitution($start, 1); |
||||
|
$step = Helpers::validateNumericNullSubstitution($step, 1); |
||||
|
} catch (Exception $e) { |
||||
|
return $e->getMessage(); |
||||
|
} |
||||
|
|
||||
|
if ($step === 0) { |
||||
|
return array_chunk( |
||||
|
array_fill(0, $rows * $columns, $start), |
||||
|
max($columns, 1) |
||||
|
); |
||||
|
} |
||||
|
|
||||
|
return array_chunk( |
||||
|
range($start, $start + (($rows * $columns - 1) * $step), $step), |
||||
|
max($columns, 1) |
||||
|
); |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* MDETERM. |
||||
|
* |
||||
|
* Returns the matrix determinant of an array. |
||||
|
* |
||||
|
* Excel Function: |
||||
|
* MDETERM(array) |
||||
|
* |
||||
|
* @param mixed $matrixValues A matrix of values |
||||
|
* |
||||
|
* @return float|string The result, or a string containing an error |
||||
|
*/ |
||||
|
public static function determinant($matrixValues) |
||||
|
{ |
||||
|
try { |
||||
|
$matrix = self::getMatrix($matrixValues); |
||||
|
|
||||
|
return $matrix->determinant(); |
||||
|
} catch (MatrixException $ex) { |
||||
|
return Functions::VALUE(); |
||||
|
} catch (Exception $e) { |
||||
|
return $e->getMessage(); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* MINVERSE. |
||||
|
* |
||||
|
* Returns the inverse matrix for the matrix stored in an array. |
||||
|
* |
||||
|
* Excel Function: |
||||
|
* MINVERSE(array) |
||||
|
* |
||||
|
* @param mixed $matrixValues A matrix of values |
||||
|
* |
||||
|
* @return array|string The result, or a string containing an error |
||||
|
*/ |
||||
|
public static function inverse($matrixValues) |
||||
|
{ |
||||
|
try { |
||||
|
$matrix = self::getMatrix($matrixValues); |
||||
|
|
||||
|
return $matrix->inverse()->toArray(); |
||||
|
} catch (MatrixDiv0Exception $e) { |
||||
|
return Functions::NAN(); |
||||
|
} catch (MatrixException $e) { |
||||
|
return Functions::VALUE(); |
||||
|
} catch (Exception $e) { |
||||
|
return $e->getMessage(); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* MMULT. |
||||
|
* |
||||
|
* @param mixed $matrixData1 A matrix of values |
||||
|
* @param mixed $matrixData2 A matrix of values |
||||
|
* |
||||
|
* @return array|string The result, or a string containing an error |
||||
|
*/ |
||||
|
public static function multiply($matrixData1, $matrixData2) |
||||
|
{ |
||||
|
try { |
||||
|
$matrixA = self::getMatrix($matrixData1); |
||||
|
$matrixB = self::getMatrix($matrixData2); |
||||
|
|
||||
|
return $matrixA->multiply($matrixB)->toArray(); |
||||
|
} catch (MatrixException $ex) { |
||||
|
return Functions::VALUE(); |
||||
|
} catch (Exception $e) { |
||||
|
return $e->getMessage(); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* MUnit. |
||||
|
* |
||||
|
* @param mixed $dimension Number of rows and columns |
||||
|
* |
||||
|
* @return array|string The result, or a string containing an error |
||||
|
*/ |
||||
|
public static function identity($dimension) |
||||
|
{ |
||||
|
try { |
||||
|
$dimension = (int) Helpers::validateNumericNullBool($dimension); |
||||
|
Helpers::validatePositive($dimension, Functions::VALUE()); |
||||
|
$matrix = Builder::createIdentityMatrix($dimension, 0)->toArray(); |
||||
|
|
||||
|
return $matrix; |
||||
|
} catch (Exception $e) { |
||||
|
return $e->getMessage(); |
||||
|
} |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,163 @@ |
|||||
|
<?php |
||||
|
|
||||
|
namespace PhpOffice\PhpSpreadsheet\Calculation\MathTrig; |
||||
|
|
||||
|
use PhpOffice\PhpSpreadsheet\Calculation\ArrayEnabled; |
||||
|
use PhpOffice\PhpSpreadsheet\Calculation\Exception; |
||||
|
use PhpOffice\PhpSpreadsheet\Calculation\Functions; |
||||
|
|
||||
|
class Operations |
||||
|
{ |
||||
|
use ArrayEnabled; |
||||
|
|
||||
|
/** |
||||
|
* MOD. |
||||
|
* |
||||
|
* @param mixed $dividend Dividend |
||||
|
* Or can be an array of values |
||||
|
* @param mixed $divisor Divisor |
||||
|
* Or can be an array of values |
||||
|
* |
||||
|
* @return array|float|int|string Remainder, or a string containing an error |
||||
|
* If an array of numbers is passed as an argument, then the returned result will also be an array |
||||
|
* with the same dimensions |
||||
|
*/ |
||||
|
public static function mod($dividend, $divisor) |
||||
|
{ |
||||
|
if (is_array($dividend) || is_array($divisor)) { |
||||
|
return self::evaluateArrayArguments([self::class, __FUNCTION__], $dividend, $divisor); |
||||
|
} |
||||
|
|
||||
|
try { |
||||
|
$dividend = Helpers::validateNumericNullBool($dividend); |
||||
|
$divisor = Helpers::validateNumericNullBool($divisor); |
||||
|
Helpers::validateNotZero($divisor); |
||||
|
} catch (Exception $e) { |
||||
|
return $e->getMessage(); |
||||
|
} |
||||
|
|
||||
|
if (($dividend < 0.0) && ($divisor > 0.0)) { |
||||
|
return $divisor - fmod(abs($dividend), $divisor); |
||||
|
} |
||||
|
if (($dividend > 0.0) && ($divisor < 0.0)) { |
||||
|
return $divisor + fmod($dividend, abs($divisor)); |
||||
|
} |
||||
|
|
||||
|
return fmod($dividend, $divisor); |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* POWER. |
||||
|
* |
||||
|
* Computes x raised to the power y. |
||||
|
* |
||||
|
* @param array|float|int $x |
||||
|
* Or can be an array of values |
||||
|
* @param array|float|int $y |
||||
|
* Or can be an array of values |
||||
|
* |
||||
|
* @return array|float|int|string The result, or a string containing an error |
||||
|
* If an array of numbers is passed as an argument, then the returned result will also be an array |
||||
|
* with the same dimensions |
||||
|
*/ |
||||
|
public static function power($x, $y) |
||||
|
{ |
||||
|
if (is_array($x) || is_array($y)) { |
||||
|
return self::evaluateArrayArguments([self::class, __FUNCTION__], $x, $y); |
||||
|
} |
||||
|
|
||||
|
try { |
||||
|
$x = Helpers::validateNumericNullBool($x); |
||||
|
$y = Helpers::validateNumericNullBool($y); |
||||
|
} catch (Exception $e) { |
||||
|
return $e->getMessage(); |
||||
|
} |
||||
|
|
||||
|
// Validate parameters |
||||
|
if (!$x && !$y) { |
||||
|
return Functions::NAN(); |
||||
|
} |
||||
|
if (!$x && $y < 0.0) { |
||||
|
return Functions::DIV0(); |
||||
|
} |
||||
|
|
||||
|
// Return |
||||
|
$result = $x ** $y; |
||||
|
|
||||
|
return Helpers::numberOrNan($result); |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* PRODUCT. |
||||
|
* |
||||
|
* PRODUCT returns the product of all the values and cells referenced in the argument list. |
||||
|
* |
||||
|
* Excel Function: |
||||
|
* PRODUCT(value1[,value2[, ...]]) |
||||
|
* |
||||
|
* @param mixed ...$args Data values |
||||
|
* |
||||
|
* @return float|string |
||||
|
*/ |
||||
|
public static function product(...$args) |
||||
|
{ |
||||
|
// Return value |
||||
|
$returnValue = null; |
||||
|
|
||||
|
// Loop through arguments |
||||
|
foreach (Functions::flattenArray($args) as $arg) { |
||||
|
// Is it a numeric value? |
||||
|
if (is_numeric($arg)) { |
||||
|
if ($returnValue === null) { |
||||
|
$returnValue = $arg; |
||||
|
} else { |
||||
|
$returnValue *= $arg; |
||||
|
} |
||||
|
} else { |
||||
|
return Functions::VALUE(); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
// Return |
||||
|
if ($returnValue === null) { |
||||
|
return 0; |
||||
|
} |
||||
|
|
||||
|
return $returnValue; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* QUOTIENT. |
||||
|
* |
||||
|
* QUOTIENT function returns the integer portion of a division. Numerator is the divided number |
||||
|
* and denominator is the divisor. |
||||
|
* |
||||
|
* Excel Function: |
||||
|
* QUOTIENT(value1,value2) |
||||
|
* |
||||
|
* @param mixed $numerator Expect float|int |
||||
|
* Or can be an array of values |
||||
|
* @param mixed $denominator Expect float|int |
||||
|
* Or can be an array of values |
||||
|
* |
||||
|
* @return array|int|string |
||||
|
* If an array of numbers is passed as an argument, then the returned result will also be an array |
||||
|
* with the same dimensions |
||||
|
*/ |
||||
|
public static function quotient($numerator, $denominator) |
||||
|
{ |
||||
|
if (is_array($numerator) || is_array($denominator)) { |
||||
|
return self::evaluateArrayArguments([self::class, __FUNCTION__], $numerator, $denominator); |
||||
|
} |
||||
|
|
||||
|
try { |
||||
|
$numerator = Helpers::validateNumericNullSubstitution($numerator, 0); |
||||
|
$denominator = Helpers::validateNumericNullSubstitution($denominator, 0); |
||||
|
Helpers::validateNotZero($denominator); |
||||
|
} catch (Exception $e) { |
||||
|
return $e->getMessage(); |
||||
|
} |
||||
|
|
||||
|
return (int) ($numerator / $denominator); |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,131 @@ |
|||||
|
<?php |
||||
|
|
||||
|
namespace PhpOffice\PhpSpreadsheet\Calculation\Statistical\Averages; |
||||
|
|
||||
|
use PhpOffice\PhpSpreadsheet\Calculation\Functions; |
||||
|
use PhpOffice\PhpSpreadsheet\Calculation\MathTrig; |
||||
|
use PhpOffice\PhpSpreadsheet\Calculation\Statistical\Averages; |
||||
|
use PhpOffice\PhpSpreadsheet\Calculation\Statistical\Counts; |
||||
|
use PhpOffice\PhpSpreadsheet\Calculation\Statistical\Minimum; |
||||
|
|
||||
|
class Mean |
||||
|
{ |
||||
|
/** |
||||
|
* GEOMEAN. |
||||
|
* |
||||
|
* Returns the geometric mean of an array or range of positive data. For example, you |
||||
|
* can use GEOMEAN to calculate average growth rate given compound interest with |
||||
|
* variable rates. |
||||
|
* |
||||
|
* Excel Function: |
||||
|
* GEOMEAN(value1[,value2[, ...]]) |
||||
|
* |
||||
|
* @param mixed ...$args Data values |
||||
|
* |
||||
|
* @return float|string |
||||
|
*/ |
||||
|
public static function geometric(...$args) |
||||
|
{ |
||||
|
$aArgs = Functions::flattenArray($args); |
||||
|
|
||||
|
$aMean = MathTrig\Operations::product($aArgs); |
||||
|
if (is_numeric($aMean) && ($aMean > 0)) { |
||||
|
$aCount = Counts::COUNT($aArgs); |
||||
|
if (Minimum::min($aArgs) > 0) { |
||||
|
return $aMean ** (1 / $aCount); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
return Functions::NAN(); |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* HARMEAN. |
||||
|
* |
||||
|
* Returns the harmonic mean of a data set. The harmonic mean is the reciprocal of the |
||||
|
* arithmetic mean of reciprocals. |
||||
|
* |
||||
|
* Excel Function: |
||||
|
* HARMEAN(value1[,value2[, ...]]) |
||||
|
* |
||||
|
* @param mixed ...$args Data values |
||||
|
* |
||||
|
* @return float|string |
||||
|
*/ |
||||
|
public static function harmonic(...$args) |
||||
|
{ |
||||
|
// Loop through arguments |
||||
|
$aArgs = Functions::flattenArray($args); |
||||
|
if (Minimum::min($aArgs) < 0) { |
||||
|
return Functions::NAN(); |
||||
|
} |
||||
|
|
||||
|
$returnValue = 0; |
||||
|
$aCount = 0; |
||||
|
foreach ($aArgs as $arg) { |
||||
|
// Is it a numeric value? |
||||
|
if ((is_numeric($arg)) && (!is_string($arg))) { |
||||
|
if ($arg <= 0) { |
||||
|
return Functions::NAN(); |
||||
|
} |
||||
|
$returnValue += (1 / $arg); |
||||
|
++$aCount; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
// Return |
||||
|
if ($aCount > 0) { |
||||
|
return 1 / ($returnValue / $aCount); |
||||
|
} |
||||
|
|
||||
|
return Functions::NA(); |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* TRIMMEAN. |
||||
|
* |
||||
|
* Returns the mean of the interior of a data set. TRIMMEAN calculates the mean |
||||
|
* taken by excluding a percentage of data points from the top and bottom tails |
||||
|
* of a data set. |
||||
|
* |
||||
|
* Excel Function: |
||||
|
* TRIMEAN(value1[,value2[, ...]], $discard) |
||||
|
* |
||||
|
* @param mixed $args Data values |
||||
|
* |
||||
|
* @return float|string |
||||
|
*/ |
||||
|
public static function trim(...$args) |
||||
|
{ |
||||
|
$aArgs = Functions::flattenArray($args); |
||||
|
|
||||
|
// Calculate |
||||
|
$percent = array_pop($aArgs); |
||||
|
|
||||
|
if ((is_numeric($percent)) && (!is_string($percent))) { |
||||
|
if (($percent < 0) || ($percent > 1)) { |
||||
|
return Functions::NAN(); |
||||
|
} |
||||
|
|
||||
|
$mArgs = []; |
||||
|
foreach ($aArgs as $arg) { |
||||
|
// Is it a numeric value? |
||||
|
if ((is_numeric($arg)) && (!is_string($arg))) { |
||||
|
$mArgs[] = $arg; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
$discard = floor(Counts::COUNT($mArgs) * $percent / 2); |
||||
|
sort($mArgs); |
||||
|
|
||||
|
for ($i = 0; $i < $discard; ++$i) { |
||||
|
array_pop($mArgs); |
||||
|
array_shift($mArgs); |
||||
|
} |
||||
|
|
||||
|
return Averages::average($mArgs); |
||||
|
} |
||||
|
|
||||
|
return Functions::VALUE(); |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,24 @@ |
|||||
|
<?php |
||||
|
|
||||
|
namespace PhpOffice\PhpSpreadsheet\Calculation\Statistical\Distributions; |
||||
|
|
||||
|
use PhpOffice\PhpSpreadsheet\Calculation\Exception; |
||||
|
use PhpOffice\PhpSpreadsheet\Calculation\Functions; |
||||
|
use PhpOffice\PhpSpreadsheet\Calculation\Statistical\StatisticalValidations; |
||||
|
|
||||
|
class DistributionValidations extends StatisticalValidations |
||||
|
{ |
||||
|
/** |
||||
|
* @param mixed $probability |
||||
|
*/ |
||||
|
public static function validateProbability($probability): float |
||||
|
{ |
||||
|
$probability = self::validateFloat($probability); |
||||
|
|
||||
|
if ($probability < 0.0 || $probability > 1.0) { |
||||
|
throw new Exception(Functions::NAN()); |
||||
|
} |
||||
|
|
||||
|
return $probability; |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,55 @@ |
|||||
|
<?php |
||||
|
|
||||
|
namespace PhpOffice\PhpSpreadsheet\Calculation\Statistical\Distributions; |
||||
|
|
||||
|
use PhpOffice\PhpSpreadsheet\Calculation\ArrayEnabled; |
||||
|
use PhpOffice\PhpSpreadsheet\Calculation\Exception; |
||||
|
use PhpOffice\PhpSpreadsheet\Calculation\Functions; |
||||
|
|
||||
|
class Exponential |
||||
|
{ |
||||
|
use ArrayEnabled; |
||||
|
|
||||
|
/** |
||||
|
* EXPONDIST. |
||||
|
* |
||||
|
* Returns the exponential distribution. Use EXPONDIST to model the time between events, |
||||
|
* such as how long an automated bank teller takes to deliver cash. For example, you can |
||||
|
* use EXPONDIST to determine the probability that the process takes at most 1 minute. |
||||
|
* |
||||
|
* @param mixed $value Float value for which we want the probability |
||||
|
* Or can be an array of values |
||||
|
* @param mixed $lambda The parameter value as a float |
||||
|
* Or can be an array of values |
||||
|
* @param mixed $cumulative Boolean value indicating if we want the cdf (true) or the pdf (false) |
||||
|
* Or can be an array of values |
||||
|
* |
||||
|
* @return array|float|string |
||||
|
* If an array of numbers is passed as an argument, then the returned result will also be an array |
||||
|
* with the same dimensions |
||||
|
*/ |
||||
|
public static function distribution($value, $lambda, $cumulative) |
||||
|
{ |
||||
|
if (is_array($value) || is_array($lambda) || is_array($cumulative)) { |
||||
|
return self::evaluateArrayArguments([self::class, __FUNCTION__], $value, $lambda, $cumulative); |
||||
|
} |
||||
|
|
||||
|
try { |
||||
|
$value = DistributionValidations::validateFloat($value); |
||||
|
$lambda = DistributionValidations::validateFloat($lambda); |
||||
|
$cumulative = DistributionValidations::validateBool($cumulative); |
||||
|
} catch (Exception $e) { |
||||
|
return $e->getMessage(); |
||||
|
} |
||||
|
|
||||
|
if (($value < 0) || ($lambda < 0)) { |
||||
|
return Functions::NAN(); |
||||
|
} |
||||
|
|
||||
|
if ($cumulative === true) { |
||||
|
return 1 - exp(0 - $value * $lambda); |
||||
|
} |
||||
|
|
||||
|
return $lambda * exp(0 - $value * $lambda); |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,64 @@ |
|||||
|
<?php |
||||
|
|
||||
|
namespace PhpOffice\PhpSpreadsheet\Calculation\Statistical\Distributions; |
||||
|
|
||||
|
use PhpOffice\PhpSpreadsheet\Calculation\ArrayEnabled; |
||||
|
use PhpOffice\PhpSpreadsheet\Calculation\Exception; |
||||
|
use PhpOffice\PhpSpreadsheet\Calculation\Functions; |
||||
|
|
||||
|
class F |
||||
|
{ |
||||
|
use ArrayEnabled; |
||||
|
|
||||
|
/** |
||||
|
* 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 mixed $value Float value for which we want the probability |
||||
|
* Or can be an array of values |
||||
|
* @param mixed $u The numerator degrees of freedom as an integer |
||||
|
* Or can be an array of values |
||||
|
* @param mixed $v The denominator degrees of freedom as an integer |
||||
|
* Or can be an array of values |
||||
|
* @param mixed $cumulative Boolean value indicating if we want the cdf (true) or the pdf (false) |
||||
|
* Or can be an array of values |
||||
|
* |
||||
|
* @return array|float|string |
||||
|
* If an array of numbers is passed as an argument, then the returned result will also be an array |
||||
|
* with the same dimensions |
||||
|
*/ |
||||
|
public static function distribution($value, $u, $v, $cumulative) |
||||
|
{ |
||||
|
if (is_array($value) || is_array($u) || is_array($v) || is_array($cumulative)) { |
||||
|
return self::evaluateArrayArguments([self::class, __FUNCTION__], $value, $u, $v, $cumulative); |
||||
|
} |
||||
|
|
||||
|
try { |
||||
|
$value = DistributionValidations::validateFloat($value); |
||||
|
$u = DistributionValidations::validateInt($u); |
||||
|
$v = DistributionValidations::validateInt($v); |
||||
|
$cumulative = DistributionValidations::validateBool($cumulative); |
||||
|
} catch (Exception $e) { |
||||
|
return $e->getMessage(); |
||||
|
} |
||||
|
|
||||
|
if ($value < 0 || $u < 1 || $v < 1) { |
||||
|
return Functions::NAN(); |
||||
|
} |
||||
|
|
||||
|
if ($cumulative) { |
||||
|
$adjustedValue = ($u * $value) / ($u * $value + $v); |
||||
|
|
||||
|
return Beta::incompleteBeta($adjustedValue, $u / 2, $v / 2); |
||||
|
} |
||||
|
|
||||
|
return (Gamma::gammaValue(($v + $u) / 2) / |
||||
|
(Gamma::gammaValue($u / 2) * Gamma::gammaValue($v / 2))) * |
||||
|
(($u / $v) ** ($u / 2)) * |
||||
|
(($value ** (($u - 2) / 2)) / ((1 + ($u / $v) * $value) ** (($u + $v) / 2))); |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,74 @@ |
|||||
|
<?php |
||||
|
|
||||
|
namespace PhpOffice\PhpSpreadsheet\Calculation\Statistical\Distributions; |
||||
|
|
||||
|
use PhpOffice\PhpSpreadsheet\Calculation\ArrayEnabled; |
||||
|
use PhpOffice\PhpSpreadsheet\Calculation\Exception; |
||||
|
use PhpOffice\PhpSpreadsheet\Calculation\Functions; |
||||
|
|
||||
|
class Fisher |
||||
|
{ |
||||
|
use ArrayEnabled; |
||||
|
|
||||
|
/** |
||||
|
* FISHER. |
||||
|
* |
||||
|
* Returns the Fisher transformation at x. This transformation produces a function that |
||||
|
* is normally distributed rather than skewed. Use this function to perform hypothesis |
||||
|
* testing on the correlation coefficient. |
||||
|
* |
||||
|
* @param mixed $value Float value for which we want the probability |
||||
|
* Or can be an array of values |
||||
|
* |
||||
|
* @return array|float|string |
||||
|
* If an array of numbers is passed as an argument, then the returned result will also be an array |
||||
|
* with the same dimensions |
||||
|
*/ |
||||
|
public static function distribution($value) |
||||
|
{ |
||||
|
if (is_array($value)) { |
||||
|
return self::evaluateSingleArgumentArray([self::class, __FUNCTION__], $value); |
||||
|
} |
||||
|
|
||||
|
try { |
||||
|
DistributionValidations::validateFloat($value); |
||||
|
} catch (Exception $e) { |
||||
|
return $e->getMessage(); |
||||
|
} |
||||
|
|
||||
|
if (($value <= -1) || ($value >= 1)) { |
||||
|
return Functions::NAN(); |
||||
|
} |
||||
|
|
||||
|
return 0.5 * log((1 + $value) / (1 - $value)); |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* FISHERINV. |
||||
|
* |
||||
|
* Returns the inverse of the Fisher transformation. Use this transformation when |
||||
|
* analyzing correlations between ranges or arrays of data. If y = FISHER(x), then |
||||
|
* FISHERINV(y) = x. |
||||
|
* |
||||
|
* @param mixed $probability Float probability at which you want to evaluate the distribution |
||||
|
* Or can be an array of values |
||||
|
* |
||||
|
* @return array|float|string |
||||
|
* If an array of numbers is passed as an argument, then the returned result will also be an array |
||||
|
* with the same dimensions |
||||
|
*/ |
||||
|
public static function inverse($probability) |
||||
|
{ |
||||
|
if (is_array($probability)) { |
||||
|
return self::evaluateSingleArgumentArray([self::class, __FUNCTION__], $probability); |
||||
|
} |
||||
|
|
||||
|
try { |
||||
|
DistributionValidations::validateFloat($probability); |
||||
|
} catch (Exception $e) { |
||||
|
return $e->getMessage(); |
||||
|
} |
||||
|
|
||||
|
return (exp(2 * $probability) - 1) / (exp(2 * $probability) + 1); |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,151 @@ |
|||||
|
<?php |
||||
|
|
||||
|
namespace PhpOffice\PhpSpreadsheet\Calculation\Statistical\Distributions; |
||||
|
|
||||
|
use PhpOffice\PhpSpreadsheet\Calculation\ArrayEnabled; |
||||
|
use PhpOffice\PhpSpreadsheet\Calculation\Exception; |
||||
|
use PhpOffice\PhpSpreadsheet\Calculation\Functions; |
||||
|
|
||||
|
class Gamma extends GammaBase |
||||
|
{ |
||||
|
use ArrayEnabled; |
||||
|
|
||||
|
/** |
||||
|
* GAMMA. |
||||
|
* |
||||
|
* Return the gamma function value. |
||||
|
* |
||||
|
* @param mixed $value Float value for which we want the probability |
||||
|
* Or can be an array of values |
||||
|
* |
||||
|
* @return array|float|string The result, or a string containing an error |
||||
|
* If an array of numbers is passed as an argument, then the returned result will also be an array |
||||
|
* with the same dimensions |
||||
|
*/ |
||||
|
public static function gamma($value) |
||||
|
{ |
||||
|
if (is_array($value)) { |
||||
|
return self::evaluateSingleArgumentArray([self::class, __FUNCTION__], $value); |
||||
|
} |
||||
|
|
||||
|
try { |
||||
|
$value = DistributionValidations::validateFloat($value); |
||||
|
} catch (Exception $e) { |
||||
|
return $e->getMessage(); |
||||
|
} |
||||
|
|
||||
|
if ((((int) $value) == ((float) $value)) && $value <= 0.0) { |
||||
|
return Functions::NAN(); |
||||
|
} |
||||
|
|
||||
|
return self::gammaValue($value); |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* GAMMADIST. |
||||
|
* |
||||
|
* Returns the gamma distribution. |
||||
|
* |
||||
|
* @param mixed $value Float Value at which you want to evaluate the distribution |
||||
|
* Or can be an array of values |
||||
|
* @param mixed $a Parameter to the distribution as a float |
||||
|
* Or can be an array of values |
||||
|
* @param mixed $b Parameter to the distribution as a float |
||||
|
* Or can be an array of values |
||||
|
* @param mixed $cumulative Boolean value indicating if we want the cdf (true) or the pdf (false) |
||||
|
* Or can be an array of values |
||||
|
* |
||||
|
* @return array|float|string |
||||
|
* If an array of numbers is passed as an argument, then the returned result will also be an array |
||||
|
* with the same dimensions |
||||
|
*/ |
||||
|
public static function distribution($value, $a, $b, $cumulative) |
||||
|
{ |
||||
|
if (is_array($value) || is_array($a) || is_array($b) || is_array($cumulative)) { |
||||
|
return self::evaluateArrayArguments([self::class, __FUNCTION__], $value, $a, $b, $cumulative); |
||||
|
} |
||||
|
|
||||
|
try { |
||||
|
$value = DistributionValidations::validateFloat($value); |
||||
|
$a = DistributionValidations::validateFloat($a); |
||||
|
$b = DistributionValidations::validateFloat($b); |
||||
|
$cumulative = DistributionValidations::validateBool($cumulative); |
||||
|
} catch (Exception $e) { |
||||
|
return $e->getMessage(); |
||||
|
} |
||||
|
|
||||
|
if (($value < 0) || ($a <= 0) || ($b <= 0)) { |
||||
|
return Functions::NAN(); |
||||
|
} |
||||
|
|
||||
|
return self::calculateDistribution($value, $a, $b, $cumulative); |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* GAMMAINV. |
||||
|
* |
||||
|
* Returns the inverse of the Gamma distribution. |
||||
|
* |
||||
|
* @param mixed $probability Float probability at which you want to evaluate the distribution |
||||
|
* Or can be an array of values |
||||
|
* @param mixed $alpha Parameter to the distribution as a float |
||||
|
* Or can be an array of values |
||||
|
* @param mixed $beta Parameter to the distribution as a float |
||||
|
* Or can be an array of values |
||||
|
* |
||||
|
* @return array|float|string |
||||
|
* If an array of numbers is passed as an argument, then the returned result will also be an array |
||||
|
* with the same dimensions |
||||
|
*/ |
||||
|
public static function inverse($probability, $alpha, $beta) |
||||
|
{ |
||||
|
if (is_array($probability) || is_array($alpha) || is_array($beta)) { |
||||
|
return self::evaluateArrayArguments([self::class, __FUNCTION__], $probability, $alpha, $beta); |
||||
|
} |
||||
|
|
||||
|
try { |
||||
|
$probability = DistributionValidations::validateProbability($probability); |
||||
|
$alpha = DistributionValidations::validateFloat($alpha); |
||||
|
$beta = DistributionValidations::validateFloat($beta); |
||||
|
} catch (Exception $e) { |
||||
|
return $e->getMessage(); |
||||
|
} |
||||
|
|
||||
|
if (($alpha <= 0.0) || ($beta <= 0.0)) { |
||||
|
return Functions::NAN(); |
||||
|
} |
||||
|
|
||||
|
return self::calculateInverse($probability, $alpha, $beta); |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* GAMMALN. |
||||
|
* |
||||
|
* Returns the natural logarithm of the gamma function. |
||||
|
* |
||||
|
* @param mixed $value Float Value at which you want to evaluate the distribution |
||||
|
* Or can be an array of values |
||||
|
* |
||||
|
* @return array|float|string |
||||
|
* If an array of numbers is passed as an argument, then the returned result will also be an array |
||||
|
* with the same dimensions |
||||
|
*/ |
||||
|
public static function ln($value) |
||||
|
{ |
||||
|
if (is_array($value)) { |
||||
|
return self::evaluateSingleArgumentArray([self::class, __FUNCTION__], $value); |
||||
|
} |
||||
|
|
||||
|
try { |
||||
|
$value = DistributionValidations::validateFloat($value); |
||||
|
} catch (Exception $e) { |
||||
|
return $e->getMessage(); |
||||
|
} |
||||
|
|
||||
|
if ($value <= 0) { |
||||
|
return Functions::NAN(); |
||||
|
} |
||||
|
|
||||
|
return log(self::gammaValue($value)); |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,381 @@ |
|||||
|
<?php |
||||
|
|
||||
|
namespace PhpOffice\PhpSpreadsheet\Calculation\Statistical\Distributions; |
||||
|
|
||||
|
use PhpOffice\PhpSpreadsheet\Calculation\Functions; |
||||
|
|
||||
|
abstract class GammaBase |
||||
|
{ |
||||
|
private const LOG_GAMMA_X_MAX_VALUE = 2.55e305; |
||||
|
|
||||
|
private const EPS = 2.22e-16; |
||||
|
|
||||
|
private const MAX_VALUE = 1.2e308; |
||||
|
|
||||
|
private const SQRT2PI = 2.5066282746310005024157652848110452530069867406099; |
||||
|
|
||||
|
private const MAX_ITERATIONS = 256; |
||||
|
|
||||
|
protected static function calculateDistribution(float $value, float $a, float $b, bool $cumulative) |
||||
|
{ |
||||
|
if ($cumulative) { |
||||
|
return self::incompleteGamma($a, $value / $b) / self::gammaValue($a); |
||||
|
} |
||||
|
|
||||
|
return (1 / ($b ** $a * self::gammaValue($a))) * $value ** ($a - 1) * exp(0 - ($value / $b)); |
||||
|
} |
||||
|
|
||||
|
protected static function calculateInverse(float $probability, float $alpha, float $beta) |
||||
|
{ |
||||
|
$xLo = 0; |
||||
|
$xHi = $alpha * $beta * 5; |
||||
|
|
||||
|
$dx = 1024; |
||||
|
$x = $xNew = 1; |
||||
|
$i = 0; |
||||
|
|
||||
|
while ((abs($dx) > Functions::PRECISION) && (++$i <= self::MAX_ITERATIONS)) { |
||||
|
// Apply Newton-Raphson step |
||||
|
$result = self::calculateDistribution($x, $alpha, $beta, true); |
||||
|
$error = $result - $probability; |
||||
|
|
||||
|
if ($error == 0.0) { |
||||
|
$dx = 0; |
||||
|
} elseif ($error < 0.0) { |
||||
|
$xLo = $x; |
||||
|
} else { |
||||
|
$xHi = $x; |
||||
|
} |
||||
|
|
||||
|
$pdf = self::calculateDistribution($x, $alpha, $beta, false); |
||||
|
// Avoid division by zero |
||||
|
if ($pdf !== 0.0) { |
||||
|
$dx = $error / $pdf; |
||||
|
$xNew = $x - $dx; |
||||
|
} |
||||
|
|
||||
|
// If the NR fails to converge (which for example may be the |
||||
|
// case if the initial guess is too rough) we apply a bisection |
||||
|
// step to determine a more narrow interval around the root. |
||||
|
if (($xNew < $xLo) || ($xNew > $xHi) || ($pdf == 0.0)) { |
||||
|
$xNew = ($xLo + $xHi) / 2; |
||||
|
$dx = $xNew - $x; |
||||
|
} |
||||
|
$x = $xNew; |
||||
|
} |
||||
|
|
||||
|
if ($i === self::MAX_ITERATIONS) { |
||||
|
return Functions::NA(); |
||||
|
} |
||||
|
|
||||
|
return $x; |
||||
|
} |
||||
|
|
||||
|
// |
||||
|
// Implementation of the incomplete Gamma function |
||||
|
// |
||||
|
public static function incompleteGamma(float $a, float $x): float |
||||
|
{ |
||||
|
static $max = 32; |
||||
|
$summer = 0; |
||||
|
for ($n = 0; $n <= $max; ++$n) { |
||||
|
$divisor = $a; |
||||
|
for ($i = 1; $i <= $n; ++$i) { |
||||
|
$divisor *= ($a + $i); |
||||
|
} |
||||
|
$summer += ($x ** $n / $divisor); |
||||
|
} |
||||
|
|
||||
|
return $x ** $a * exp(0 - $x) * $summer; |
||||
|
} |
||||
|
|
||||
|
// |
||||
|
// Implementation of the Gamma function |
||||
|
// |
||||
|
public static function gammaValue(float $value): float |
||||
|
{ |
||||
|
if ($value == 0.0) { |
||||
|
return 0; |
||||
|
} |
||||
|
|
||||
|
static $p0 = 1.000000000190015; |
||||
|
static $p = [ |
||||
|
1 => 76.18009172947146, |
||||
|
2 => -86.50532032941677, |
||||
|
3 => 24.01409824083091, |
||||
|
4 => -1.231739572450155, |
||||
|
5 => 1.208650973866179e-3, |
||||
|
6 => -5.395239384953e-6, |
||||
|
]; |
||||
|
|
||||
|
$y = $x = $value; |
||||
|
$tmp = $x + 5.5; |
||||
|
$tmp -= ($x + 0.5) * log($tmp); |
||||
|
|
||||
|
$summer = $p0; |
||||
|
for ($j = 1; $j <= 6; ++$j) { |
||||
|
$summer += ($p[$j] / ++$y); |
||||
|
} |
||||
|
|
||||
|
return exp(0 - $tmp + log(self::SQRT2PI * $summer / $x)); |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* logGamma function. |
||||
|
* |
||||
|
* @version 1.1 |
||||
|
* |
||||
|
* @author Jaco van Kooten |
||||
|
* |
||||
|
* Original author was Jaco van Kooten. Ported to PHP by Paul Meagher. |
||||
|
* |
||||
|
* The natural logarithm of the gamma function. <br /> |
||||
|
* Based on public domain NETLIB (Fortran) code by W. J. Cody and L. Stoltz <br /> |
||||
|
* Applied Mathematics Division <br /> |
||||
|
* Argonne National Laboratory <br /> |
||||
|
* Argonne, IL 60439 <br /> |
||||
|
* <p> |
||||
|
* References: |
||||
|
* <ol> |
||||
|
* <li>W. J. Cody and K. E. Hillstrom, 'Chebyshev Approximations for the Natural |
||||
|
* Logarithm of the Gamma Function,' Math. Comp. 21, 1967, pp. 198-203.</li> |
||||
|
* <li>K. E. Hillstrom, ANL/AMD Program ANLC366S, DGAMMA/DLGAMA, May, 1969.</li> |
||||
|
* <li>Hart, Et. Al., Computer Approximations, Wiley and sons, New York, 1968.</li> |
||||
|
* </ol> |
||||
|
* </p> |
||||
|
* <p> |
||||
|
* From the original documentation: |
||||
|
* </p> |
||||
|
* <p> |
||||
|
* This routine calculates the LOG(GAMMA) function for a positive real argument X. |
||||
|
* Computation is based on an algorithm outlined in references 1 and 2. |
||||
|
* The program uses rational functions that theoretically approximate LOG(GAMMA) |
||||
|
* to at least 18 significant decimal digits. The approximation for X > 12 is from |
||||
|
* reference 3, while approximations for X < 12.0 are similar to those in reference |
||||
|
* 1, but are unpublished. The accuracy achieved depends on the arithmetic system, |
||||
|
* the compiler, the intrinsic functions, and proper selection of the |
||||
|
* machine-dependent constants. |
||||
|
* </p> |
||||
|
* <p> |
||||
|
* Error returns: <br /> |
||||
|
* The program returns the value XINF for X .LE. 0.0 or when overflow would occur. |
||||
|
* The computation is believed to be free of underflow and overflow. |
||||
|
* </p> |
||||
|
* |
||||
|
* @return float MAX_VALUE for x < 0.0 or when overflow would occur, i.e. x > 2.55E305 |
||||
|
*/ |
||||
|
|
||||
|
// Log Gamma related constants |
||||
|
private const LG_D1 = -0.5772156649015328605195174; |
||||
|
|
||||
|
private const LG_D2 = 0.4227843350984671393993777; |
||||
|
|
||||
|
private const LG_D4 = 1.791759469228055000094023; |
||||
|
|
||||
|
private const LG_P1 = [ |
||||
|
4.945235359296727046734888, |
||||
|
201.8112620856775083915565, |
||||
|
2290.838373831346393026739, |
||||
|
11319.67205903380828685045, |
||||
|
28557.24635671635335736389, |
||||
|
38484.96228443793359990269, |
||||
|
26377.48787624195437963534, |
||||
|
7225.813979700288197698961, |
||||
|
]; |
||||
|
|
||||
|
private const LG_P2 = [ |
||||
|
4.974607845568932035012064, |
||||
|
542.4138599891070494101986, |
||||
|
15506.93864978364947665077, |
||||
|
184793.2904445632425417223, |
||||
|
1088204.76946882876749847, |
||||
|
3338152.967987029735917223, |
||||
|
5106661.678927352456275255, |
||||
|
3074109.054850539556250927, |
||||
|
]; |
||||
|
|
||||
|
private const LG_P4 = [ |
||||
|
14745.02166059939948905062, |
||||
|
2426813.369486704502836312, |
||||
|
121475557.4045093227939592, |
||||
|
2663432449.630976949898078, |
||||
|
29403789566.34553899906876, |
||||
|
170266573776.5398868392998, |
||||
|
492612579337.743088758812, |
||||
|
560625185622.3951465078242, |
||||
|
]; |
||||
|
|
||||
|
private const LG_Q1 = [ |
||||
|
67.48212550303777196073036, |
||||
|
1113.332393857199323513008, |
||||
|
7738.757056935398733233834, |
||||
|
27639.87074403340708898585, |
||||
|
54993.10206226157329794414, |
||||
|
61611.22180066002127833352, |
||||
|
36351.27591501940507276287, |
||||
|
8785.536302431013170870835, |
||||
|
]; |
||||
|
|
||||
|
private const LG_Q2 = [ |
||||
|
183.0328399370592604055942, |
||||
|
7765.049321445005871323047, |
||||
|
133190.3827966074194402448, |
||||
|
1136705.821321969608938755, |
||||
|
5267964.117437946917577538, |
||||
|
13467014.54311101692290052, |
||||
|
17827365.30353274213975932, |
||||
|
9533095.591844353613395747, |
||||
|
]; |
||||
|
|
||||
|
private const LG_Q4 = [ |
||||
|
2690.530175870899333379843, |
||||
|
639388.5654300092398984238, |
||||
|
41355999.30241388052042842, |
||||
|
1120872109.61614794137657, |
||||
|
14886137286.78813811542398, |
||||
|
101680358627.2438228077304, |
||||
|
341747634550.7377132798597, |
||||
|
446315818741.9713286462081, |
||||
|
]; |
||||
|
|
||||
|
private const LG_C = [ |
||||
|
-0.001910444077728, |
||||
|
8.4171387781295e-4, |
||||
|
-5.952379913043012e-4, |
||||
|
7.93650793500350248e-4, |
||||
|
-0.002777777777777681622553, |
||||
|
0.08333333333333333331554247, |
||||
|
0.0057083835261, |
||||
|
]; |
||||
|
|
||||
|
// Rough estimate of the fourth root of logGamma_xBig |
||||
|
private const LG_FRTBIG = 2.25e76; |
||||
|
|
||||
|
private const PNT68 = 0.6796875; |
||||
|
|
||||
|
// Function cache for logGamma |
||||
|
private static $logGammaCacheResult = 0.0; |
||||
|
|
||||
|
private static $logGammaCacheX = 0.0; |
||||
|
|
||||
|
public static function logGamma(float $x): float |
||||
|
{ |
||||
|
if ($x == self::$logGammaCacheX) { |
||||
|
return self::$logGammaCacheResult; |
||||
|
} |
||||
|
|
||||
|
$y = $x; |
||||
|
if ($y > 0.0 && $y <= self::LOG_GAMMA_X_MAX_VALUE) { |
||||
|
if ($y <= self::EPS) { |
||||
|
$res = -log($y); |
||||
|
} elseif ($y <= 1.5) { |
||||
|
$res = self::logGamma1($y); |
||||
|
} elseif ($y <= 4.0) { |
||||
|
$res = self::logGamma2($y); |
||||
|
} elseif ($y <= 12.0) { |
||||
|
$res = self::logGamma3($y); |
||||
|
} else { |
||||
|
$res = self::logGamma4($y); |
||||
|
} |
||||
|
} else { |
||||
|
// -------------------------- |
||||
|
// Return for bad arguments |
||||
|
// -------------------------- |
||||
|
$res = self::MAX_VALUE; |
||||
|
} |
||||
|
|
||||
|
// ------------------------------ |
||||
|
// Final adjustments and return |
||||
|
// ------------------------------ |
||||
|
self::$logGammaCacheX = $x; |
||||
|
self::$logGammaCacheResult = $res; |
||||
|
|
||||
|
return $res; |
||||
|
} |
||||
|
|
||||
|
private static function logGamma1(float $y) |
||||
|
{ |
||||
|
// --------------------- |
||||
|
// EPS .LT. X .LE. 1.5 |
||||
|
// --------------------- |
||||
|
if ($y < self::PNT68) { |
||||
|
$corr = -log($y); |
||||
|
$xm1 = $y; |
||||
|
} else { |
||||
|
$corr = 0.0; |
||||
|
$xm1 = $y - 1.0; |
||||
|
} |
||||
|
|
||||
|
$xden = 1.0; |
||||
|
$xnum = 0.0; |
||||
|
if ($y <= 0.5 || $y >= self::PNT68) { |
||||
|
for ($i = 0; $i < 8; ++$i) { |
||||
|
$xnum = $xnum * $xm1 + self::LG_P1[$i]; |
||||
|
$xden = $xden * $xm1 + self::LG_Q1[$i]; |
||||
|
} |
||||
|
|
||||
|
return $corr + $xm1 * (self::LG_D1 + $xm1 * ($xnum / $xden)); |
||||
|
} |
||||
|
|
||||
|
$xm2 = $y - 1.0; |
||||
|
for ($i = 0; $i < 8; ++$i) { |
||||
|
$xnum = $xnum * $xm2 + self::LG_P2[$i]; |
||||
|
$xden = $xden * $xm2 + self::LG_Q2[$i]; |
||||
|
} |
||||
|
|
||||
|
return $corr + $xm2 * (self::LG_D2 + $xm2 * ($xnum / $xden)); |
||||
|
} |
||||
|
|
||||
|
private static function logGamma2(float $y) |
||||
|
{ |
||||
|
// --------------------- |
||||
|
// 1.5 .LT. X .LE. 4.0 |
||||
|
// --------------------- |
||||
|
$xm2 = $y - 2.0; |
||||
|
$xden = 1.0; |
||||
|
$xnum = 0.0; |
||||
|
for ($i = 0; $i < 8; ++$i) { |
||||
|
$xnum = $xnum * $xm2 + self::LG_P2[$i]; |
||||
|
$xden = $xden * $xm2 + self::LG_Q2[$i]; |
||||
|
} |
||||
|
|
||||
|
return $xm2 * (self::LG_D2 + $xm2 * ($xnum / $xden)); |
||||
|
} |
||||
|
|
||||
|
protected static function logGamma3(float $y) |
||||
|
{ |
||||
|
// ---------------------- |
||||
|
// 4.0 .LT. X .LE. 12.0 |
||||
|
// ---------------------- |
||||
|
$xm4 = $y - 4.0; |
||||
|
$xden = -1.0; |
||||
|
$xnum = 0.0; |
||||
|
for ($i = 0; $i < 8; ++$i) { |
||||
|
$xnum = $xnum * $xm4 + self::LG_P4[$i]; |
||||
|
$xden = $xden * $xm4 + self::LG_Q4[$i]; |
||||
|
} |
||||
|
|
||||
|
return self::LG_D4 + $xm4 * ($xnum / $xden); |
||||
|
} |
||||
|
|
||||
|
protected static function logGamma4(float $y) |
||||
|
{ |
||||
|
// --------------------------------- |
||||
|
// Evaluate for argument .GE. 12.0 |
||||
|
// --------------------------------- |
||||
|
$res = 0.0; |
||||
|
if ($y <= self::LG_FRTBIG) { |
||||
|
$res = self::LG_C[6]; |
||||
|
$ysq = $y * $y; |
||||
|
for ($i = 0; $i < 6; ++$i) { |
||||
|
$res = $res / $ysq + self::LG_C[$i]; |
||||
|
} |
||||
|
$res /= $y; |
||||
|
$corr = log($y); |
||||
|
$res = $res + log(self::SQRT2PI) - 0.5 * $corr; |
||||
|
$res += $y * ($corr - 1.0); |
||||
|
} |
||||
|
|
||||
|
return $res; |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,76 @@ |
|||||
|
<?php |
||||
|
|
||||
|
namespace PhpOffice\PhpSpreadsheet\Calculation\Statistical\Distributions; |
||||
|
|
||||
|
use PhpOffice\PhpSpreadsheet\Calculation\ArrayEnabled; |
||||
|
use PhpOffice\PhpSpreadsheet\Calculation\Exception; |
||||
|
use PhpOffice\PhpSpreadsheet\Calculation\Functions; |
||||
|
use PhpOffice\PhpSpreadsheet\Calculation\MathTrig\Combinations; |
||||
|
|
||||
|
class HyperGeometric |
||||
|
{ |
||||
|
use ArrayEnabled; |
||||
|
|
||||
|
/** |
||||
|
* HYPGEOMDIST. |
||||
|
* |
||||
|
* Returns the hypergeometric distribution. HYPGEOMDIST returns the probability of a given number of |
||||
|
* sample successes, given the sample size, population successes, and population size. |
||||
|
* |
||||
|
* @param mixed $sampleSuccesses Integer number of successes in the sample |
||||
|
* Or can be an array of values |
||||
|
* @param mixed $sampleNumber Integer size of the sample |
||||
|
* Or can be an array of values |
||||
|
* @param mixed $populationSuccesses Integer number of successes in the population |
||||
|
* Or can be an array of values |
||||
|
* @param mixed $populationNumber Integer population size |
||||
|
* Or can be an array of values |
||||
|
* |
||||
|
* @return array|float|string |
||||
|
* If an array of numbers is passed as an argument, then the returned result will also be an array |
||||
|
* with the same dimensions |
||||
|
*/ |
||||
|
public static function distribution($sampleSuccesses, $sampleNumber, $populationSuccesses, $populationNumber) |
||||
|
{ |
||||
|
if ( |
||||
|
is_array($sampleSuccesses) || is_array($sampleNumber) || |
||||
|
is_array($populationSuccesses) || is_array($populationNumber) |
||||
|
) { |
||||
|
return self::evaluateArrayArguments( |
||||
|
[self::class, __FUNCTION__], |
||||
|
$sampleSuccesses, |
||||
|
$sampleNumber, |
||||
|
$populationSuccesses, |
||||
|
$populationNumber |
||||
|
); |
||||
|
} |
||||
|
|
||||
|
try { |
||||
|
$sampleSuccesses = DistributionValidations::validateInt($sampleSuccesses); |
||||
|
$sampleNumber = DistributionValidations::validateInt($sampleNumber); |
||||
|
$populationSuccesses = DistributionValidations::validateInt($populationSuccesses); |
||||
|
$populationNumber = DistributionValidations::validateInt($populationNumber); |
||||
|
} catch (Exception $e) { |
||||
|
return $e->getMessage(); |
||||
|
} |
||||
|
|
||||
|
if (($sampleSuccesses < 0) || ($sampleSuccesses > $sampleNumber) || ($sampleSuccesses > $populationSuccesses)) { |
||||
|
return Functions::NAN(); |
||||
|
} |
||||
|
if (($sampleNumber <= 0) || ($sampleNumber > $populationNumber)) { |
||||
|
return Functions::NAN(); |
||||
|
} |
||||
|
if (($populationSuccesses <= 0) || ($populationSuccesses > $populationNumber)) { |
||||
|
return Functions::NAN(); |
||||
|
} |
||||
|
|
||||
|
$successesPopulationAndSample = (float) Combinations::withoutRepetition($populationSuccesses, $sampleSuccesses); |
||||
|
$numbersPopulationAndSample = (float) Combinations::withoutRepetition($populationNumber, $sampleNumber); |
||||
|
$adjustedPopulationAndSample = (float) Combinations::withoutRepetition( |
||||
|
$populationNumber - $populationSuccesses, |
||||
|
$sampleNumber - $sampleSuccesses |
||||
|
); |
||||
|
|
||||
|
return $successesPopulationAndSample * $adjustedPopulationAndSample / $numbersPopulationAndSample; |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,137 @@ |
|||||
|
<?php |
||||
|
|
||||
|
namespace PhpOffice\PhpSpreadsheet\Calculation\Statistical\Distributions; |
||||
|
|
||||
|
use PhpOffice\PhpSpreadsheet\Calculation\ArrayEnabled; |
||||
|
use PhpOffice\PhpSpreadsheet\Calculation\Exception; |
||||
|
use PhpOffice\PhpSpreadsheet\Calculation\Functions; |
||||
|
|
||||
|
class LogNormal |
||||
|
{ |
||||
|
use ArrayEnabled; |
||||
|
|
||||
|
/** |
||||
|
* LOGNORMDIST. |
||||
|
* |
||||
|
* Returns the cumulative lognormal distribution of x, where ln(x) is normally distributed |
||||
|
* with parameters mean and standard_dev. |
||||
|
* |
||||
|
* @param mixed $value Float value for which we want the probability |
||||
|
* Or can be an array of values |
||||
|
* @param mixed $mean Mean value as a float |
||||
|
* Or can be an array of values |
||||
|
* @param mixed $stdDev Standard Deviation as a float |
||||
|
* Or can be an array of values |
||||
|
* |
||||
|
* @return array|float|string The result, or a string containing an error |
||||
|
* If an array of numbers is passed as an argument, then the returned result will also be an array |
||||
|
* with the same dimensions |
||||
|
*/ |
||||
|
public static function cumulative($value, $mean, $stdDev) |
||||
|
{ |
||||
|
if (is_array($value) || is_array($mean) || is_array($stdDev)) { |
||||
|
return self::evaluateArrayArguments([self::class, __FUNCTION__], $value, $mean, $stdDev); |
||||
|
} |
||||
|
|
||||
|
try { |
||||
|
$value = DistributionValidations::validateFloat($value); |
||||
|
$mean = DistributionValidations::validateFloat($mean); |
||||
|
$stdDev = DistributionValidations::validateFloat($stdDev); |
||||
|
} catch (Exception $e) { |
||||
|
return $e->getMessage(); |
||||
|
} |
||||
|
|
||||
|
if (($value <= 0) || ($stdDev <= 0)) { |
||||
|
return Functions::NAN(); |
||||
|
} |
||||
|
|
||||
|
return StandardNormal::cumulative((log($value) - $mean) / $stdDev); |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* LOGNORM.DIST. |
||||
|
* |
||||
|
* Returns the lognormal distribution of x, where ln(x) is normally distributed |
||||
|
* with parameters mean and standard_dev. |
||||
|
* |
||||
|
* @param mixed $value Float value for which we want the probability |
||||
|
* Or can be an array of values |
||||
|
* @param mixed $mean Mean value as a float |
||||
|
* Or can be an array of values |
||||
|
* @param mixed $stdDev Standard Deviation as a float |
||||
|
* Or can be an array of values |
||||
|
* @param mixed $cumulative Boolean value indicating if we want the cdf (true) or the pdf (false) |
||||
|
* Or can be an array of values |
||||
|
* |
||||
|
* @return array|float|string The result, or a string containing an error |
||||
|
* If an array of numbers is passed as an argument, then the returned result will also be an array |
||||
|
* with the same dimensions |
||||
|
*/ |
||||
|
public static function distribution($value, $mean, $stdDev, $cumulative = false) |
||||
|
{ |
||||
|
if (is_array($value) || is_array($mean) || is_array($stdDev) || is_array($cumulative)) { |
||||
|
return self::evaluateArrayArguments([self::class, __FUNCTION__], $value, $mean, $stdDev, $cumulative); |
||||
|
} |
||||
|
|
||||
|
try { |
||||
|
$value = DistributionValidations::validateFloat($value); |
||||
|
$mean = DistributionValidations::validateFloat($mean); |
||||
|
$stdDev = DistributionValidations::validateFloat($stdDev); |
||||
|
$cumulative = DistributionValidations::validateBool($cumulative); |
||||
|
} catch (Exception $e) { |
||||
|
return $e->getMessage(); |
||||
|
} |
||||
|
|
||||
|
if (($value <= 0) || ($stdDev <= 0)) { |
||||
|
return Functions::NAN(); |
||||
|
} |
||||
|
|
||||
|
if ($cumulative === true) { |
||||
|
return StandardNormal::distribution((log($value) - $mean) / $stdDev, true); |
||||
|
} |
||||
|
|
||||
|
return (1 / (sqrt(2 * M_PI) * $stdDev * $value)) * |
||||
|
exp(0 - ((log($value) - $mean) ** 2 / (2 * $stdDev ** 2))); |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* LOGINV. |
||||
|
* |
||||
|
* Returns the inverse of the lognormal cumulative distribution |
||||
|
* |
||||
|
* @param mixed $probability Float probability for which we want the value |
||||
|
* Or can be an array of values |
||||
|
* @param mixed $mean Mean Value as a float |
||||
|
* Or can be an array of values |
||||
|
* @param mixed $stdDev Standard Deviation as a float |
||||
|
* Or can be an array of values |
||||
|
* |
||||
|
* @return array|float|string The result, or a string containing an error |
||||
|
* If an array of numbers is passed as an argument, then the returned result will also be an array |
||||
|
* with the same dimensions |
||||
|
* |
||||
|
* @TODO Try implementing P J Acklam's refinement algorithm for greater |
||||
|
* accuracy if I can get my head round the mathematics |
||||
|
* (as described at) http://home.online.no/~pjacklam/notes/invnorm/ |
||||
|
*/ |
||||
|
public static function inverse($probability, $mean, $stdDev) |
||||
|
{ |
||||
|
if (is_array($probability) || is_array($mean) || is_array($stdDev)) { |
||||
|
return self::evaluateArrayArguments([self::class, __FUNCTION__], $probability, $mean, $stdDev); |
||||
|
} |
||||
|
|
||||
|
try { |
||||
|
$probability = DistributionValidations::validateProbability($probability); |
||||
|
$mean = DistributionValidations::validateFloat($mean); |
||||
|
$stdDev = DistributionValidations::validateFloat($stdDev); |
||||
|
} catch (Exception $e) { |
||||
|
return $e->getMessage(); |
||||
|
} |
||||
|
|
||||
|
if ($stdDev <= 0) { |
||||
|
return Functions::NAN(); |
||||
|
} |
||||
|
|
||||
|
return exp($mean + $stdDev * StandardNormal::inverse($probability)); |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,62 @@ |
|||||
|
<?php |
||||
|
|
||||
|
namespace PhpOffice\PhpSpreadsheet\Calculation\Statistical\Distributions; |
||||
|
|
||||
|
use PhpOffice\PhpSpreadsheet\Calculation\Functions; |
||||
|
|
||||
|
class NewtonRaphson |
||||
|
{ |
||||
|
private const MAX_ITERATIONS = 256; |
||||
|
|
||||
|
protected $callback; |
||||
|
|
||||
|
public function __construct(callable $callback) |
||||
|
{ |
||||
|
$this->callback = $callback; |
||||
|
} |
||||
|
|
||||
|
public function execute(float $probability) |
||||
|
{ |
||||
|
$xLo = 100; |
||||
|
$xHi = 0; |
||||
|
|
||||
|
$dx = 1; |
||||
|
$x = $xNew = 1; |
||||
|
$i = 0; |
||||
|
|
||||
|
while ((abs($dx) > Functions::PRECISION) && ($i++ < self::MAX_ITERATIONS)) { |
||||
|
// Apply Newton-Raphson step |
||||
|
$result = call_user_func($this->callback, $x); |
||||
|
$error = $result - $probability; |
||||
|
|
||||
|
if ($error == 0.0) { |
||||
|
$dx = 0; |
||||
|
} elseif ($error < 0.0) { |
||||
|
$xLo = $x; |
||||
|
} else { |
||||
|
$xHi = $x; |
||||
|
} |
||||
|
|
||||
|
// Avoid division by zero |
||||
|
if ($result != 0.0) { |
||||
|
$dx = $error / $result; |
||||
|
$xNew = $x - $dx; |
||||
|
} |
||||
|
|
||||
|
// If the NR fails to converge (which for example may be the |
||||
|
// case if the initial guess is too rough) we apply a bisection |
||||
|
// step to determine a more narrow interval around the root. |
||||
|
if (($xNew < $xLo) || ($xNew > $xHi) || ($result == 0.0)) { |
||||
|
$xNew = ($xLo + $xHi) / 2; |
||||
|
$dx = $xNew - $x; |
||||
|
} |
||||
|
$x = $xNew; |
||||
|
} |
||||
|
|
||||
|
if ($i == self::MAX_ITERATIONS) { |
||||
|
return Functions::NA(); |
||||
|
} |
||||
|
|
||||
|
return $x; |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,180 @@ |
|||||
|
<?php |
||||
|
|
||||
|
namespace PhpOffice\PhpSpreadsheet\Calculation\Statistical\Distributions; |
||||
|
|
||||
|
use PhpOffice\PhpSpreadsheet\Calculation\ArrayEnabled; |
||||
|
use PhpOffice\PhpSpreadsheet\Calculation\Engineering; |
||||
|
use PhpOffice\PhpSpreadsheet\Calculation\Exception; |
||||
|
use PhpOffice\PhpSpreadsheet\Calculation\Functions; |
||||
|
|
||||
|
class Normal |
||||
|
{ |
||||
|
use ArrayEnabled; |
||||
|
|
||||
|
public const SQRT2PI = 2.5066282746310005024157652848110452530069867406099; |
||||
|
|
||||
|
/** |
||||
|
* NORMDIST. |
||||
|
* |
||||
|
* Returns the normal distribution for the specified mean and standard deviation. This |
||||
|
* function has a very wide range of applications in statistics, including hypothesis |
||||
|
* testing. |
||||
|
* |
||||
|
* @param mixed $value Float value for which we want the probability |
||||
|
* Or can be an array of values |
||||
|
* @param mixed $mean Mean value as a float |
||||
|
* Or can be an array of values |
||||
|
* @param mixed $stdDev Standard Deviation as a float |
||||
|
* Or can be an array of values |
||||
|
* @param mixed $cumulative Boolean value indicating if we want the cdf (true) or the pdf (false) |
||||
|
* Or can be an array of values |
||||
|
* |
||||
|
* @return array|float|string The result, or a string containing an error |
||||
|
* If an array of numbers is passed as an argument, then the returned result will also be an array |
||||
|
* with the same dimensions |
||||
|
*/ |
||||
|
public static function distribution($value, $mean, $stdDev, $cumulative) |
||||
|
{ |
||||
|
if (is_array($value) || is_array($mean) || is_array($stdDev) || is_array($cumulative)) { |
||||
|
return self::evaluateArrayArguments([self::class, __FUNCTION__], $value, $mean, $stdDev, $cumulative); |
||||
|
} |
||||
|
|
||||
|
try { |
||||
|
$value = DistributionValidations::validateFloat($value); |
||||
|
$mean = DistributionValidations::validateFloat($mean); |
||||
|
$stdDev = DistributionValidations::validateFloat($stdDev); |
||||
|
$cumulative = DistributionValidations::validateBool($cumulative); |
||||
|
} catch (Exception $e) { |
||||
|
return $e->getMessage(); |
||||
|
} |
||||
|
|
||||
|
if ($stdDev < 0) { |
||||
|
return Functions::NAN(); |
||||
|
} |
||||
|
|
||||
|
if ($cumulative) { |
||||
|
return 0.5 * (1 + Engineering\Erf::erfValue(($value - $mean) / ($stdDev * sqrt(2)))); |
||||
|
} |
||||
|
|
||||
|
return (1 / (self::SQRT2PI * $stdDev)) * exp(0 - (($value - $mean) ** 2 / (2 * ($stdDev * $stdDev)))); |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* NORMINV. |
||||
|
* |
||||
|
* Returns the inverse of the normal cumulative distribution for the specified mean and standard deviation. |
||||
|
* |
||||
|
* @param mixed $probability Float probability for which we want the value |
||||
|
* Or can be an array of values |
||||
|
* @param mixed $mean Mean Value as a float |
||||
|
* Or can be an array of values |
||||
|
* @param mixed $stdDev Standard Deviation as a float |
||||
|
* Or can be an array of values |
||||
|
* |
||||
|
* @return array|float|string The result, or a string containing an error |
||||
|
* If an array of numbers is passed as an argument, then the returned result will also be an array |
||||
|
* with the same dimensions |
||||
|
*/ |
||||
|
public static function inverse($probability, $mean, $stdDev) |
||||
|
{ |
||||
|
if (is_array($probability) || is_array($mean) || is_array($stdDev)) { |
||||
|
return self::evaluateArrayArguments([self::class, __FUNCTION__], $probability, $mean, $stdDev); |
||||
|
} |
||||
|
|
||||
|
try { |
||||
|
$probability = DistributionValidations::validateProbability($probability); |
||||
|
$mean = DistributionValidations::validateFloat($mean); |
||||
|
$stdDev = DistributionValidations::validateFloat($stdDev); |
||||
|
} catch (Exception $e) { |
||||
|
return $e->getMessage(); |
||||
|
} |
||||
|
|
||||
|
if ($stdDev < 0) { |
||||
|
return Functions::NAN(); |
||||
|
} |
||||
|
|
||||
|
return (self::inverseNcdf($probability) * $stdDev) + $mean; |
||||
|
} |
||||
|
|
||||
|
/* |
||||
|
* inverse_ncdf.php |
||||
|
* ------------------- |
||||
|
* begin : Friday, January 16, 2004 |
||||
|
* copyright : (C) 2004 Michael Nickerson |
||||
|
* email : nickersonm@yahoo.com |
||||
|
* |
||||
|
*/ |
||||
|
private static function inverseNcdf($p) |
||||
|
{ |
||||
|
// Inverse ncdf approximation by Peter J. Acklam, implementation adapted to |
||||
|
// PHP by Michael Nickerson, using Dr. Thomas Ziegler's C implementation as |
||||
|
// a guide. http://home.online.no/~pjacklam/notes/invnorm/index.html |
||||
|
// I have not checked the accuracy of this implementation. Be aware that PHP |
||||
|
// will truncate the coeficcients to 14 digits. |
||||
|
|
||||
|
// You have permission to use and distribute this function freely for |
||||
|
// whatever purpose you want, but please show common courtesy and give credit |
||||
|
// where credit is due. |
||||
|
|
||||
|
// Input paramater is $p - probability - where 0 < p < 1. |
||||
|
|
||||
|
// Coefficients in rational approximations |
||||
|
static $a = [ |
||||
|
1 => -3.969683028665376e+01, |
||||
|
2 => 2.209460984245205e+02, |
||||
|
3 => -2.759285104469687e+02, |
||||
|
4 => 1.383577518672690e+02, |
||||
|
5 => -3.066479806614716e+01, |
||||
|
6 => 2.506628277459239e+00, |
||||
|
]; |
||||
|
|
||||
|
static $b = [ |
||||
|
1 => -5.447609879822406e+01, |
||||
|
2 => 1.615858368580409e+02, |
||||
|
3 => -1.556989798598866e+02, |
||||
|
4 => 6.680131188771972e+01, |
||||
|
5 => -1.328068155288572e+01, |
||||
|
]; |
||||
|
|
||||
|
static $c = [ |
||||
|
1 => -7.784894002430293e-03, |
||||
|
2 => -3.223964580411365e-01, |
||||
|
3 => -2.400758277161838e+00, |
||||
|
4 => -2.549732539343734e+00, |
||||
|
5 => 4.374664141464968e+00, |
||||
|
6 => 2.938163982698783e+00, |
||||
|
]; |
||||
|
|
||||
|
static $d = [ |
||||
|
1 => 7.784695709041462e-03, |
||||
|
2 => 3.224671290700398e-01, |
||||
|
3 => 2.445134137142996e+00, |
||||
|
4 => 3.754408661907416e+00, |
||||
|
]; |
||||
|
|
||||
|
// Define lower and upper region break-points. |
||||
|
$p_low = 0.02425; //Use lower region approx. below this |
||||
|
$p_high = 1 - $p_low; //Use upper region approx. above this |
||||
|
|
||||
|
if (0 < $p && $p < $p_low) { |
||||
|
// Rational approximation for lower region. |
||||
|
$q = sqrt(-2 * log($p)); |
||||
|
|
||||
|
return ((((($c[1] * $q + $c[2]) * $q + $c[3]) * $q + $c[4]) * $q + $c[5]) * $q + $c[6]) / |
||||
|
(((($d[1] * $q + $d[2]) * $q + $d[3]) * $q + $d[4]) * $q + 1); |
||||
|
} elseif ($p_high < $p && $p < 1) { |
||||
|
// Rational approximation for upper region. |
||||
|
$q = sqrt(-2 * log(1 - $p)); |
||||
|
|
||||
|
return -((((($c[1] * $q + $c[2]) * $q + $c[3]) * $q + $c[4]) * $q + $c[5]) * $q + $c[6]) / |
||||
|
(((($d[1] * $q + $d[2]) * $q + $d[3]) * $q + $d[4]) * $q + 1); |
||||
|
} |
||||
|
|
||||
|
// Rational approximation for central region. |
||||
|
$q = $p - 0.5; |
||||
|
$r = $q * $q; |
||||
|
|
||||
|
return ((((($a[1] * $r + $a[2]) * $r + $a[3]) * $r + $a[4]) * $r + $a[5]) * $r + $a[6]) * $q / |
||||
|
((((($b[1] * $r + $b[2]) * $r + $b[3]) * $r + $b[4]) * $r + $b[5]) * $r + 1); |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,17 @@ |
|||||
|
<?php |
||||
|
|
||||
|
namespace PhpOffice\PhpSpreadsheet\Calculation\Statistical; |
||||
|
|
||||
|
abstract class MaxMinBase |
||||
|
{ |
||||
|
protected static function datatypeAdjustmentAllowStrings($value) |
||||
|
{ |
||||
|
if (is_bool($value)) { |
||||
|
return (int) $value; |
||||
|
} elseif (is_string($value)) { |
||||
|
return 0; |
||||
|
} |
||||
|
|
||||
|
return $value; |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,78 @@ |
|||||
|
<?php |
||||
|
|
||||
|
namespace PhpOffice\PhpSpreadsheet\Calculation\Statistical; |
||||
|
|
||||
|
use PhpOffice\PhpSpreadsheet\Calculation\Functions; |
||||
|
|
||||
|
class Maximum extends MaxMinBase |
||||
|
{ |
||||
|
/** |
||||
|
* MAX. |
||||
|
* |
||||
|
* MAX returns the value of the element of the values passed that has the highest value, |
||||
|
* with negative numbers considered smaller than positive numbers. |
||||
|
* |
||||
|
* Excel Function: |
||||
|
* MAX(value1[,value2[, ...]]) |
||||
|
* |
||||
|
* @param mixed ...$args Data values |
||||
|
* |
||||
|
* @return float |
||||
|
*/ |
||||
|
public static function max(...$args) |
||||
|
{ |
||||
|
$returnValue = null; |
||||
|
|
||||
|
// Loop through arguments |
||||
|
$aArgs = Functions::flattenArray($args); |
||||
|
foreach ($aArgs as $arg) { |
||||
|
// Is it a numeric value? |
||||
|
if ((is_numeric($arg)) && (!is_string($arg))) { |
||||
|
if (($returnValue === null) || ($arg > $returnValue)) { |
||||
|
$returnValue = $arg; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
if ($returnValue === null) { |
||||
|
return 0; |
||||
|
} |
||||
|
|
||||
|
return $returnValue; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* MAXA. |
||||
|
* |
||||
|
* Returns the greatest value in a list of arguments, including numbers, text, and logical values |
||||
|
* |
||||
|
* Excel Function: |
||||
|
* MAXA(value1[,value2[, ...]]) |
||||
|
* |
||||
|
* @param mixed ...$args Data values |
||||
|
* |
||||
|
* @return float |
||||
|
*/ |
||||
|
public static function maxA(...$args) |
||||
|
{ |
||||
|
$returnValue = null; |
||||
|
|
||||
|
// Loop through arguments |
||||
|
$aArgs = Functions::flattenArray($args); |
||||
|
foreach ($aArgs as $arg) { |
||||
|
// Is it a numeric value? |
||||
|
if ((is_numeric($arg)) || (is_bool($arg)) || ((is_string($arg) && ($arg != '')))) { |
||||
|
$arg = self::datatypeAdjustmentAllowStrings($arg); |
||||
|
if (($returnValue === null) || ($arg > $returnValue)) { |
||||
|
$returnValue = $arg; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
if ($returnValue === null) { |
||||
|
return 0; |
||||
|
} |
||||
|
|
||||
|
return $returnValue; |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,78 @@ |
|||||
|
<?php |
||||
|
|
||||
|
namespace PhpOffice\PhpSpreadsheet\Calculation\Statistical; |
||||
|
|
||||
|
use PhpOffice\PhpSpreadsheet\Calculation\Functions; |
||||
|
|
||||
|
class Minimum extends MaxMinBase |
||||
|
{ |
||||
|
/** |
||||
|
* MIN. |
||||
|
* |
||||
|
* MIN returns the value of the element of the values passed that has the smallest value, |
||||
|
* with negative numbers considered smaller than positive numbers. |
||||
|
* |
||||
|
* Excel Function: |
||||
|
* MIN(value1[,value2[, ...]]) |
||||
|
* |
||||
|
* @param mixed ...$args Data values |
||||
|
* |
||||
|
* @return float |
||||
|
*/ |
||||
|
public static function min(...$args) |
||||
|
{ |
||||
|
$returnValue = null; |
||||
|
|
||||
|
// Loop through arguments |
||||
|
$aArgs = Functions::flattenArray($args); |
||||
|
foreach ($aArgs as $arg) { |
||||
|
// Is it a numeric value? |
||||
|
if ((is_numeric($arg)) && (!is_string($arg))) { |
||||
|
if (($returnValue === null) || ($arg < $returnValue)) { |
||||
|
$returnValue = $arg; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
if ($returnValue === null) { |
||||
|
return 0; |
||||
|
} |
||||
|
|
||||
|
return $returnValue; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* MINA. |
||||
|
* |
||||
|
* Returns the smallest value in a list of arguments, including numbers, text, and logical values |
||||
|
* |
||||
|
* Excel Function: |
||||
|
* MINA(value1[,value2[, ...]]) |
||||
|
* |
||||
|
* @param mixed ...$args Data values |
||||
|
* |
||||
|
* @return float |
||||
|
*/ |
||||
|
public static function minA(...$args) |
||||
|
{ |
||||
|
$returnValue = null; |
||||
|
|
||||
|
// Loop through arguments |
||||
|
$aArgs = Functions::flattenArray($args); |
||||
|
foreach ($aArgs as $arg) { |
||||
|
// Is it a numeric value? |
||||
|
if ((is_numeric($arg)) || (is_bool($arg)) || ((is_string($arg) && ($arg != '')))) { |
||||
|
$arg = self::datatypeAdjustmentAllowStrings($arg); |
||||
|
if (($returnValue === null) || ($arg < $returnValue)) { |
||||
|
$returnValue = $arg; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
if ($returnValue === null) { |
||||
|
return 0; |
||||
|
} |
||||
|
|
||||
|
return $returnValue; |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,205 @@ |
|||||
|
<?php |
||||
|
|
||||
|
namespace PhpOffice\PhpSpreadsheet\Calculation\Statistical; |
||||
|
|
||||
|
use PhpOffice\PhpSpreadsheet\Calculation\Exception; |
||||
|
use PhpOffice\PhpSpreadsheet\Calculation\Functions; |
||||
|
|
||||
|
class Percentiles |
||||
|
{ |
||||
|
public const RANK_SORT_DESCENDING = 0; |
||||
|
|
||||
|
public const RANK_SORT_ASCENDING = 1; |
||||
|
|
||||
|
/** |
||||
|
* PERCENTILE. |
||||
|
* |
||||
|
* Returns the nth percentile of values in a range.. |
||||
|
* |
||||
|
* Excel Function: |
||||
|
* PERCENTILE(value1[,value2[, ...]],entry) |
||||
|
* |
||||
|
* @param mixed $args Data values |
||||
|
* |
||||
|
* @return float|string The result, or a string containing an error |
||||
|
*/ |
||||
|
public static function PERCENTILE(...$args) |
||||
|
{ |
||||
|
$aArgs = Functions::flattenArray($args); |
||||
|
|
||||
|
// Calculate |
||||
|
$entry = array_pop($aArgs); |
||||
|
|
||||
|
try { |
||||
|
$entry = StatisticalValidations::validateFloat($entry); |
||||
|
} catch (Exception $e) { |
||||
|
return $e->getMessage(); |
||||
|
} |
||||
|
|
||||
|
if (($entry < 0) || ($entry > 1)) { |
||||
|
return Functions::NAN(); |
||||
|
} |
||||
|
|
||||
|
$mArgs = self::percentileFilterValues($aArgs); |
||||
|
$mValueCount = count($mArgs); |
||||
|
if ($mValueCount > 0) { |
||||
|
sort($mArgs); |
||||
|
$count = Counts::COUNT($mArgs); |
||||
|
$index = $entry * ($count - 1); |
||||
|
$iBase = floor($index); |
||||
|
if ($index == $iBase) { |
||||
|
return $mArgs[$index]; |
||||
|
} |
||||
|
$iNext = $iBase + 1; |
||||
|
$iProportion = $index - $iBase; |
||||
|
|
||||
|
return $mArgs[$iBase] + (($mArgs[$iNext] - $mArgs[$iBase]) * $iProportion); |
||||
|
} |
||||
|
|
||||
|
return Functions::NAN(); |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* PERCENTRANK. |
||||
|
* |
||||
|
* Returns the rank of a value in a data set as a percentage of the data set. |
||||
|
* Note that the returned rank is simply rounded to the appropriate significant digits, |
||||
|
* rather than floored (as MS Excel), so value 3 for a value set of 1, 2, 3, 4 will return |
||||
|
* 0.667 rather than 0.666 |
||||
|
* |
||||
|
* @param mixed $valueSet An array of (float) values, or a reference to, a list of numbers |
||||
|
* @param mixed $value The number whose rank you want to find |
||||
|
* @param mixed $significance The (integer) number of significant digits for the returned percentage value |
||||
|
* |
||||
|
* @return float|string (string if result is an error) |
||||
|
*/ |
||||
|
public static function PERCENTRANK($valueSet, $value, $significance = 3) |
||||
|
{ |
||||
|
$valueSet = Functions::flattenArray($valueSet); |
||||
|
$value = Functions::flattenSingleValue($value); |
||||
|
$significance = ($significance === null) ? 3 : Functions::flattenSingleValue($significance); |
||||
|
|
||||
|
try { |
||||
|
$value = StatisticalValidations::validateFloat($value); |
||||
|
$significance = StatisticalValidations::validateInt($significance); |
||||
|
} catch (Exception $e) { |
||||
|
return $e->getMessage(); |
||||
|
} |
||||
|
|
||||
|
$valueSet = self::rankFilterValues($valueSet); |
||||
|
$valueCount = count($valueSet); |
||||
|
if ($valueCount == 0) { |
||||
|
return Functions::NA(); |
||||
|
} |
||||
|
sort($valueSet, SORT_NUMERIC); |
||||
|
|
||||
|
$valueAdjustor = $valueCount - 1; |
||||
|
if (($value < $valueSet[0]) || ($value > $valueSet[$valueAdjustor])) { |
||||
|
return Functions::NA(); |
||||
|
} |
||||
|
|
||||
|
$pos = array_search($value, $valueSet); |
||||
|
if ($pos === false) { |
||||
|
$pos = 0; |
||||
|
$testValue = $valueSet[0]; |
||||
|
while ($testValue < $value) { |
||||
|
$testValue = $valueSet[++$pos]; |
||||
|
} |
||||
|
--$pos; |
||||
|
$pos += (($value - $valueSet[$pos]) / ($testValue - $valueSet[$pos])); |
||||
|
} |
||||
|
|
||||
|
return round($pos / $valueAdjustor, $significance); |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* QUARTILE. |
||||
|
* |
||||
|
* Returns the quartile of a data set. |
||||
|
* |
||||
|
* Excel Function: |
||||
|
* QUARTILE(value1[,value2[, ...]],entry) |
||||
|
* |
||||
|
* @param mixed $args Data values |
||||
|
* |
||||
|
* @return float|string The result, or a string containing an error |
||||
|
*/ |
||||
|
public static function QUARTILE(...$args) |
||||
|
{ |
||||
|
$aArgs = Functions::flattenArray($args); |
||||
|
$entry = array_pop($aArgs); |
||||
|
|
||||
|
try { |
||||
|
$entry = StatisticalValidations::validateFloat($entry); |
||||
|
} catch (Exception $e) { |
||||
|
return $e->getMessage(); |
||||
|
} |
||||
|
|
||||
|
$entry = floor($entry); |
||||
|
$entry /= 4; |
||||
|
if (($entry < 0) || ($entry > 1)) { |
||||
|
return Functions::NAN(); |
||||
|
} |
||||
|
|
||||
|
return self::PERCENTILE($aArgs, $entry); |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* RANK. |
||||
|
* |
||||
|
* Returns the rank of a number in a list of numbers. |
||||
|
* |
||||
|
* @param mixed $value The number whose rank you want to find |
||||
|
* @param mixed $valueSet An array of float values, or a reference to, a list of numbers |
||||
|
* @param mixed $order Order to sort the values in the value set |
||||
|
* |
||||
|
* @return float|string The result, or a string containing an error (0 = Descending, 1 = Ascending) |
||||
|
*/ |
||||
|
public static function RANK($value, $valueSet, $order = self::RANK_SORT_DESCENDING) |
||||
|
{ |
||||
|
$value = Functions::flattenSingleValue($value); |
||||
|
$valueSet = Functions::flattenArray($valueSet); |
||||
|
$order = ($order === null) ? self::RANK_SORT_DESCENDING : Functions::flattenSingleValue($order); |
||||
|
|
||||
|
try { |
||||
|
$value = StatisticalValidations::validateFloat($value); |
||||
|
$order = StatisticalValidations::validateInt($order); |
||||
|
} catch (Exception $e) { |
||||
|
return $e->getMessage(); |
||||
|
} |
||||
|
|
||||
|
$valueSet = self::rankFilterValues($valueSet); |
||||
|
if ($order === self::RANK_SORT_DESCENDING) { |
||||
|
rsort($valueSet, SORT_NUMERIC); |
||||
|
} else { |
||||
|
sort($valueSet, SORT_NUMERIC); |
||||
|
} |
||||
|
|
||||
|
$pos = array_search($value, $valueSet); |
||||
|
if ($pos === false) { |
||||
|
return Functions::NA(); |
||||
|
} |
||||
|
|
||||
|
return ++$pos; |
||||
|
} |
||||
|
|
||||
|
protected static function percentileFilterValues(array $dataSet) |
||||
|
{ |
||||
|
return array_filter( |
||||
|
$dataSet, |
||||
|
function ($value): bool { |
||||
|
return is_numeric($value) && !is_string($value); |
||||
|
} |
||||
|
); |
||||
|
} |
||||
|
|
||||
|
protected static function rankFilterValues(array $dataSet) |
||||
|
{ |
||||
|
return array_filter( |
||||
|
$dataSet, |
||||
|
function ($value): bool { |
||||
|
return is_numeric($value); |
||||
|
} |
||||
|
); |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,98 @@ |
|||||
|
<?php |
||||
|
|
||||
|
namespace PhpOffice\PhpSpreadsheet\Calculation\TextData; |
||||
|
|
||||
|
use PhpOffice\PhpSpreadsheet\Calculation\ArrayEnabled; |
||||
|
use PhpOffice\PhpSpreadsheet\Calculation\Exception as CalcExp; |
||||
|
|
||||
|
class Extract |
||||
|
{ |
||||
|
use ArrayEnabled; |
||||
|
|
||||
|
/** |
||||
|
* LEFT. |
||||
|
* |
||||
|
* @param mixed $value String value from which to extract characters |
||||
|
* Or can be an array of values |
||||
|
* @param mixed $chars The number of characters to extract (as an integer) |
||||
|
* Or can be an array of values |
||||
|
* |
||||
|
* @return array|string The joined string |
||||
|
* If an array of values is passed for the $value or $chars arguments, then the returned result |
||||
|
* will also be an array with matching dimensions |
||||
|
*/ |
||||
|
public static function left($value, $chars = 1) |
||||
|
{ |
||||
|
if (is_array($value) || is_array($chars)) { |
||||
|
return self::evaluateArrayArguments([self::class, __FUNCTION__], $value, $chars); |
||||
|
} |
||||
|
|
||||
|
try { |
||||
|
$value = Helpers::extractString($value); |
||||
|
$chars = Helpers::extractInt($chars, 0, 1); |
||||
|
} catch (CalcExp $e) { |
||||
|
return $e->getMessage(); |
||||
|
} |
||||
|
|
||||
|
return mb_substr($value ?? '', 0, $chars, 'UTF-8'); |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* MID. |
||||
|
* |
||||
|
* @param mixed $value String value from which to extract characters |
||||
|
* Or can be an array of values |
||||
|
* @param mixed $start Integer offset of the first character that we want to extract |
||||
|
* Or can be an array of values |
||||
|
* @param mixed $chars The number of characters to extract (as an integer) |
||||
|
* Or can be an array of values |
||||
|
* |
||||
|
* @return array|string The joined string |
||||
|
* If an array of values is passed for the $value, $start or $chars arguments, then the returned result |
||||
|
* will also be an array with matching dimensions |
||||
|
*/ |
||||
|
public static function mid($value, $start, $chars) |
||||
|
{ |
||||
|
if (is_array($value) || is_array($start) || is_array($chars)) { |
||||
|
return self::evaluateArrayArguments([self::class, __FUNCTION__], $value, $start, $chars); |
||||
|
} |
||||
|
|
||||
|
try { |
||||
|
$value = Helpers::extractString($value); |
||||
|
$start = Helpers::extractInt($start, 1); |
||||
|
$chars = Helpers::extractInt($chars, 0); |
||||
|
} catch (CalcExp $e) { |
||||
|
return $e->getMessage(); |
||||
|
} |
||||
|
|
||||
|
return mb_substr($value ?? '', --$start, $chars, 'UTF-8'); |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* RIGHT. |
||||
|
* |
||||
|
* @param mixed $value String value from which to extract characters |
||||
|
* Or can be an array of values |
||||
|
* @param mixed $chars The number of characters to extract (as an integer) |
||||
|
* Or can be an array of values |
||||
|
* |
||||
|
* @return array|string The joined string |
||||
|
* If an array of values is passed for the $value or $chars arguments, then the returned result |
||||
|
* will also be an array with matching dimensions |
||||
|
*/ |
||||
|
public static function right($value, $chars = 1) |
||||
|
{ |
||||
|
if (is_array($value) || is_array($chars)) { |
||||
|
return self::evaluateArrayArguments([self::class, __FUNCTION__], $value, $chars); |
||||
|
} |
||||
|
|
||||
|
try { |
||||
|
$value = Helpers::extractString($value); |
||||
|
$chars = Helpers::extractInt($chars, 0, 1); |
||||
|
} catch (CalcExp $e) { |
||||
|
return $e->getMessage(); |
||||
|
} |
||||
|
|
||||
|
return mb_substr($value ?? '', mb_strlen($value ?? '', 'UTF-8') - $chars, $chars, 'UTF-8'); |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,279 @@ |
|||||
|
<?php |
||||
|
|
||||
|
namespace PhpOffice\PhpSpreadsheet\Calculation\TextData; |
||||
|
|
||||
|
use DateTimeInterface; |
||||
|
use PhpOffice\PhpSpreadsheet\Calculation\ArrayEnabled; |
||||
|
use PhpOffice\PhpSpreadsheet\Calculation\DateTimeExcel; |
||||
|
use PhpOffice\PhpSpreadsheet\Calculation\Exception as CalcExp; |
||||
|
use PhpOffice\PhpSpreadsheet\Calculation\Functions; |
||||
|
use PhpOffice\PhpSpreadsheet\Calculation\MathTrig; |
||||
|
use PhpOffice\PhpSpreadsheet\Shared\Date; |
||||
|
use PhpOffice\PhpSpreadsheet\Shared\StringHelper; |
||||
|
use PhpOffice\PhpSpreadsheet\Style\NumberFormat; |
||||
|
|
||||
|
class Format |
||||
|
{ |
||||
|
use ArrayEnabled; |
||||
|
|
||||
|
/** |
||||
|
* DOLLAR. |
||||
|
* |
||||
|
* This function converts a number to text using currency format, with the decimals rounded to the specified place. |
||||
|
* The format used is $#,##0.00_);($#,##0.00).. |
||||
|
* |
||||
|
* @param mixed $value The value to format |
||||
|
* Or can be an array of values |
||||
|
* @param mixed $decimals The number of digits to display to the right of the decimal point (as an integer). |
||||
|
* If decimals is negative, number is rounded to the left of the decimal point. |
||||
|
* If you omit decimals, it is assumed to be 2 |
||||
|
* Or can be an array of values |
||||
|
* |
||||
|
* @return array|string |
||||
|
* If an array of values is passed for either of the arguments, then the returned result |
||||
|
* will also be an array with matching dimensions |
||||
|
*/ |
||||
|
public static function DOLLAR($value = 0, $decimals = 2) |
||||
|
{ |
||||
|
if (is_array($value) || is_array($decimals)) { |
||||
|
return self::evaluateArrayArguments([self::class, __FUNCTION__], $value, $decimals); |
||||
|
} |
||||
|
|
||||
|
try { |
||||
|
$value = Helpers::extractFloat($value); |
||||
|
$decimals = Helpers::extractInt($decimals, -100, 0, true); |
||||
|
} catch (CalcExp $e) { |
||||
|
return $e->getMessage(); |
||||
|
} |
||||
|
|
||||
|
$mask = '$#,##0'; |
||||
|
if ($decimals > 0) { |
||||
|
$mask .= '.' . str_repeat('0', $decimals); |
||||
|
} else { |
||||
|
$round = 10 ** abs($decimals); |
||||
|
if ($value < 0) { |
||||
|
$round = 0 - $round; |
||||
|
} |
||||
|
$value = MathTrig\Round::multiple($value, $round); |
||||
|
} |
||||
|
$mask = "{$mask};-{$mask}"; |
||||
|
|
||||
|
return NumberFormat::toFormattedString($value, $mask); |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* FIXED. |
||||
|
* |
||||
|
* @param mixed $value The value to format |
||||
|
* Or can be an array of values |
||||
|
* @param mixed $decimals Integer value for the number of decimal places that should be formatted |
||||
|
* Or can be an array of values |
||||
|
* @param mixed $noCommas Boolean value indicating whether the value should have thousands separators or not |
||||
|
* Or can be an array of values |
||||
|
* |
||||
|
* @return array|string |
||||
|
* If an array of values is passed for either of the arguments, then the returned result |
||||
|
* will also be an array with matching dimensions |
||||
|
*/ |
||||
|
public static function FIXEDFORMAT($value, $decimals = 2, $noCommas = false) |
||||
|
{ |
||||
|
if (is_array($value) || is_array($decimals) || is_array($noCommas)) { |
||||
|
return self::evaluateArrayArguments([self::class, __FUNCTION__], $value, $decimals, $noCommas); |
||||
|
} |
||||
|
|
||||
|
try { |
||||
|
$value = Helpers::extractFloat($value); |
||||
|
$decimals = Helpers::extractInt($decimals, -100, 0, true); |
||||
|
} catch (CalcExp $e) { |
||||
|
return $e->getMessage(); |
||||
|
} |
||||
|
|
||||
|
$valueResult = round($value, $decimals); |
||||
|
if ($decimals < 0) { |
||||
|
$decimals = 0; |
||||
|
} |
||||
|
if ($noCommas === false) { |
||||
|
$valueResult = number_format( |
||||
|
$valueResult, |
||||
|
$decimals, |
||||
|
StringHelper::getDecimalSeparator(), |
||||
|
StringHelper::getThousandsSeparator() |
||||
|
); |
||||
|
} |
||||
|
|
||||
|
return (string) $valueResult; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* TEXT. |
||||
|
* |
||||
|
* @param mixed $value The value to format |
||||
|
* Or can be an array of values |
||||
|
* @param mixed $format A string with the Format mask that should be used |
||||
|
* Or can be an array of values |
||||
|
* |
||||
|
* @return array|string |
||||
|
* If an array of values is passed for either of the arguments, then the returned result |
||||
|
* will also be an array with matching dimensions |
||||
|
*/ |
||||
|
public static function TEXTFORMAT($value, $format) |
||||
|
{ |
||||
|
if (is_array($value) || is_array($format)) { |
||||
|
return self::evaluateArrayArguments([self::class, __FUNCTION__], $value, $format); |
||||
|
} |
||||
|
|
||||
|
$value = Helpers::extractString($value); |
||||
|
$format = Helpers::extractString($format); |
||||
|
|
||||
|
if (!is_numeric($value) && Date::isDateTimeFormatCode($format)) { |
||||
|
$value = DateTimeExcel\DateValue::fromString($value); |
||||
|
} |
||||
|
|
||||
|
return (string) NumberFormat::toFormattedString($value, $format); |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* @param mixed $value Value to check |
||||
|
* |
||||
|
* @return mixed |
||||
|
*/ |
||||
|
private static function convertValue($value) |
||||
|
{ |
||||
|
$value = $value ?? 0; |
||||
|
if (is_bool($value)) { |
||||
|
if (Functions::getCompatibilityMode() === Functions::COMPATIBILITY_OPENOFFICE) { |
||||
|
$value = (int) $value; |
||||
|
} else { |
||||
|
throw new CalcExp(Functions::VALUE()); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
return $value; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* VALUE. |
||||
|
* |
||||
|
* @param mixed $value Value to check |
||||
|
* Or can be an array of values |
||||
|
* |
||||
|
* @return array|DateTimeInterface|float|int|string A string if arguments are invalid |
||||
|
* If an array of values is passed for the argument, then the returned result |
||||
|
* will also be an array with matching dimensions |
||||
|
*/ |
||||
|
public static function VALUE($value = '') |
||||
|
{ |
||||
|
if (is_array($value)) { |
||||
|
return self::evaluateSingleArgumentArray([self::class, __FUNCTION__], $value); |
||||
|
} |
||||
|
|
||||
|
try { |
||||
|
$value = self::convertValue($value); |
||||
|
} catch (CalcExp $e) { |
||||
|
return $e->getMessage(); |
||||
|
} |
||||
|
if (!is_numeric($value)) { |
||||
|
$numberValue = str_replace( |
||||
|
StringHelper::getThousandsSeparator(), |
||||
|
'', |
||||
|
trim($value, " \t\n\r\0\x0B" . StringHelper::getCurrencyCode()) |
||||
|
); |
||||
|
if (is_numeric($numberValue)) { |
||||
|
return (float) $numberValue; |
||||
|
} |
||||
|
|
||||
|
$dateSetting = Functions::getReturnDateType(); |
||||
|
Functions::setReturnDateType(Functions::RETURNDATE_EXCEL); |
||||
|
|
||||
|
if (strpos($value, ':') !== false) { |
||||
|
$timeValue = Functions::scalar(DateTimeExcel\TimeValue::fromString($value)); |
||||
|
if ($timeValue !== Functions::VALUE()) { |
||||
|
Functions::setReturnDateType($dateSetting); |
||||
|
|
||||
|
return $timeValue; |
||||
|
} |
||||
|
} |
||||
|
$dateValue = Functions::scalar(DateTimeExcel\DateValue::fromString($value)); |
||||
|
if ($dateValue !== Functions::VALUE()) { |
||||
|
Functions::setReturnDateType($dateSetting); |
||||
|
|
||||
|
return $dateValue; |
||||
|
} |
||||
|
Functions::setReturnDateType($dateSetting); |
||||
|
|
||||
|
return Functions::VALUE(); |
||||
|
} |
||||
|
|
||||
|
return (float) $value; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* @param mixed $decimalSeparator |
||||
|
*/ |
||||
|
private static function getDecimalSeparator($decimalSeparator): string |
||||
|
{ |
||||
|
return empty($decimalSeparator) ? StringHelper::getDecimalSeparator() : (string) $decimalSeparator; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* @param mixed $groupSeparator |
||||
|
*/ |
||||
|
private static function getGroupSeparator($groupSeparator): string |
||||
|
{ |
||||
|
return empty($groupSeparator) ? StringHelper::getThousandsSeparator() : (string) $groupSeparator; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* NUMBERVALUE. |
||||
|
* |
||||
|
* @param mixed $value The value to format |
||||
|
* Or can be an array of values |
||||
|
* @param mixed $decimalSeparator A string with the decimal separator to use, defaults to locale defined value |
||||
|
* Or can be an array of values |
||||
|
* @param mixed $groupSeparator A string with the group/thousands separator to use, defaults to locale defined value |
||||
|
* Or can be an array of values |
||||
|
* |
||||
|
* @return array|float|string |
||||
|
*/ |
||||
|
public static function NUMBERVALUE($value = '', $decimalSeparator = null, $groupSeparator = null) |
||||
|
{ |
||||
|
if (is_array($value) || is_array($decimalSeparator) || is_array($groupSeparator)) { |
||||
|
return self::evaluateArrayArguments([self::class, __FUNCTION__], $value, $decimalSeparator, $groupSeparator); |
||||
|
} |
||||
|
|
||||
|
try { |
||||
|
$value = self::convertValue($value); |
||||
|
$decimalSeparator = self::getDecimalSeparator($decimalSeparator); |
||||
|
$groupSeparator = self::getGroupSeparator($groupSeparator); |
||||
|
} catch (CalcExp $e) { |
||||
|
return $e->getMessage(); |
||||
|
} |
||||
|
|
||||
|
if (!is_numeric($value)) { |
||||
|
$decimalPositions = preg_match_all('/' . preg_quote($decimalSeparator) . '/', $value, $matches, PREG_OFFSET_CAPTURE); |
||||
|
if ($decimalPositions > 1) { |
||||
|
return Functions::VALUE(); |
||||
|
} |
||||
|
$decimalOffset = array_pop($matches[0])[1]; |
||||
|
if (strpos($value, $groupSeparator, $decimalOffset) !== false) { |
||||
|
return Functions::VALUE(); |
||||
|
} |
||||
|
|
||||
|
$value = str_replace([$groupSeparator, $decimalSeparator], ['', '.'], $value); |
||||
|
|
||||
|
// Handle the special case of trailing % signs |
||||
|
$percentageString = rtrim($value, '%'); |
||||
|
if (!is_numeric($percentageString)) { |
||||
|
return Functions::VALUE(); |
||||
|
} |
||||
|
|
||||
|
$percentageAdjustment = strlen($value) - strlen($percentageString); |
||||
|
if ($percentageAdjustment) { |
||||
|
$value = (float) $percentageString; |
||||
|
$value /= 10 ** ($percentageAdjustment * 2); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
return is_array($value) ? Functions::VALUE() : (float) $value; |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,86 @@ |
|||||
|
<?php |
||||
|
|
||||
|
namespace PhpOffice\PhpSpreadsheet\Calculation\TextData; |
||||
|
|
||||
|
use PhpOffice\PhpSpreadsheet\Calculation\Calculation; |
||||
|
use PhpOffice\PhpSpreadsheet\Calculation\Exception as CalcExp; |
||||
|
use PhpOffice\PhpSpreadsheet\Calculation\Functions; |
||||
|
|
||||
|
class Helpers |
||||
|
{ |
||||
|
public static function convertBooleanValue(bool $value): string |
||||
|
{ |
||||
|
if (Functions::getCompatibilityMode() == Functions::COMPATIBILITY_OPENOFFICE) { |
||||
|
return $value ? '1' : '0'; |
||||
|
} |
||||
|
|
||||
|
return ($value) ? Calculation::getTRUE() : Calculation::getFALSE(); |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* @param mixed $value String value from which to extract characters |
||||
|
*/ |
||||
|
public static function extractString($value): string |
||||
|
{ |
||||
|
if (is_bool($value)) { |
||||
|
return self::convertBooleanValue($value); |
||||
|
} |
||||
|
|
||||
|
return (string) $value; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* @param mixed $value |
||||
|
*/ |
||||
|
public static function extractInt($value, int $minValue, int $gnumericNull = 0, bool $ooBoolOk = false): int |
||||
|
{ |
||||
|
if ($value === null) { |
||||
|
// usually 0, but sometimes 1 for Gnumeric |
||||
|
$value = (Functions::getCompatibilityMode() === Functions::COMPATIBILITY_GNUMERIC) ? $gnumericNull : 0; |
||||
|
} |
||||
|
if (is_bool($value) && ($ooBoolOk || Functions::getCompatibilityMode() !== Functions::COMPATIBILITY_OPENOFFICE)) { |
||||
|
$value = (int) $value; |
||||
|
} |
||||
|
if (!is_numeric($value)) { |
||||
|
throw new CalcExp(Functions::VALUE()); |
||||
|
} |
||||
|
$value = (int) $value; |
||||
|
if ($value < $minValue) { |
||||
|
throw new CalcExp(Functions::VALUE()); |
||||
|
} |
||||
|
|
||||
|
return (int) $value; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* @param mixed $value |
||||
|
*/ |
||||
|
public static function extractFloat($value): float |
||||
|
{ |
||||
|
if ($value === null) { |
||||
|
$value = 0.0; |
||||
|
} |
||||
|
if (is_bool($value)) { |
||||
|
$value = (float) $value; |
||||
|
} |
||||
|
if (!is_numeric($value)) { |
||||
|
throw new CalcExp(Functions::VALUE()); |
||||
|
} |
||||
|
|
||||
|
return (float) $value; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* @param mixed $value |
||||
|
*/ |
||||
|
public static function validateInt($value): int |
||||
|
{ |
||||
|
if ($value === null) { |
||||
|
$value = 0; |
||||
|
} elseif (is_bool($value)) { |
||||
|
$value = (int) $value; |
||||
|
} |
||||
|
|
||||
|
return (int) $value; |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,400 @@ |
|||||
|
ABS |
||||
|
ACCRINT |
||||
|
ACCRINTM |
||||
|
ACOS |
||||
|
ACOSH |
||||
|
ACOT |
||||
|
ACOTH |
||||
|
ADDRESS |
||||
|
AMORDEGRC |
||||
|
AMORLINC |
||||
|
AND |
||||
|
ARABIC |
||||
|
AREAS |
||||
|
ASC |
||||
|
ASIN |
||||
|
ASINH |
||||
|
ATAN |
||||
|
ATAN2 |
||||
|
ATANH |
||||
|
AVEDEV |
||||
|
AVERAGE |
||||
|
AVERAGEA |
||||
|
AVERAGEIF |
||||
|
AVERAGEIFS |
||||
|
BAHTTEXT |
||||
|
BASE |
||||
|
BESSELI |
||||
|
BESSELJ |
||||
|
BESSELK |
||||
|
BESSELY |
||||
|
BETADIST |
||||
|
BETAINV |
||||
|
BIN2DEC |
||||
|
BIN2HEX |
||||
|
BIN2OCT |
||||
|
BINOMDIST |
||||
|
BITAND |
||||
|
BITLSHIFT |
||||
|
BITOR |
||||
|
BITRSHIFT |
||||
|
BITXOR |
||||
|
CEILING |
||||
|
CEILING.MATH |
||||
|
CEILING.PRECISE |
||||
|
CELL |
||||
|
CHAR |
||||
|
CHIDIST |
||||
|
CHIINV |
||||
|
CHITEST |
||||
|
CHOOSE |
||||
|
CLEAN |
||||
|
CODE |
||||
|
COLUMN |
||||
|
COLUMNS |
||||
|
COMBIN |
||||
|
COMBINA |
||||
|
COMPLEX |
||||
|
CONCAT |
||||
|
CONCATENATE |
||||
|
CONFIDENCE |
||||
|
CONVERT |
||||
|
CORREL |
||||
|
COS |
||||
|
COSH |
||||
|
COT |
||||
|
COTH |
||||
|
COUNT |
||||
|
COUNTA |
||||
|
COUNTBLANK |
||||
|
COUNTIF |
||||
|
COUNTIFS |
||||
|
COUPDAYBS |
||||
|
COUPDAYBS |
||||
|
COUPDAYSNC |
||||
|
COUPNCD |
||||
|
COUPNUM |
||||
|
COUPPCD |
||||
|
COVAR |
||||
|
CRITBINOM |
||||
|
CSC |
||||
|
CSCH |
||||
|
CUBEKPIMEMBER |
||||
|
CUBEMEMBER |
||||
|
CUBEMEMBERPROPERTY |
||||
|
CUBERANKEDMEMBER |
||||
|
CUBESET |
||||
|
CUBESETCOUNT |
||||
|
CUBEVALUE |
||||
|
CUMIPMT |
||||
|
CUMPRINC |
||||
|
DATE |
||||
|
DATEDIF |
||||
|
DATEVALUE |
||||
|
DAVERAGE |
||||
|
DAY |
||||
|
DAYS |
||||
|
DAYS360 |
||||
|
DB |
||||
|
DCOUNT |
||||
|
DCOUNTA |
||||
|
DDB |
||||
|
DEC2BIN |
||||
|
DEC2HEX |
||||
|
DEC2OCT |
||||
|
DEGREES |
||||
|
DELTA |
||||
|
DEVSQ |
||||
|
DGET |
||||
|
DISC |
||||
|
DMAX |
||||
|
DMIN |
||||
|
DOLLAR |
||||
|
DOLLARDE |
||||
|
DOLLARFR |
||||
|
DPRODUCT |
||||
|
DSTDEV |
||||
|
DSTDEVP |
||||
|
DSUM |
||||
|
DURATION |
||||
|
DVAR |
||||
|
DVARP |
||||
|
EDATE |
||||
|
EFFECT |
||||
|
EOMONTH |
||||
|
ERF |
||||
|
ERF.PRECISE |
||||
|
ERFC |
||||
|
ERFC.PRECISE |
||||
|
ERROR.TYPE |
||||
|
EVEN |
||||
|
EXACT |
||||
|
EXP |
||||
|
EXPONDIST |
||||
|
FACT |
||||
|
FACTDOUBLE |
||||
|
FALSE |
||||
|
FDIST |
||||
|
FIND |
||||
|
FINDB |
||||
|
FINV |
||||
|
FISHER |
||||
|
FISHERINV |
||||
|
FIXED |
||||
|
FLOOR |
||||
|
FLOOR.MATH |
||||
|
FLOOR.PRECISE |
||||
|
FORECAST |
||||
|
FREQUENCY |
||||
|
FTEST |
||||
|
FV |
||||
|
FVSCHEDULE |
||||
|
GAMAMDIST |
||||
|
GAMMAINV |
||||
|
GAMMALN |
||||
|
GCD |
||||
|
GEOMEAN |
||||
|
GESTEP |
||||
|
GETPIVOTDATA |
||||
|
GROWTH |
||||
|
HARMEAN |
||||
|
HEX2BIN |
||||
|
HEX2OCT |
||||
|
HLOOKUP |
||||
|
HOUR |
||||
|
HYPERLINK |
||||
|
HYPGEOMDIST |
||||
|
IF |
||||
|
IFERROR |
||||
|
IFS |
||||
|
IMABS |
||||
|
IMAGINARY |
||||
|
IMARGUMENT |
||||
|
IMCONJUGATE |
||||
|
IMCOS |
||||
|
IMCOSH |
||||
|
IMCOT |
||||
|
IMCSC |
||||
|
IMCSCH |
||||
|
IMEXP |
||||
|
IMLN |
||||
|
IMLOG10 |
||||
|
IMLOG2 |
||||
|
IMPOWER |
||||
|
IMPRODUCT |
||||
|
IMREAL |
||||
|
IMSEC |
||||
|
IMSECH |
||||
|
IMSIN |
||||
|
IMSINH |
||||
|
IMSQRT |
||||
|
IMSUB |
||||
|
IMSUM |
||||
|
IMTAN |
||||
|
INDEX |
||||
|
INDIRECT |
||||
|
INFO |
||||
|
INT |
||||
|
INTERCEPT |
||||
|
INTRATE |
||||
|
IPMT |
||||
|
IRR |
||||
|
ISBLANK |
||||
|
ISERR |
||||
|
ISERROR |
||||
|
ISEVEN |
||||
|
ISLOGICAL |
||||
|
ISNA |
||||
|
ISNONTEXT |
||||
|
ISNUMBER |
||||
|
ISODD |
||||
|
ISOWEEKNUM |
||||
|
ISPMT |
||||
|
ISREF |
||||
|
ISTEXT |
||||
|
JIS |
||||
|
KURT |
||||
|
LARGE |
||||
|
LCM |
||||
|
LEFT |
||||
|
LEFTB |
||||
|
LEN |
||||
|
LENB |
||||
|
LINEST |
||||
|
LN |
||||
|
LOG |
||||
|
LOG10 |
||||
|
LOGEST |
||||
|
LOGINV |
||||
|
LOGNORMDIST |
||||
|
LOOKUP |
||||
|
LOWER |
||||
|
MATCH |
||||
|
MAX |
||||
|
MAXA |
||||
|
MAXIFS |
||||
|
MDETERM |
||||
|
MDURATION |
||||
|
MEDIAN |
||||
|
MID |
||||
|
MIDB |
||||
|
MIN |
||||
|
MINA |
||||
|
MINIFS |
||||
|
MINUTE |
||||
|
MINVERSE |
||||
|
MIRR |
||||
|
MMULT |
||||
|
MOD |
||||
|
MODE |
||||
|
MONTH |
||||
|
MROUND |
||||
|
MULTINOMIAL |
||||
|
MUNIT |
||||
|
N |
||||
|
NA |
||||
|
NEGBINOMDIST |
||||
|
NETWORKDAYS |
||||
|
NOMINAL |
||||
|
NORMDIST |
||||
|
NORMINV |
||||
|
NORMSDIST |
||||
|
NORMSINV |
||||
|
NOT |
||||
|
NOW |
||||
|
NPER |
||||
|
NPV |
||||
|
NUMBERVALUE |
||||
|
OCT2BIN |
||||
|
OCT2DEC |
||||
|
OCT2HEX |
||||
|
ODD |
||||
|
ODDFPRICE |
||||
|
ODDFYIELD |
||||
|
ODDLPRICE |
||||
|
ODDLYIELD |
||||
|
OFFSET |
||||
|
OR |
||||
|
PDURATION |
||||
|
PEARSON |
||||
|
PERCENTILE |
||||
|
PERCENTRANK |
||||
|
PERMUT |
||||
|
PERMUTATIONA |
||||
|
PHONETIC |
||||
|
PI |
||||
|
PMT |
||||
|
POISSON |
||||
|
POWER |
||||
|
PPMT |
||||
|
PRICE |
||||
|
PRICEDISC |
||||
|
PRICEMAT |
||||
|
PROB |
||||
|
PRODUCT |
||||
|
PROPER |
||||
|
PV |
||||
|
QUARTILE |
||||
|
QUOTIENT |
||||
|
RADIANS |
||||
|
RAND |
||||
|
RANDBETWEEN |
||||
|
RANK |
||||
|
RATE |
||||
|
RECEIVED |
||||
|
REPLACE |
||||
|
REPLACEB |
||||
|
REPT |
||||
|
RIGHT |
||||
|
RIGHTB |
||||
|
ROMAN |
||||
|
ROUND |
||||
|
ROUNDDOWN |
||||
|
ROUNDUP |
||||
|
ROW |
||||
|
ROWS |
||||
|
RRI |
||||
|
RSQ |
||||
|
RTD |
||||
|
SEARCH |
||||
|
SEARCHB |
||||
|
SEC |
||||
|
SECH |
||||
|
SECOND |
||||
|
SERIESSUM |
||||
|
SHEET |
||||
|
SHEETS |
||||
|
SIGN |
||||
|
SIN |
||||
|
SINH |
||||
|
SKEW |
||||
|
SLN |
||||
|
SLOPE |
||||
|
SMALL |
||||
|
SQRT |
||||
|
SQRTPI |
||||
|
STANDARDIZE |
||||
|
STDEV |
||||
|
STDEV.A |
||||
|
STDEV.P |
||||
|
STDEVA |
||||
|
STDEVP |
||||
|
STDEVPA |
||||
|
STEYX |
||||
|
SUBSTITUTE |
||||
|
SUBTOTAL |
||||
|
SUM |
||||
|
SUMIF |
||||
|
SUMIFS |
||||
|
SUMPRODUCT |
||||
|
SUMSQ |
||||
|
SUMX2MY2 |
||||
|
SUMX2PY2 |
||||
|
SUMXMY2 |
||||
|
SWITCH |
||||
|
SYD |
||||
|
T |
||||
|
TAN |
||||
|
TANH |
||||
|
TBILLEQ |
||||
|
TBILLPRICE |
||||
|
TBILLYIELD |
||||
|
TDIST |
||||
|
TEXT |
||||
|
TEXTJOIN |
||||
|
TIME |
||||
|
TIMEVALUE |
||||
|
TINV |
||||
|
TODAY |
||||
|
TRANSPOSE |
||||
|
TREND |
||||
|
TRIM |
||||
|
TRIMMEAN |
||||
|
TRUE |
||||
|
TRUNC |
||||
|
TTEST |
||||
|
TYPE |
||||
|
UNICHAR |
||||
|
UNIORD |
||||
|
UPPER |
||||
|
USDOLLAR |
||||
|
VALUE |
||||
|
VAR |
||||
|
VARA |
||||
|
VARP |
||||
|
VARPA |
||||
|
VDB |
||||
|
VLOOKUP |
||||
|
WEEKDAY |
||||
|
WEEKNUM |
||||
|
WEIBULL |
||||
|
WORKDAY |
||||
|
XIRR |
||||
|
XNPV |
||||
|
XOR |
||||
|
YEAR |
||||
|
YEARFRAC |
||||
|
YIELD |
||||
|
YIELDDISC |
||||
|
YIELDMAT |
||||
|
ZTEST |
||||
@ -0,0 +1,417 @@ |
|||||
|
## |
||||
|
## PhpSpreadsheet |
||||
|
## |
||||
|
## |
||||
|
## Data in this file derived from information provided by web-junior (http://www.web-junior.net/) |
||||
|
## |
||||
|
## |
||||
|
|
||||
|
|
||||
|
## |
||||
|
## Add-in and Automation functions Функции надстроек и автоматизации |
||||
|
## |
||||
|
GETPIVOTDATA = ПОЛУЧИТЬ.ДАННЫЕ.СВОДНОЙ.ТАБЛИЦЫ ## Возвращает данные, хранящиеся в отчете сводной таблицы. |
||||
|
|
||||
|
|
||||
|
## |
||||
|
## Cube functions Функции Куб |
||||
|
## |
||||
|
CUBEKPIMEMBER = КУБЭЛЕМЕНТКИП ## Возвращает свойство ключевого индикатора производительности «(КИП)» и отображает имя «КИП» в ячейке. «КИП» представляет собой количественную величину, такую как ежемесячная валовая прибыль или ежеквартальная текучесть кадров, используемой для контроля эффективности работы организации. |
||||
|
CUBEMEMBER = КУБЭЛЕМЕНТ ## Возвращает элемент или кортеж из куба. Используется для проверки существования элемента или кортежа в кубе. |
||||
|
CUBEMEMBERPROPERTY = КУБСВОЙСТВОЭЛЕМЕНТА ## Возвращает значение свойства элемента из куба. Используется для проверки существования имени элемента в кубе и возвращает указанное свойство для этого элемента. |
||||
|
CUBERANKEDMEMBER = КУБПОРЭЛЕМЕНТ ## Возвращает n-ый или ранжированный элемент в множество. Используется для возвращения одного или нескольких элементов в множество, например, лучшего продавца или 10 лучших студентов. |
||||
|
CUBESET = КУБМНОЖ ## Определяет вычислительное множество элементов или кортежей, отправляя на сервер выражение, которое создает множество, а затем возвращает его в Microsoft Office Excel. |
||||
|
CUBESETCOUNT = КУБЧИСЛОЭЛМНОЖ ## Возвращает число элементов множества. |
||||
|
CUBEVALUE = КУБЗНАЧЕНИЕ ## Возвращает обобщенное значение из куба. |
||||
|
|
||||
|
|
||||
|
## |
||||
|
## Database functions Функции для работы с базами данных |
||||
|
## |
||||
|
DAVERAGE = ДСРЗНАЧ ## Возвращает среднее значение выбранных записей базы данных. |
||||
|
DCOUNT = БСЧЁТ ## Подсчитывает количество числовых ячеек в базе данных. |
||||
|
DCOUNTA = БСЧЁТА ## Подсчитывает количество непустых ячеек в базе данных. |
||||
|
DGET = БИЗВЛЕЧЬ ## Извлекает из базы данных одну запись, удовлетворяющую заданному условию. |
||||
|
DMAX = ДМАКС ## Возвращает максимальное значение среди выделенных записей базы данных. |
||||
|
DMIN = ДМИН ## Возвращает минимальное значение среди выделенных записей базы данных. |
||||
|
DPRODUCT = БДПРОИЗВЕД ## Перемножает значения определенного поля в записях базы данных, удовлетворяющих условию. |
||||
|
DSTDEV = ДСТАНДОТКЛ ## Оценивает стандартное отклонение по выборке для выделенных записей базы данных. |
||||
|
DSTDEVP = ДСТАНДОТКЛП ## Вычисляет стандартное отклонение по генеральной совокупности для выделенных записей базы данных |
||||
|
DSUM = БДСУММ ## Суммирует числа в поле для записей базы данных, удовлетворяющих условию. |
||||
|
DVAR = БДДИСП ## Оценивает дисперсию по выборке из выделенных записей базы данных |
||||
|
DVARP = БДДИСПП ## Вычисляет дисперсию по генеральной совокупности для выделенных записей базы данных |
||||
|
|
||||
|
|
||||
|
## |
||||
|
## Date and time functions Функции даты и времени |
||||
|
## |
||||
|
DATE = ДАТА ## Возвращает заданную дату в числовом формате. |
||||
|
DATEVALUE = ДАТАЗНАЧ ## Преобразует дату из текстового формата в числовой формат. |
||||
|
DAY = ДЕНЬ ## Преобразует дату в числовом формате в день месяца. |
||||
|
DAYS360 = ДНЕЙ360 ## Вычисляет количество дней между двумя датами на основе 360-дневного года. |
||||
|
EDATE = ДАТАМЕС ## Возвращает дату в числовом формате, отстоящую на заданное число месяцев вперед или назад от начальной даты. |
||||
|
EOMONTH = КОНМЕСЯЦА ## Возвращает дату в числовом формате для последнего дня месяца, отстоящего вперед или назад на заданное число месяцев. |
||||
|
HOUR = ЧАС ## Преобразует дату в числовом формате в часы. |
||||
|
MINUTE = МИНУТЫ ## Преобразует дату в числовом формате в минуты. |
||||
|
MONTH = МЕСЯЦ ## Преобразует дату в числовом формате в месяцы. |
||||
|
NETWORKDAYS = ЧИСТРАБДНИ ## Возвращает количество рабочих дней между двумя датами. |
||||
|
NOW = ТДАТА ## Возвращает текущую дату и время в числовом формате. |
||||
|
SECOND = СЕКУНДЫ ## Преобразует дату в числовом формате в секунды. |
||||
|
TIME = ВРЕМЯ ## Возвращает заданное время в числовом формате. |
||||
|
TIMEVALUE = ВРЕМЗНАЧ ## Преобразует время из текстового формата в числовой формат. |
||||
|
TODAY = СЕГОДНЯ ## Возвращает текущую дату в числовом формате. |
||||
|
WEEKDAY = ДЕНЬНЕД ## Преобразует дату в числовом формате в день недели. |
||||
|
WEEKNUM = НОМНЕДЕЛИ ## Преобразует числовое представление в число, которое указывает, на какую неделю года приходится указанная дата. |
||||
|
WORKDAY = РАБДЕНЬ ## Возвращает дату в числовом формате, отстоящую вперед или назад на заданное количество рабочих дней. |
||||
|
YEAR = ГОД ## Преобразует дату в числовом формате в год. |
||||
|
YEARFRAC = ДОЛЯГОДА ## Возвращает долю года, которую составляет количество дней между начальной и конечной датами. |
||||
|
|
||||
|
|
||||
|
## |
||||
|
## Engineering functions Инженерные функции |
||||
|
## |
||||
|
BESSELI = БЕССЕЛЬ.I ## Возвращает модифицированную функцию Бесселя In(x). |
||||
|
BESSELJ = БЕССЕЛЬ.J ## Возвращает функцию Бесселя Jn(x). |
||||
|
BESSELK = БЕССЕЛЬ.K ## Возвращает модифицированную функцию Бесселя Kn(x). |
||||
|
BESSELY = БЕССЕЛЬ.Y ## Возвращает функцию Бесселя Yn(x). |
||||
|
BIN2DEC = ДВ.В.ДЕС ## Преобразует двоичное число в десятичное. |
||||
|
BIN2HEX = ДВ.В.ШЕСТН ## Преобразует двоичное число в шестнадцатеричное. |
||||
|
BIN2OCT = ДВ.В.ВОСЬМ ## Преобразует двоичное число в восьмеричное. |
||||
|
COMPLEX = КОМПЛЕКСН ## Преобразует коэффициенты при вещественной и мнимой частях комплексного числа в комплексное число. |
||||
|
CONVERT = ПРЕОБР ## Преобразует число из одной системы единиц измерения в другую. |
||||
|
DEC2BIN = ДЕС.В.ДВ ## Преобразует десятичное число в двоичное. |
||||
|
DEC2HEX = ДЕС.В.ШЕСТН ## Преобразует десятичное число в шестнадцатеричное. |
||||
|
DEC2OCT = ДЕС.В.ВОСЬМ ## Преобразует десятичное число в восьмеричное. |
||||
|
DELTA = ДЕЛЬТА ## Проверяет равенство двух значений. |
||||
|
ERF = ФОШ ## Возвращает функцию ошибки. |
||||
|
ERFC = ДФОШ ## Возвращает дополнительную функцию ошибки. |
||||
|
GESTEP = ПОРОГ ## Проверяет, не превышает ли данное число порогового значения. |
||||
|
HEX2BIN = ШЕСТН.В.ДВ ## Преобразует шестнадцатеричное число в двоичное. |
||||
|
HEX2DEC = ШЕСТН.В.ДЕС ## Преобразует шестнадцатеричное число в десятичное. |
||||
|
HEX2OCT = ШЕСТН.В.ВОСЬМ ## Преобразует шестнадцатеричное число в восьмеричное. |
||||
|
IMABS = МНИМ.ABS ## Возвращает абсолютную величину (модуль) комплексного числа. |
||||
|
IMAGINARY = МНИМ.ЧАСТЬ ## Возвращает коэффициент при мнимой части комплексного числа. |
||||
|
IMARGUMENT = МНИМ.АРГУМЕНТ ## Возвращает значение аргумента комплексного числа (тета) — угол, выраженный в радианах. |
||||
|
IMCONJUGATE = МНИМ.СОПРЯЖ ## Возвращает комплексно-сопряженное комплексное число. |
||||
|
IMCOS = МНИМ.COS ## Возвращает косинус комплексного числа. |
||||
|
IMDIV = МНИМ.ДЕЛ ## Возвращает частное от деления двух комплексных чисел. |
||||
|
IMEXP = МНИМ.EXP ## Возвращает экспоненту комплексного числа. |
||||
|
IMLN = МНИМ.LN ## Возвращает натуральный логарифм комплексного числа. |
||||
|
IMLOG10 = МНИМ.LOG10 ## Возвращает обычный (десятичный) логарифм комплексного числа. |
||||
|
IMLOG2 = МНИМ.LOG2 ## Возвращает двоичный логарифм комплексного числа. |
||||
|
IMPOWER = МНИМ.СТЕПЕНЬ ## Возвращает комплексное число, возведенное в целую степень. |
||||
|
IMPRODUCT = МНИМ.ПРОИЗВЕД ## Возвращает произведение от 2 до 29 комплексных чисел. |
||||
|
IMREAL = МНИМ.ВЕЩ ## Возвращает коэффициент при вещественной части комплексного числа. |
||||
|
IMSIN = МНИМ.SIN ## Возвращает синус комплексного числа. |
||||
|
IMSQRT = МНИМ.КОРЕНЬ ## Возвращает значение квадратного корня из комплексного числа. |
||||
|
IMSUB = МНИМ.РАЗН ## Возвращает разность двух комплексных чисел. |
||||
|
IMSUM = МНИМ.СУММ ## Возвращает сумму комплексных чисел. |
||||
|
OCT2BIN = ВОСЬМ.В.ДВ ## Преобразует восьмеричное число в двоичное. |
||||
|
OCT2DEC = ВОСЬМ.В.ДЕС ## Преобразует восьмеричное число в десятичное. |
||||
|
OCT2HEX = ВОСЬМ.В.ШЕСТН ## Преобразует восьмеричное число в шестнадцатеричное. |
||||
|
|
||||
|
|
||||
|
## |
||||
|
## Financial functions Финансовые функции |
||||
|
## |
||||
|
ACCRINT = НАКОПДОХОД ## Возвращает накопленный процент по ценным бумагам с периодической выплатой процентов. |
||||
|
ACCRINTM = НАКОПДОХОДПОГАШ ## Возвращает накопленный процент по ценным бумагам, проценты по которым выплачиваются в срок погашения. |
||||
|
AMORDEGRC = АМОРУМ ## Возвращает величину амортизации для каждого периода, используя коэффициент амортизации. |
||||
|
AMORLINC = АМОРУВ ## Возвращает величину амортизации для каждого периода. |
||||
|
COUPDAYBS = ДНЕЙКУПОНДО ## Возвращает количество дней от начала действия купона до даты соглашения. |
||||
|
COUPDAYS = ДНЕЙКУПОН ## Возвращает число дней в периоде купона, содержащем дату соглашения. |
||||
|
COUPDAYSNC = ДНЕЙКУПОНПОСЛЕ ## Возвращает число дней от даты соглашения до срока следующего купона. |
||||
|
COUPNCD = ДАТАКУПОНПОСЛЕ ## Возвращает следующую дату купона после даты соглашения. |
||||
|
COUPNUM = ЧИСЛКУПОН ## Возвращает количество купонов, которые могут быть оплачены между датой соглашения и сроком вступления в силу. |
||||
|
COUPPCD = ДАТАКУПОНДО ## Возвращает предыдущую дату купона перед датой соглашения. |
||||
|
CUMIPMT = ОБЩПЛАТ ## Возвращает общую выплату, произведенную между двумя периодическими выплатами. |
||||
|
CUMPRINC = ОБЩДОХОД ## Возвращает общую выплату по займу между двумя периодами. |
||||
|
DB = ФУО ## Возвращает величину амортизации актива для заданного периода, рассчитанную методом фиксированного уменьшения остатка. |
||||
|
DDB = ДДОБ ## Возвращает величину амортизации актива за данный период, используя метод двойного уменьшения остатка или иной явно указанный метод. |
||||
|
DISC = СКИДКА ## Возвращает норму скидки для ценных бумаг. |
||||
|
DOLLARDE = РУБЛЬ.ДЕС ## Преобразует цену в рублях, выраженную в виде дроби, в цену в рублях, выраженную десятичным числом. |
||||
|
DOLLARFR = РУБЛЬ.ДРОБЬ ## Преобразует цену в рублях, выраженную десятичным числом, в цену в рублях, выраженную в виде дроби. |
||||
|
DURATION = ДЛИТ ## Возвращает ежегодную продолжительность действия ценных бумаг с периодическими выплатами по процентам. |
||||
|
EFFECT = ЭФФЕКТ ## Возвращает действующие ежегодные процентные ставки. |
||||
|
FV = БС ## Возвращает будущую стоимость инвестиции. |
||||
|
FVSCHEDULE = БЗРАСПИС ## Возвращает будущую стоимость первоначальной основной суммы после начисления ряда сложных процентов. |
||||
|
INTRATE = ИНОРМА ## Возвращает процентную ставку для полностью инвестированных ценных бумаг. |
||||
|
IPMT = ПРПЛТ ## Возвращает величину выплаты прибыли на вложения за данный период. |
||||
|
IRR = ВСД ## Возвращает внутреннюю ставку доходности для ряда потоков денежных средств. |
||||
|
ISPMT = ПРОЦПЛАТ ## Вычисляет выплаты за указанный период инвестиции. |
||||
|
MDURATION = МДЛИТ ## Возвращает модифицированную длительность Маколея для ценных бумаг с предполагаемой номинальной стоимостью 100 рублей. |
||||
|
MIRR = МВСД ## Возвращает внутреннюю ставку доходности, при которой положительные и отрицательные денежные потоки имеют разные значения ставки. |
||||
|
NOMINAL = НОМИНАЛ ## Возвращает номинальную годовую процентную ставку. |
||||
|
NPER = КПЕР ## Возвращает общее количество периодов выплаты для данного вклада. |
||||
|
NPV = ЧПС ## Возвращает чистую приведенную стоимость инвестиции, основанной на серии периодических денежных потоков и ставке дисконтирования. |
||||
|
ODDFPRICE = ЦЕНАПЕРВНЕРЕГ ## Возвращает цену за 100 рублей нарицательной стоимости ценных бумаг с нерегулярным первым периодом. |
||||
|
ODDFYIELD = ДОХОДПЕРВНЕРЕГ ## Возвращает доход по ценным бумагам с нерегулярным первым периодом. |
||||
|
ODDLPRICE = ЦЕНАПОСЛНЕРЕГ ## Возвращает цену за 100 рублей нарицательной стоимости ценных бумаг с нерегулярным последним периодом. |
||||
|
ODDLYIELD = ДОХОДПОСЛНЕРЕГ ## Возвращает доход по ценным бумагам с нерегулярным последним периодом. |
||||
|
PMT = ПЛТ ## Возвращает величину выплаты за один период аннуитета. |
||||
|
PPMT = ОСПЛТ ## Возвращает величину выплат в погашение основной суммы по инвестиции за заданный период. |
||||
|
PRICE = ЦЕНА ## Возвращает цену за 100 рублей нарицательной стоимости ценных бумаг, по которым производится периодическая выплата процентов. |
||||
|
PRICEDISC = ЦЕНАСКИДКА ## Возвращает цену за 100 рублей номинальной стоимости ценных бумаг, на которые сделана скидка. |
||||
|
PRICEMAT = ЦЕНАПОГАШ ## Возвращает цену за 100 рублей номинальной стоимости ценных бумаг, проценты по которым выплачиваются в срок погашения. |
||||
|
PV = ПС ## Возвращает приведенную (к текущему моменту) стоимость инвестиции. |
||||
|
RATE = СТАВКА ## Возвращает процентную ставку по аннуитету за один период. |
||||
|
RECEIVED = ПОЛУЧЕНО ## Возвращает сумму, полученную к сроку погашения полностью обеспеченных ценных бумаг. |
||||
|
SLN = АПЛ ## Возвращает величину линейной амортизации актива за один период. |
||||
|
SYD = АСЧ ## Возвращает величину амортизации актива за данный период, рассчитанную методом суммы годовых чисел. |
||||
|
TBILLEQ = РАВНОКЧЕК ## Возвращает эквивалентный облигации доход по казначейскому чеку. |
||||
|
TBILLPRICE = ЦЕНАКЧЕК ## Возвращает цену за 100 рублей нарицательной стоимости для казначейского чека. |
||||
|
TBILLYIELD = ДОХОДКЧЕК ## Возвращает доход по казначейскому чеку. |
||||
|
VDB = ПУО ## Возвращает величину амортизации актива для указанного или частичного периода при использовании метода сокращающегося баланса. |
||||
|
XIRR = ЧИСТВНДОХ ## Возвращает внутреннюю ставку доходности для графика денежных потоков, которые не обязательно носят периодический характер. |
||||
|
XNPV = ЧИСТНЗ ## Возвращает чистую приведенную стоимость для денежных потоков, которые не обязательно являются периодическими. |
||||
|
YIELD = ДОХОД ## Возвращает доход от ценных бумаг, по которым производятся периодические выплаты процентов. |
||||
|
YIELDDISC = ДОХОДСКИДКА ## Возвращает годовой доход по ценным бумагам, на которые сделана скидка (пример — казначейские чеки). |
||||
|
YIELDMAT = ДОХОДПОГАШ ## Возвращает годовой доход от ценных бумаг, проценты по которым выплачиваются в срок погашения. |
||||
|
|
||||
|
|
||||
|
## |
||||
|
## Information functions Информационные функции |
||||
|
## |
||||
|
CELL = ЯЧЕЙКА ## Возвращает информацию о формате, расположении или содержимом ячейки. |
||||
|
ERROR.TYPE = ТИП.ОШИБКИ ## Возвращает числовой код, соответствующий типу ошибки. |
||||
|
INFO = ИНФОРМ ## Возвращает информацию о текущей операционной среде. |
||||
|
ISBLANK = ЕПУСТО ## Возвращает значение ИСТИНА, если аргумент является ссылкой на пустую ячейку. |
||||
|
ISERR = ЕОШ ## Возвращает значение ИСТИНА, если аргумент ссылается на любое значение ошибки, кроме #Н/Д. |
||||
|
ISERROR = ЕОШИБКА ## Возвращает значение ИСТИНА, если аргумент ссылается на любое значение ошибки. |
||||
|
ISEVEN = ЕЧЁТН ## Возвращает значение ИСТИНА, если значение аргумента является четным числом. |
||||
|
ISLOGICAL = ЕЛОГИЧ ## Возвращает значение ИСТИНА, если аргумент ссылается на логическое значение. |
||||
|
ISNA = ЕНД ## Возвращает значение ИСТИНА, если аргумент ссылается на значение ошибки #Н/Д. |
||||
|
ISNONTEXT = ЕНЕТЕКСТ ## Возвращает значение ИСТИНА, если значение аргумента не является текстом. |
||||
|
ISNUMBER = ЕЧИСЛО ## Возвращает значение ИСТИНА, если аргумент ссылается на число. |
||||
|
ISODD = ЕНЕЧЁТ ## Возвращает значение ИСТИНА, если значение аргумента является нечетным числом. |
||||
|
ISREF = ЕССЫЛКА ## Возвращает значение ИСТИНА, если значение аргумента является ссылкой. |
||||
|
ISTEXT = ЕТЕКСТ ## Возвращает значение ИСТИНА, если значение аргумента является текстом. |
||||
|
N = Ч ## Возвращает значение, преобразованное в число. |
||||
|
NA = НД ## Возвращает значение ошибки #Н/Д. |
||||
|
TYPE = ТИП ## Возвращает число, обозначающее тип данных значения. |
||||
|
|
||||
|
|
||||
|
## |
||||
|
## Logical functions Логические функции |
||||
|
## |
||||
|
AND = И ## Renvoie VRAI si tous ses arguments sont VRAI. |
||||
|
FALSE = ЛОЖЬ ## Возвращает логическое значение ЛОЖЬ. |
||||
|
IF = ЕСЛИ ## Выполняет проверку условия. |
||||
|
IFERROR = ЕСЛИОШИБКА ## Возвращает введённое значение, если вычисление по формуле вызывает ошибку; в противном случае функция возвращает результат вычисления. |
||||
|
NOT = НЕ ## Меняет логическое значение своего аргумента на противоположное. |
||||
|
OR = ИЛИ ## Возвращает значение ИСТИНА, если хотя бы один аргумент имеет значение ИСТИНА. |
||||
|
TRUE = ИСТИНА ## Возвращает логическое значение ИСТИНА. |
||||
|
|
||||
|
|
||||
|
## |
||||
|
## Lookup and reference functions Функции ссылки и поиска |
||||
|
## |
||||
|
ADDRESS = АДРЕС ## Возвращает ссылку на отдельную ячейку листа в виде текста. |
||||
|
AREAS = ОБЛАСТИ ## Возвращает количество областей в ссылке. |
||||
|
CHOOSE = ВЫБОР ## Выбирает значение из списка значений по индексу. |
||||
|
COLUMN = СТОЛБЕЦ ## Возвращает номер столбца, на который указывает ссылка. |
||||
|
COLUMNS = ЧИСЛСТОЛБ ## Возвращает количество столбцов в ссылке. |
||||
|
HLOOKUP = ГПР ## Ищет в первой строке массива и возвращает значение отмеченной ячейки |
||||
|
HYPERLINK = ГИПЕРССЫЛКА ## Создает ссылку, открывающую документ, который находится на сервере сети, в интрасети или в Интернете. |
||||
|
INDEX = ИНДЕКС ## Использует индекс для выбора значения из ссылки или массива. |
||||
|
INDIRECT = ДВССЫЛ ## Возвращает ссылку, заданную текстовым значением. |
||||
|
LOOKUP = ПРОСМОТР ## Ищет значения в векторе или массиве. |
||||
|
MATCH = ПОИСКПОЗ ## Ищет значения в ссылке или массиве. |
||||
|
OFFSET = СМЕЩ ## Возвращает смещение ссылки относительно заданной ссылки. |
||||
|
ROW = СТРОКА ## Возвращает номер строки, определяемой ссылкой. |
||||
|
ROWS = ЧСТРОК ## Возвращает количество строк в ссылке. |
||||
|
RTD = ДРВ ## Извлекает данные реального времени из программ, поддерживающих автоматизацию COM (Программирование объектов. Стандартное средство для работы с объектами некоторого приложения из другого приложения или средства разработки. Программирование объектов (ранее называемое программированием OLE) является функцией модели COM (Component Object Model, модель компонентных объектов).). |
||||
|
TRANSPOSE = ТРАНСП ## Возвращает транспонированный массив. |
||||
|
VLOOKUP = ВПР ## Ищет значение в первом столбце массива и возвращает значение из ячейки в найденной строке и указанном столбце. |
||||
|
|
||||
|
|
||||
|
## |
||||
|
## Math and trigonometry functions Математические и тригонометрические функции |
||||
|
## |
||||
|
ABS = ABS ## Возвращает модуль (абсолютную величину) числа. |
||||
|
ACOS = ACOS ## Возвращает арккосинус числа. |
||||
|
ACOSH = ACOSH ## Возвращает гиперболический арккосинус числа. |
||||
|
ASIN = ASIN ## Возвращает арксинус числа. |
||||
|
ASINH = ASINH ## Возвращает гиперболический арксинус числа. |
||||
|
ATAN = ATAN ## Возвращает арктангенс числа. |
||||
|
ATAN2 = ATAN2 ## Возвращает арктангенс для заданных координат x и y. |
||||
|
ATANH = ATANH ## Возвращает гиперболический арктангенс числа. |
||||
|
CEILING = ОКРВВЕРХ ## Округляет число до ближайшего целого или до ближайшего кратного указанному значению. |
||||
|
COMBIN = ЧИСЛКОМБ ## Возвращает количество комбинаций для заданного числа объектов. |
||||
|
COS = COS ## Возвращает косинус числа. |
||||
|
COSH = COSH ## Возвращает гиперболический косинус числа. |
||||
|
DEGREES = ГРАДУСЫ ## Преобразует радианы в градусы. |
||||
|
EVEN = ЧЁТН ## Округляет число до ближайшего четного целого. |
||||
|
EXP = EXP ## Возвращает число e, возведенное в указанную степень. |
||||
|
FACT = ФАКТР ## Возвращает факториал числа. |
||||
|
FACTDOUBLE = ДВФАКТР ## Возвращает двойной факториал числа. |
||||
|
FLOOR = ОКРВНИЗ ## Округляет число до ближайшего меньшего по модулю значения. |
||||
|
GCD = НОД ## Возвращает наибольший общий делитель. |
||||
|
INT = ЦЕЛОЕ ## Округляет число до ближайшего меньшего целого. |
||||
|
LCM = НОК ## Возвращает наименьшее общее кратное. |
||||
|
LN = LN ## Возвращает натуральный логарифм числа. |
||||
|
LOG = LOG ## Возвращает логарифм числа по заданному основанию. |
||||
|
LOG10 = LOG10 ## Возвращает десятичный логарифм числа. |
||||
|
MDETERM = МОПРЕД ## Возвращает определитель матрицы массива. |
||||
|
MINVERSE = МОБР ## Возвращает обратную матрицу массива. |
||||
|
MMULT = МУМНОЖ ## Возвращает произведение матриц двух массивов. |
||||
|
MOD = ОСТАТ ## Возвращает остаток от деления. |
||||
|
MROUND = ОКРУГЛТ ## Возвращает число, округленное с требуемой точностью. |
||||
|
MULTINOMIAL = МУЛЬТИНОМ ## Возвращает мультиномиальный коэффициент множества чисел. |
||||
|
ODD = НЕЧЁТ ## Округляет число до ближайшего нечетного целого. |
||||
|
PI = ПИ ## Возвращает число пи. |
||||
|
POWER = СТЕПЕНЬ ## Возвращает результат возведения числа в степень. |
||||
|
PRODUCT = ПРОИЗВЕД ## Возвращает произведение аргументов. |
||||
|
QUOTIENT = ЧАСТНОЕ ## Возвращает целую часть частного при делении. |
||||
|
RADIANS = РАДИАНЫ ## Преобразует градусы в радианы. |
||||
|
RAND = СЛЧИС ## Возвращает случайное число в интервале от 0 до 1. |
||||
|
RANDBETWEEN = СЛУЧМЕЖДУ ## Возвращает случайное число в интервале между двумя заданными числами. |
||||
|
ROMAN = РИМСКОЕ ## Преобразует арабские цифры в римские в виде текста. |
||||
|
ROUND = ОКРУГЛ ## Округляет число до указанного количества десятичных разрядов. |
||||
|
ROUNDDOWN = ОКРУГЛВНИЗ ## Округляет число до ближайшего меньшего по модулю значения. |
||||
|
ROUNDUP = ОКРУГЛВВЕРХ ## Округляет число до ближайшего большего по модулю значения. |
||||
|
SERIESSUM = РЯД.СУММ ## Возвращает сумму степенного ряда, вычисленную по формуле. |
||||
|
SIGN = ЗНАК ## Возвращает знак числа. |
||||
|
SIN = SIN ## Возвращает синус заданного угла. |
||||
|
SINH = SINH ## Возвращает гиперболический синус числа. |
||||
|
SQRT = КОРЕНЬ ## Возвращает положительное значение квадратного корня. |
||||
|
SQRTPI = КОРЕНЬПИ ## Возвращает квадратный корень из значения выражения (число * ПИ). |
||||
|
SUBTOTAL = ПРОМЕЖУТОЧНЫЕ.ИТОГИ ## Возвращает промежуточный итог в списке или базе данных. |
||||
|
SUM = СУММ ## Суммирует аргументы. |
||||
|
SUMIF = СУММЕСЛИ ## Суммирует ячейки, удовлетворяющие заданному условию. |
||||
|
SUMIFS = СУММЕСЛИМН ## Суммирует диапазон ячеек, удовлетворяющих нескольким условиям. |
||||
|
SUMPRODUCT = СУММПРОИЗВ ## Возвращает сумму произведений соответствующих элементов массивов. |
||||
|
SUMSQ = СУММКВ ## Возвращает сумму квадратов аргументов. |
||||
|
SUMX2MY2 = СУММРАЗНКВ ## Возвращает сумму разностей квадратов соответствующих значений в двух массивах. |
||||
|
SUMX2PY2 = СУММСУММКВ ## Возвращает сумму сумм квадратов соответствующих элементов двух массивов. |
||||
|
SUMXMY2 = СУММКВРАЗН ## Возвращает сумму квадратов разностей соответствующих значений в двух массивах. |
||||
|
TAN = TAN ## Возвращает тангенс числа. |
||||
|
TANH = TANH ## Возвращает гиперболический тангенс числа. |
||||
|
TRUNC = ОТБР ## Отбрасывает дробную часть числа. |
||||
|
|
||||
|
|
||||
|
## |
||||
|
## Statistical functions Статистические функции |
||||
|
## |
||||
|
AVEDEV = СРОТКЛ ## Возвращает среднее арифметическое абсолютных значений отклонений точек данных от среднего. |
||||
|
AVERAGE = СРЗНАЧ ## Возвращает среднее арифметическое аргументов. |
||||
|
AVERAGEA = СРЗНАЧА ## Возвращает среднее арифметическое аргументов, включая числа, текст и логические значения. |
||||
|
AVERAGEIF = СРЗНАЧЕСЛИ ## Возвращает среднее значение (среднее арифметическое) всех ячеек в диапазоне, которые удовлетворяют данному условию. |
||||
|
AVERAGEIFS = СРЗНАЧЕСЛИМН ## Возвращает среднее значение (среднее арифметическое) всех ячеек, которые удовлетворяют нескольким условиям. |
||||
|
BETADIST = БЕТАРАСП ## Возвращает интегральную функцию бета-распределения. |
||||
|
BETAINV = БЕТАОБР ## Возвращает обратную интегральную функцию указанного бета-распределения. |
||||
|
BINOMDIST = БИНОМРАСП ## Возвращает отдельное значение биномиального распределения. |
||||
|
CHIDIST = ХИ2РАСП ## Возвращает одностороннюю вероятность распределения хи-квадрат. |
||||
|
CHIINV = ХИ2ОБР ## Возвращает обратное значение односторонней вероятности распределения хи-квадрат. |
||||
|
CHITEST = ХИ2ТЕСТ ## Возвращает тест на независимость. |
||||
|
CONFIDENCE = ДОВЕРИТ ## Возвращает доверительный интервал для среднего значения по генеральной совокупности. |
||||
|
CORREL = КОРРЕЛ ## Возвращает коэффициент корреляции между двумя множествами данных. |
||||
|
COUNT = СЧЁТ ## Подсчитывает количество чисел в списке аргументов. |
||||
|
COUNTA = СЧЁТЗ ## Подсчитывает количество значений в списке аргументов. |
||||
|
COUNTBLANK = СЧИТАТЬПУСТОТЫ ## Подсчитывает количество пустых ячеек в диапазоне |
||||
|
COUNTIF = СЧЁТЕСЛИ ## Подсчитывает количество ячеек в диапазоне, удовлетворяющих заданному условию |
||||
|
COUNTIFS = СЧЁТЕСЛИМН ## Подсчитывает количество ячеек внутри диапазона, удовлетворяющих нескольким условиям. |
||||
|
COVAR = КОВАР ## Возвращает ковариацию, среднее произведений парных отклонений |
||||
|
CRITBINOM = КРИТБИНОМ ## Возвращает наименьшее значение, для которого интегральное биномиальное распределение меньше или равно заданному критерию. |
||||
|
DEVSQ = КВАДРОТКЛ ## Возвращает сумму квадратов отклонений. |
||||
|
EXPONDIST = ЭКСПРАСП ## Возвращает экспоненциальное распределение. |
||||
|
FDIST = FРАСП ## Возвращает F-распределение вероятности. |
||||
|
FINV = FРАСПОБР ## Возвращает обратное значение для F-распределения вероятности. |
||||
|
FISHER = ФИШЕР ## Возвращает преобразование Фишера. |
||||
|
FISHERINV = ФИШЕРОБР ## Возвращает обратное преобразование Фишера. |
||||
|
FORECAST = ПРЕДСКАЗ ## Возвращает значение линейного тренда. |
||||
|
FREQUENCY = ЧАСТОТА ## Возвращает распределение частот в виде вертикального массива. |
||||
|
FTEST = ФТЕСТ ## Возвращает результат F-теста. |
||||
|
GAMMADIST = ГАММАРАСП ## Возвращает гамма-распределение. |
||||
|
GAMMAINV = ГАММАОБР ## Возвращает обратное гамма-распределение. |
||||
|
GAMMALN = ГАММАНЛОГ ## Возвращает натуральный логарифм гамма функции, Γ(x). |
||||
|
GEOMEAN = СРГЕОМ ## Возвращает среднее геометрическое. |
||||
|
GROWTH = РОСТ ## Возвращает значения в соответствии с экспоненциальным трендом. |
||||
|
HARMEAN = СРГАРМ ## Возвращает среднее гармоническое. |
||||
|
HYPGEOMDIST = ГИПЕРГЕОМЕТ ## Возвращает гипергеометрическое распределение. |
||||
|
INTERCEPT = ОТРЕЗОК ## Возвращает отрезок, отсекаемый на оси линией линейной регрессии. |
||||
|
KURT = ЭКСЦЕСС ## Возвращает эксцесс множества данных. |
||||
|
LARGE = НАИБОЛЬШИЙ ## Возвращает k-ое наибольшее значение в множестве данных. |
||||
|
LINEST = ЛИНЕЙН ## Возвращает параметры линейного тренда. |
||||
|
LOGEST = ЛГРФПРИБЛ ## Возвращает параметры экспоненциального тренда. |
||||
|
LOGINV = ЛОГНОРМОБР ## Возвращает обратное логарифмическое нормальное распределение. |
||||
|
LOGNORMDIST = ЛОГНОРМРАСП ## Возвращает интегральное логарифмическое нормальное распределение. |
||||
|
MAX = МАКС ## Возвращает наибольшее значение в списке аргументов. |
||||
|
MAXA = МАКСА ## Возвращает наибольшее значение в списке аргументов, включая числа, текст и логические значения. |
||||
|
MEDIAN = МЕДИАНА ## Возвращает медиану заданных чисел. |
||||
|
MIN = МИН ## Возвращает наименьшее значение в списке аргументов. |
||||
|
MINA = МИНА ## Возвращает наименьшее значение в списке аргументов, включая числа, текст и логические значения. |
||||
|
MODE = МОДА ## Возвращает значение моды множества данных. |
||||
|
NEGBINOMDIST = ОТРБИНОМРАСП ## Возвращает отрицательное биномиальное распределение. |
||||
|
NORMDIST = НОРМРАСП ## Возвращает нормальную функцию распределения. |
||||
|
NORMINV = НОРМОБР ## Возвращает обратное нормальное распределение. |
||||
|
NORMSDIST = НОРМСТРАСП ## Возвращает стандартное нормальное интегральное распределение. |
||||
|
NORMSINV = НОРМСТОБР ## Возвращает обратное значение стандартного нормального распределения. |
||||
|
PEARSON = ПИРСОН ## Возвращает коэффициент корреляции Пирсона. |
||||
|
PERCENTILE = ПЕРСЕНТИЛЬ ## Возвращает k-ую персентиль для значений диапазона. |
||||
|
PERCENTRANK = ПРОЦЕНТРАНГ ## Возвращает процентную норму значения в множестве данных. |
||||
|
PERMUT = ПЕРЕСТ ## Возвращает количество перестановок для заданного числа объектов. |
||||
|
POISSON = ПУАССОН ## Возвращает распределение Пуассона. |
||||
|
PROB = ВЕРОЯТНОСТЬ ## Возвращает вероятность того, что значение из диапазона находится внутри заданных пределов. |
||||
|
QUARTILE = КВАРТИЛЬ ## Возвращает квартиль множества данных. |
||||
|
RANK = РАНГ ## Возвращает ранг числа в списке чисел. |
||||
|
RSQ = КВПИРСОН ## Возвращает квадрат коэффициента корреляции Пирсона. |
||||
|
SKEW = СКОС ## Возвращает асимметрию распределения. |
||||
|
SLOPE = НАКЛОН ## Возвращает наклон линии линейной регрессии. |
||||
|
SMALL = НАИМЕНЬШИЙ ## Возвращает k-ое наименьшее значение в множестве данных. |
||||
|
STANDARDIZE = НОРМАЛИЗАЦИЯ ## Возвращает нормализованное значение. |
||||
|
STDEV = СТАНДОТКЛОН ## Оценивает стандартное отклонение по выборке. |
||||
|
STDEVA = СТАНДОТКЛОНА ## Оценивает стандартное отклонение по выборке, включая числа, текст и логические значения. |
||||
|
STDEVP = СТАНДОТКЛОНП ## Вычисляет стандартное отклонение по генеральной совокупности. |
||||
|
STDEVPA = СТАНДОТКЛОНПА ## Вычисляет стандартное отклонение по генеральной совокупности, включая числа, текст и логические значения. |
||||
|
STEYX = СТОШYX ## Возвращает стандартную ошибку предсказанных значений y для каждого значения x в регрессии. |
||||
|
TDIST = СТЬЮДРАСП ## Возвращает t-распределение Стьюдента. |
||||
|
TINV = СТЬЮДРАСПОБР ## Возвращает обратное t-распределение Стьюдента. |
||||
|
TREND = ТЕНДЕНЦИЯ ## Возвращает значения в соответствии с линейным трендом. |
||||
|
TRIMMEAN = УРЕЗСРЕДНЕЕ ## Возвращает среднее внутренности множества данных. |
||||
|
TTEST = ТТЕСТ ## Возвращает вероятность, соответствующую критерию Стьюдента. |
||||
|
VAR = ДИСП ## Оценивает дисперсию по выборке. |
||||
|
VARA = ДИСПА ## Оценивает дисперсию по выборке, включая числа, текст и логические значения. |
||||
|
VARP = ДИСПР ## Вычисляет дисперсию для генеральной совокупности. |
||||
|
VARPA = ДИСПРА ## Вычисляет дисперсию для генеральной совокупности, включая числа, текст и логические значения. |
||||
|
WEIBULL = ВЕЙБУЛЛ ## Возвращает распределение Вейбулла. |
||||
|
ZTEST = ZТЕСТ ## Возвращает двустороннее P-значение z-теста. |
||||
|
|
||||
|
|
||||
|
## |
||||
|
## Text functions Текстовые функции |
||||
|
## |
||||
|
ASC = ASC ## Для языков с двухбайтовыми наборами знаков (например, катакана) преобразует полноширинные (двухбайтовые) знаки в полуширинные (однобайтовые). |
||||
|
BAHTTEXT = БАТТЕКСТ ## Преобразует число в текст, используя денежный формат ß (БАТ). |
||||
|
CHAR = СИМВОЛ ## Возвращает знак с заданным кодом. |
||||
|
CLEAN = ПЕЧСИМВ ## Удаляет все непечатаемые знаки из текста. |
||||
|
CODE = КОДСИМВ ## Возвращает числовой код первого знака в текстовой строке. |
||||
|
CONCATENATE = СЦЕПИТЬ ## Объединяет несколько текстовых элементов в один. |
||||
|
DOLLAR = РУБЛЬ ## Преобразует число в текст, используя денежный формат. |
||||
|
EXACT = СОВПАД ## Проверяет идентичность двух текстовых значений. |
||||
|
FIND = НАЙТИ ## Ищет вхождения одного текстового значения в другом (с учетом регистра). |
||||
|
FINDB = НАЙТИБ ## Ищет вхождения одного текстового значения в другом (с учетом регистра). |
||||
|
FIXED = ФИКСИРОВАННЫЙ ## Форматирует число и преобразует его в текст с заданным числом десятичных знаков. |
||||
|
JIS = JIS ## Для языков с двухбайтовыми наборами знаков (например, катакана) преобразует полуширинные (однобайтовые) знаки в текстовой строке в полноширинные (двухбайтовые). |
||||
|
LEFT = ЛЕВСИМВ ## Возвращает крайние слева знаки текстового значения. |
||||
|
LEFTB = ЛЕВБ ## Возвращает крайние слева знаки текстового значения. |
||||
|
LEN = ДЛСТР ## Возвращает количество знаков в текстовой строке. |
||||
|
LENB = ДЛИНБ ## Возвращает количество знаков в текстовой строке. |
||||
|
LOWER = СТРОЧН ## Преобразует все буквы текста в строчные. |
||||
|
MID = ПСТР ## Возвращает заданное число знаков из строки текста, начиная с указанной позиции. |
||||
|
MIDB = ПСТРБ ## Возвращает заданное число знаков из строки текста, начиная с указанной позиции. |
||||
|
PHONETIC = PHONETIC ## Извлекает фонетические (фуригана) знаки из текстовой строки. |
||||
|
PROPER = ПРОПНАЧ ## Преобразует первую букву в каждом слове текста в прописную. |
||||
|
REPLACE = ЗАМЕНИТЬ ## Заменяет знаки в тексте. |
||||
|
REPLACEB = ЗАМЕНИТЬБ ## Заменяет знаки в тексте. |
||||
|
REPT = ПОВТОР ## Повторяет текст заданное число раз. |
||||
|
RIGHT = ПРАВСИМВ ## Возвращает крайние справа знаки текстовой строки. |
||||
|
RIGHTB = ПРАВБ ## Возвращает крайние справа знаки текстовой строки. |
||||
|
SEARCH = ПОИСК ## Ищет вхождения одного текстового значения в другом (без учета регистра). |
||||
|
SEARCHB = ПОИСКБ ## Ищет вхождения одного текстового значения в другом (без учета регистра). |
||||
|
SUBSTITUTE = ПОДСТАВИТЬ ## Заменяет в текстовой строке старый текст новым. |
||||
|
T = Т ## Преобразует аргументы в текст. |
||||
|
TEXT = ТЕКСТ ## Форматирует число и преобразует его в текст. |
||||
|
TRIM = СЖПРОБЕЛЫ ## Удаляет из текста пробелы. |
||||
|
UPPER = ПРОПИСН ## Преобразует все буквы текста в прописные. |
||||
|
VALUE = ЗНАЧЕН ## Преобразует текстовый аргумент в число. |
||||
@ -0,0 +1,520 @@ |
|||||
|
############################################################ |
||||
|
## |
||||
|
## PhpSpreadsheet - function name translations |
||||
|
## |
||||
|
## Ceština (Czech) |
||||
|
## |
||||
|
############################################################ |
||||
|
|
||||
|
|
||||
|
## |
||||
|
## Funkce pro práci s datovými krychlemi (Cube Functions) |
||||
|
## |
||||
|
CUBEKPIMEMBER = CUBEKPIMEMBER |
||||
|
CUBEMEMBER = CUBEMEMBER |
||||
|
CUBEMEMBERPROPERTY = CUBEMEMBERPROPERTY |
||||
|
CUBERANKEDMEMBER = CUBERANKEDMEMBER |
||||
|
CUBESET = CUBESET |
||||
|
CUBESETCOUNT = CUBESETCOUNT |
||||
|
CUBEVALUE = CUBEVALUE |
||||
|
|
||||
|
## |
||||
|
## Funkce databáze (Database Functions) |
||||
|
## |
||||
|
DAVERAGE = DPRŮMĚR |
||||
|
DCOUNT = DPOČET |
||||
|
DCOUNTA = DPOČET2 |
||||
|
DGET = DZÍSKAT |
||||
|
DMAX = DMAX |
||||
|
DMIN = DMIN |
||||
|
DPRODUCT = DSOUČIN |
||||
|
DSTDEV = DSMODCH.VÝBĚR |
||||
|
DSTDEVP = DSMODCH |
||||
|
DSUM = DSUMA |
||||
|
DVAR = DVAR.VÝBĚR |
||||
|
DVARP = DVAR |
||||
|
|
||||
|
## |
||||
|
## Funkce data a času (Date & Time Functions) |
||||
|
## |
||||
|
DATE = DATUM |
||||
|
DATEVALUE = DATUMHODN |
||||
|
DAY = DEN |
||||
|
DAYS = DAYS |
||||
|
DAYS360 = ROK360 |
||||
|
EDATE = EDATE |
||||
|
EOMONTH = EOMONTH |
||||
|
HOUR = HODINA |
||||
|
ISOWEEKNUM = ISOWEEKNUM |
||||
|
MINUTE = MINUTA |
||||
|
MONTH = MĚSÍC |
||||
|
NETWORKDAYS = NETWORKDAYS |
||||
|
NETWORKDAYS.INTL = NETWORKDAYS.INTL |
||||
|
NOW = NYNÍ |
||||
|
SECOND = SEKUNDA |
||||
|
TIME = ČAS |
||||
|
TIMEVALUE = ČASHODN |
||||
|
TODAY = DNES |
||||
|
WEEKDAY = DENTÝDNE |
||||
|
WEEKNUM = WEEKNUM |
||||
|
WORKDAY = WORKDAY |
||||
|
WORKDAY.INTL = WORKDAY.INTL |
||||
|
YEAR = ROK |
||||
|
YEARFRAC = YEARFRAC |
||||
|
|
||||
|
## |
||||
|
## Inženýrské funkce (Engineering Functions) |
||||
|
## |
||||
|
BESSELI = BESSELI |
||||
|
BESSELJ = BESSELJ |
||||
|
BESSELK = BESSELK |
||||
|
BESSELY = BESSELY |
||||
|
BIN2DEC = BIN2DEC |
||||
|
BIN2HEX = BIN2HEX |
||||
|
BIN2OCT = BIN2OCT |
||||
|
BITAND = BITAND |
||||
|
BITLSHIFT = BITLSHIFT |
||||
|
BITOR = BITOR |
||||
|
BITRSHIFT = BITRSHIFT |
||||
|
BITXOR = BITXOR |
||||
|
COMPLEX = COMPLEX |
||||
|
CONVERT = CONVERT |
||||
|
DEC2BIN = DEC2BIN |
||||
|
DEC2HEX = DEC2HEX |
||||
|
DEC2OCT = DEC2OCT |
||||
|
DELTA = DELTA |
||||
|
ERF = ERF |
||||
|
ERF.PRECISE = ERF.PRECISE |
||||
|
ERFC = ERFC |
||||
|
ERFC.PRECISE = ERFC.PRECISE |
||||
|
GESTEP = GESTEP |
||||
|
HEX2BIN = HEX2BIN |
||||
|
HEX2DEC = HEX2DEC |
||||
|
HEX2OCT = HEX2OCT |
||||
|
IMABS = IMABS |
||||
|
IMAGINARY = IMAGINARY |
||||
|
IMARGUMENT = IMARGUMENT |
||||
|
IMCONJUGATE = IMCONJUGATE |
||||
|
IMCOS = IMCOS |
||||
|
IMCOSH = IMCOSH |
||||
|
IMCOT = IMCOT |
||||
|
IMCSC = IMCSC |
||||
|
IMCSCH = IMCSCH |
||||
|
IMDIV = IMDIV |
||||
|
IMEXP = IMEXP |
||||
|
IMLN = IMLN |
||||
|
IMLOG10 = IMLOG10 |
||||
|
IMLOG2 = IMLOG2 |
||||
|
IMPOWER = IMPOWER |
||||
|
IMPRODUCT = IMPRODUCT |
||||
|
IMREAL = IMREAL |
||||
|
IMSEC = IMSEC |
||||
|
IMSECH = IMSECH |
||||
|
IMSIN = IMSIN |
||||
|
IMSINH = IMSINH |
||||
|
IMSQRT = IMSQRT |
||||
|
IMSUB = IMSUB |
||||
|
IMSUM = IMSUM |
||||
|
IMTAN = IMTAN |
||||
|
OCT2BIN = OCT2BIN |
||||
|
OCT2DEC = OCT2DEC |
||||
|
OCT2HEX = OCT2HEX |
||||
|
|
||||
|
## |
||||
|
## Finanční funkce (Financial Functions) |
||||
|
## |
||||
|
ACCRINT = ACCRINT |
||||
|
ACCRINTM = ACCRINTM |
||||
|
AMORDEGRC = AMORDEGRC |
||||
|
AMORLINC = AMORLINC |
||||
|
COUPDAYBS = COUPDAYBS |
||||
|
COUPDAYS = COUPDAYS |
||||
|
COUPDAYSNC = COUPDAYSNC |
||||
|
COUPNCD = COUPNCD |
||||
|
COUPNUM = COUPNUM |
||||
|
COUPPCD = COUPPCD |
||||
|
CUMIPMT = CUMIPMT |
||||
|
CUMPRINC = CUMPRINC |
||||
|
DB = ODPIS.ZRYCH |
||||
|
DDB = ODPIS.ZRYCH2 |
||||
|
DISC = DISC |
||||
|
DOLLARDE = DOLLARDE |
||||
|
DOLLARFR = DOLLARFR |
||||
|
DURATION = DURATION |
||||
|
EFFECT = EFFECT |
||||
|
FV = BUDHODNOTA |
||||
|
FVSCHEDULE = FVSCHEDULE |
||||
|
INTRATE = INTRATE |
||||
|
IPMT = PLATBA.ÚROK |
||||
|
IRR = MÍRA.VÝNOSNOSTI |
||||
|
ISPMT = ISPMT |
||||
|
MDURATION = MDURATION |
||||
|
MIRR = MOD.MÍRA.VÝNOSNOSTI |
||||
|
NOMINAL = NOMINAL |
||||
|
NPER = POČET.OBDOBÍ |
||||
|
NPV = ČISTÁ.SOUČHODNOTA |
||||
|
ODDFPRICE = ODDFPRICE |
||||
|
ODDFYIELD = ODDFYIELD |
||||
|
ODDLPRICE = ODDLPRICE |
||||
|
ODDLYIELD = ODDLYIELD |
||||
|
PDURATION = PDURATION |
||||
|
PMT = PLATBA |
||||
|
PPMT = PLATBA.ZÁKLAD |
||||
|
PRICE = PRICE |
||||
|
PRICEDISC = PRICEDISC |
||||
|
PRICEMAT = PRICEMAT |
||||
|
PV = SOUČHODNOTA |
||||
|
RATE = ÚROKOVÁ.MÍRA |
||||
|
RECEIVED = RECEIVED |
||||
|
RRI = RRI |
||||
|
SLN = ODPIS.LIN |
||||
|
SYD = ODPIS.NELIN |
||||
|
TBILLEQ = TBILLEQ |
||||
|
TBILLPRICE = TBILLPRICE |
||||
|
TBILLYIELD = TBILLYIELD |
||||
|
VDB = ODPIS.ZA.INT |
||||
|
XIRR = XIRR |
||||
|
XNPV = XNPV |
||||
|
YIELD = YIELD |
||||
|
YIELDDISC = YIELDDISC |
||||
|
YIELDMAT = YIELDMAT |
||||
|
|
||||
|
## |
||||
|
## Informační funkce (Information Functions) |
||||
|
## |
||||
|
CELL = POLÍČKO |
||||
|
ERROR.TYPE = CHYBA.TYP |
||||
|
INFO = O.PROSTŘEDÍ |
||||
|
ISBLANK = JE.PRÁZDNÉ |
||||
|
ISERR = JE.CHYBA |
||||
|
ISERROR = JE.CHYBHODN |
||||
|
ISEVEN = ISEVEN |
||||
|
ISFORMULA = ISFORMULA |
||||
|
ISLOGICAL = JE.LOGHODN |
||||
|
ISNA = JE.NEDEF |
||||
|
ISNONTEXT = JE.NETEXT |
||||
|
ISNUMBER = JE.ČISLO |
||||
|
ISODD = ISODD |
||||
|
ISREF = JE.ODKAZ |
||||
|
ISTEXT = JE.TEXT |
||||
|
N = N |
||||
|
NA = NEDEF |
||||
|
SHEET = SHEET |
||||
|
SHEETS = SHEETS |
||||
|
TYPE = TYP |
||||
|
|
||||
|
## |
||||
|
## Logické funkce (Logical Functions) |
||||
|
## |
||||
|
AND = A |
||||
|
FALSE = NEPRAVDA |
||||
|
IF = KDYŽ |
||||
|
IFERROR = IFERROR |
||||
|
IFNA = IFNA |
||||
|
IFS = IFS |
||||
|
NOT = NE |
||||
|
OR = NEBO |
||||
|
SWITCH = SWITCH |
||||
|
TRUE = PRAVDA |
||||
|
XOR = XOR |
||||
|
|
||||
|
## |
||||
|
## Vyhledávací funkce a funkce pro odkazy (Lookup & Reference Functions) |
||||
|
## |
||||
|
ADDRESS = ODKAZ |
||||
|
AREAS = POČET.BLOKŮ |
||||
|
CHOOSE = ZVOLIT |
||||
|
COLUMN = SLOUPEC |
||||
|
COLUMNS = SLOUPCE |
||||
|
FORMULATEXT = FORMULATEXT |
||||
|
GETPIVOTDATA = ZÍSKATKONTDATA |
||||
|
HLOOKUP = VVYHLEDAT |
||||
|
HYPERLINK = HYPERTEXTOVÝ.ODKAZ |
||||
|
INDEX = INDEX |
||||
|
INDIRECT = NEPŘÍMÝ.ODKAZ |
||||
|
LOOKUP = VYHLEDAT |
||||
|
MATCH = POZVYHLEDAT |
||||
|
OFFSET = POSUN |
||||
|
ROW = ŘÁDEK |
||||
|
ROWS = ŘÁDKY |
||||
|
RTD = RTD |
||||
|
TRANSPOSE = TRANSPOZICE |
||||
|
VLOOKUP = SVYHLEDAT |
||||
|
|
||||
|
## |
||||
|
## Matematické a trigonometrické funkce (Math & Trig Functions) |
||||
|
## |
||||
|
ABS = ABS |
||||
|
ACOS = ARCCOS |
||||
|
ACOSH = ARCCOSH |
||||
|
ACOT = ACOT |
||||
|
ACOTH = ACOTH |
||||
|
AGGREGATE = AGGREGATE |
||||
|
ARABIC = ARABIC |
||||
|
ASIN = ARCSIN |
||||
|
ASINH = ARCSINH |
||||
|
ATAN = ARCTG |
||||
|
ATAN2 = ARCTG2 |
||||
|
ATANH = ARCTGH |
||||
|
BASE = BASE |
||||
|
CEILING.MATH = CEILING.MATH |
||||
|
COMBIN = KOMBINACE |
||||
|
COMBINA = COMBINA |
||||
|
COS = COS |
||||
|
COSH = COSH |
||||
|
COT = COT |
||||
|
COTH = COTH |
||||
|
CSC = CSC |
||||
|
CSCH = CSCH |
||||
|
DECIMAL = DECIMAL |
||||
|
DEGREES = DEGREES |
||||
|
EVEN = ZAOKROUHLIT.NA.SUDÉ |
||||
|
EXP = EXP |
||||
|
FACT = FAKTORIÁL |
||||
|
FACTDOUBLE = FACTDOUBLE |
||||
|
FLOOR.MATH = FLOOR.MATH |
||||
|
GCD = GCD |
||||
|
INT = CELÁ.ČÁST |
||||
|
LCM = LCM |
||||
|
LN = LN |
||||
|
LOG = LOGZ |
||||
|
LOG10 = LOG |
||||
|
MDETERM = DETERMINANT |
||||
|
MINVERSE = INVERZE |
||||
|
MMULT = SOUČIN.MATIC |
||||
|
MOD = MOD |
||||
|
MROUND = MROUND |
||||
|
MULTINOMIAL = MULTINOMIAL |
||||
|
MUNIT = MUNIT |
||||
|
ODD = ZAOKROUHLIT.NA.LICHÉ |
||||
|
PI = PI |
||||
|
POWER = POWER |
||||
|
PRODUCT = SOUČIN |
||||
|
QUOTIENT = QUOTIENT |
||||
|
RADIANS = RADIANS |
||||
|
RAND = NÁHČÍSLO |
||||
|
RANDBETWEEN = RANDBETWEEN |
||||
|
ROMAN = ROMAN |
||||
|
ROUND = ZAOKROUHLIT |
||||
|
ROUNDDOWN = ROUNDDOWN |
||||
|
ROUNDUP = ROUNDUP |
||||
|
SEC = SEC |
||||
|
SECH = SECH |
||||
|
SERIESSUM = SERIESSUM |
||||
|
SIGN = SIGN |
||||
|
SIN = SIN |
||||
|
SINH = SINH |
||||
|
SQRT = ODMOCNINA |
||||
|
SQRTPI = SQRTPI |
||||
|
SUBTOTAL = SUBTOTAL |
||||
|
SUM = SUMA |
||||
|
SUMIF = SUMIF |
||||
|
SUMIFS = SUMIFS |
||||
|
SUMPRODUCT = SOUČIN.SKALÁRNÍ |
||||
|
SUMSQ = SUMA.ČTVERCŮ |
||||
|
SUMX2MY2 = SUMX2MY2 |
||||
|
SUMX2PY2 = SUMX2PY2 |
||||
|
SUMXMY2 = SUMXMY2 |
||||
|
TAN = TG |
||||
|
TANH = TGH |
||||
|
TRUNC = USEKNOUT |
||||
|
|
||||
|
## |
||||
|
## Statistické funkce (Statistical Functions) |
||||
|
## |
||||
|
AVEDEV = PRŮMODCHYLKA |
||||
|
AVERAGE = PRŮMĚR |
||||
|
AVERAGEA = AVERAGEA |
||||
|
AVERAGEIF = AVERAGEIF |
||||
|
AVERAGEIFS = AVERAGEIFS |
||||
|
BETA.DIST = BETA.DIST |
||||
|
BETA.INV = BETA.INV |
||||
|
BINOM.DIST = BINOM.DIST |
||||
|
BINOM.DIST.RANGE = BINOM.DIST.RANGE |
||||
|
BINOM.INV = BINOM.INV |
||||
|
CHISQ.DIST = CHISQ.DIST |
||||
|
CHISQ.DIST.RT = CHISQ.DIST.RT |
||||
|
CHISQ.INV = CHISQ.INV |
||||
|
CHISQ.INV.RT = CHISQ.INV.RT |
||||
|
CHISQ.TEST = CHISQ.TEST |
||||
|
CONFIDENCE.NORM = CONFIDENCE.NORM |
||||
|
CONFIDENCE.T = CONFIDENCE.T |
||||
|
CORREL = CORREL |
||||
|
COUNT = POČET |
||||
|
COUNTA = POČET2 |
||||
|
COUNTBLANK = COUNTBLANK |
||||
|
COUNTIF = COUNTIF |
||||
|
COUNTIFS = COUNTIFS |
||||
|
COVARIANCE.P = COVARIANCE.P |
||||
|
COVARIANCE.S = COVARIANCE.S |
||||
|
DEVSQ = DEVSQ |
||||
|
EXPON.DIST = EXPON.DIST |
||||
|
F.DIST = F.DIST |
||||
|
F.DIST.RT = F.DIST.RT |
||||
|
F.INV = F.INV |
||||
|
F.INV.RT = F.INV.RT |
||||
|
F.TEST = F.TEST |
||||
|
FISHER = FISHER |
||||
|
FISHERINV = FISHERINV |
||||
|
FORECAST.ETS = FORECAST.ETS |
||||
|
FORECAST.ETS.CONFINT = FORECAST.ETS.CONFINT |
||||
|
FORECAST.ETS.SEASONALITY = FORECAST.ETS.SEASONALITY |
||||
|
FORECAST.ETS.STAT = FORECAST.ETS.STAT |
||||
|
FORECAST.LINEAR = FORECAST.LINEAR |
||||
|
FREQUENCY = ČETNOSTI |
||||
|
GAMMA = GAMMA |
||||
|
GAMMA.DIST = GAMMA.DIST |
||||
|
GAMMA.INV = GAMMA.INV |
||||
|
GAMMALN = GAMMALN |
||||
|
GAMMALN.PRECISE = GAMMALN.PRECISE |
||||
|
GAUSS = GAUSS |
||||
|
GEOMEAN = GEOMEAN |
||||
|
GROWTH = LOGLINTREND |
||||
|
HARMEAN = HARMEAN |
||||
|
HYPGEOM.DIST = HYPGEOM.DIST |
||||
|
INTERCEPT = INTERCEPT |
||||
|
KURT = KURT |
||||
|
LARGE = LARGE |
||||
|
LINEST = LINREGRESE |
||||
|
LOGEST = LOGLINREGRESE |
||||
|
LOGNORM.DIST = LOGNORM.DIST |
||||
|
LOGNORM.INV = LOGNORM.INV |
||||
|
MAX = MAX |
||||
|
MAXA = MAXA |
||||
|
MAXIFS = MAXIFS |
||||
|
MEDIAN = MEDIAN |
||||
|
MIN = MIN |
||||
|
MINA = MINA |
||||
|
MINIFS = MINIFS |
||||
|
MODE.MULT = MODE.MULT |
||||
|
MODE.SNGL = MODE.SNGL |
||||
|
NEGBINOM.DIST = NEGBINOM.DIST |
||||
|
NORM.DIST = NORM.DIST |
||||
|
NORM.INV = NORM.INV |
||||
|
NORM.S.DIST = NORM.S.DIST |
||||
|
NORM.S.INV = NORM.S.INV |
||||
|
PEARSON = PEARSON |
||||
|
PERCENTILE.EXC = PERCENTIL.EXC |
||||
|
PERCENTILE.INC = PERCENTIL.INC |
||||
|
PERCENTRANK.EXC = PERCENTRANK.EXC |
||||
|
PERCENTRANK.INC = PERCENTRANK.INC |
||||
|
PERMUT = PERMUTACE |
||||
|
PERMUTATIONA = PERMUTATIONA |
||||
|
PHI = PHI |
||||
|
POISSON.DIST = POISSON.DIST |
||||
|
PROB = PROB |
||||
|
QUARTILE.EXC = QUARTIL.EXC |
||||
|
QUARTILE.INC = QUARTIL.INC |
||||
|
RANK.AVG = RANK.AVG |
||||
|
RANK.EQ = RANK.EQ |
||||
|
RSQ = RKQ |
||||
|
SKEW = SKEW |
||||
|
SKEW.P = SKEW.P |
||||
|
SLOPE = SLOPE |
||||
|
SMALL = SMALL |
||||
|
STANDARDIZE = STANDARDIZE |
||||
|
STDEV.P = SMODCH.P |
||||
|
STDEV.S = SMODCH.VÝBĚR.S |
||||
|
STDEVA = STDEVA |
||||
|
STDEVPA = STDEVPA |
||||
|
STEYX = STEYX |
||||
|
T.DIST = T.DIST |
||||
|
T.DIST.2T = T.DIST.2T |
||||
|
T.DIST.RT = T.DIST.RT |
||||
|
T.INV = T.INV |
||||
|
T.INV.2T = T.INV.2T |
||||
|
T.TEST = T.TEST |
||||
|
TREND = LINTREND |
||||
|
TRIMMEAN = TRIMMEAN |
||||
|
VAR.P = VAR.P |
||||
|
VAR.S = VAR.S |
||||
|
VARA = VARA |
||||
|
VARPA = VARPA |
||||
|
WEIBULL.DIST = WEIBULL.DIST |
||||
|
Z.TEST = Z.TEST |
||||
|
|
||||
|
## |
||||
|
## Textové funkce (Text Functions) |
||||
|
## |
||||
|
BAHTTEXT = BAHTTEXT |
||||
|
CHAR = ZNAK |
||||
|
CLEAN = VYČISTIT |
||||
|
CODE = KÓD |
||||
|
CONCAT = CONCAT |
||||
|
DOLLAR = KČ |
||||
|
EXACT = STEJNÉ |
||||
|
FIND = NAJÍT |
||||
|
FIXED = ZAOKROUHLIT.NA.TEXT |
||||
|
LEFT = ZLEVA |
||||
|
LEN = DÉLKA |
||||
|
LOWER = MALÁ |
||||
|
MID = ČÁST |
||||
|
NUMBERVALUE = NUMBERVALUE |
||||
|
PHONETIC = ZVUKOVÉ |
||||
|
PROPER = VELKÁ2 |
||||
|
REPLACE = NAHRADIT |
||||
|
REPT = OPAKOVAT |
||||
|
RIGHT = ZPRAVA |
||||
|
SEARCH = HLEDAT |
||||
|
SUBSTITUTE = DOSADIT |
||||
|
T = T |
||||
|
TEXT = HODNOTA.NA.TEXT |
||||
|
TEXTJOIN = TEXTJOIN |
||||
|
TRIM = PROČISTIT |
||||
|
UNICHAR = UNICHAR |
||||
|
UNICODE = UNICODE |
||||
|
UPPER = VELKÁ |
||||
|
VALUE = HODNOTA |
||||
|
|
||||
|
## |
||||
|
## Webové funkce (Web Functions) |
||||
|
## |
||||
|
ENCODEURL = ENCODEURL |
||||
|
FILTERXML = FILTERXML |
||||
|
WEBSERVICE = WEBSERVICE |
||||
|
|
||||
|
## |
||||
|
## Funkce pro kompatibilitu (Compatibility Functions) |
||||
|
## |
||||
|
BETADIST = BETADIST |
||||
|
BETAINV = BETAINV |
||||
|
BINOMDIST = BINOMDIST |
||||
|
CEILING = ZAOKR.NAHORU |
||||
|
CHIDIST = CHIDIST |
||||
|
CHIINV = CHIINV |
||||
|
CHITEST = CHITEST |
||||
|
CONCATENATE = CONCATENATE |
||||
|
CONFIDENCE = CONFIDENCE |
||||
|
COVAR = COVAR |
||||
|
CRITBINOM = CRITBINOM |
||||
|
EXPONDIST = EXPONDIST |
||||
|
FDIST = FDIST |
||||
|
FINV = FINV |
||||
|
FLOOR = ZAOKR.DOLŮ |
||||
|
FORECAST = FORECAST |
||||
|
FTEST = FTEST |
||||
|
GAMMADIST = GAMMADIST |
||||
|
GAMMAINV = GAMMAINV |
||||
|
HYPGEOMDIST = HYPGEOMDIST |
||||
|
LOGINV = LOGINV |
||||
|
LOGNORMDIST = LOGNORMDIST |
||||
|
MODE = MODE |
||||
|
NEGBINOMDIST = NEGBINOMDIST |
||||
|
NORMDIST = NORMDIST |
||||
|
NORMINV = NORMINV |
||||
|
NORMSDIST = NORMSDIST |
||||
|
NORMSINV = NORMSINV |
||||
|
PERCENTILE = PERCENTIL |
||||
|
PERCENTRANK = PERCENTRANK |
||||
|
POISSON = POISSON |
||||
|
QUARTILE = QUARTIL |
||||
|
RANK = RANK |
||||
|
STDEV = SMODCH.VÝBĚR |
||||
|
STDEVP = SMODCH |
||||
|
TDIST = TDIST |
||||
|
TINV = TINV |
||||
|
TTEST = TTEST |
||||
|
VAR = VAR.VÝBĚR |
||||
|
VARP = VAR |
||||
|
WEIBULL = WEIBULL |
||||
|
ZTEST = ZTEST |
||||
@ -0,0 +1,537 @@ |
|||||
|
############################################################ |
||||
|
## |
||||
|
## PhpSpreadsheet - function name translations |
||||
|
## |
||||
|
## Dansk (Danish) |
||||
|
## |
||||
|
############################################################ |
||||
|
|
||||
|
|
||||
|
## |
||||
|
## Kubefunktioner (Cube Functions) |
||||
|
## |
||||
|
CUBEKPIMEMBER = KUBE.KPI.MEDLEM |
||||
|
CUBEMEMBER = KUBEMEDLEM |
||||
|
CUBEMEMBERPROPERTY = KUBEMEDLEM.EGENSKAB |
||||
|
CUBERANKEDMEMBER = KUBERANGERET.MEDLEM |
||||
|
CUBESET = KUBESÆT |
||||
|
CUBESETCOUNT = KUBESÆT.ANTAL |
||||
|
CUBEVALUE = KUBEVÆRDI |
||||
|
|
||||
|
## |
||||
|
## Databasefunktioner (Database Functions) |
||||
|
## |
||||
|
DAVERAGE = DMIDDEL |
||||
|
DCOUNT = DTÆL |
||||
|
DCOUNTA = DTÆLV |
||||
|
DGET = DHENT |
||||
|
DMAX = DMAKS |
||||
|
DMIN = DMIN |
||||
|
DPRODUCT = DPRODUKT |
||||
|
DSTDEV = DSTDAFV |
||||
|
DSTDEVP = DSTDAFVP |
||||
|
DSUM = DSUM |
||||
|
DVAR = DVARIANS |
||||
|
DVARP = DVARIANSP |
||||
|
|
||||
|
## |
||||
|
## Dato- og klokkeslætfunktioner (Date & Time Functions) |
||||
|
## |
||||
|
DATE = DATO |
||||
|
DATEDIF = DATO.FORSKEL |
||||
|
DATESTRING = DATOSTRENG |
||||
|
DATEVALUE = DATOVÆRDI |
||||
|
DAY = DAG |
||||
|
DAYS = DAGE |
||||
|
DAYS360 = DAGE360 |
||||
|
EDATE = EDATO |
||||
|
EOMONTH = SLUT.PÅ.MÅNED |
||||
|
HOUR = TIME |
||||
|
ISOWEEKNUM = ISOUGE.NR |
||||
|
MINUTE = MINUT |
||||
|
MONTH = MÅNED |
||||
|
NETWORKDAYS = ANTAL.ARBEJDSDAGE |
||||
|
NETWORKDAYS.INTL = ANTAL.ARBEJDSDAGE.INTL |
||||
|
NOW = NU |
||||
|
SECOND = SEKUND |
||||
|
THAIDAYOFWEEK = THAILANDSKUGEDAG |
||||
|
THAIMONTHOFYEAR = THAILANDSKMÅNED |
||||
|
THAIYEAR = THAILANDSKÅR |
||||
|
TIME = TID |
||||
|
TIMEVALUE = TIDSVÆRDI |
||||
|
TODAY = IDAG |
||||
|
WEEKDAY = UGEDAG |
||||
|
WEEKNUM = UGE.NR |
||||
|
WORKDAY = ARBEJDSDAG |
||||
|
WORKDAY.INTL = ARBEJDSDAG.INTL |
||||
|
YEAR = ÅR |
||||
|
YEARFRAC = ÅR.BRØK |
||||
|
|
||||
|
## |
||||
|
## Tekniske funktioner (Engineering Functions) |
||||
|
## |
||||
|
BESSELI = BESSELI |
||||
|
BESSELJ = BESSELJ |
||||
|
BESSELK = BESSELK |
||||
|
BESSELY = BESSELY |
||||
|
BIN2DEC = BIN.TIL.DEC |
||||
|
BIN2HEX = BIN.TIL.HEX |
||||
|
BIN2OCT = BIN.TIL.OKT |
||||
|
BITAND = BITOG |
||||
|
BITLSHIFT = BITLSKIFT |
||||
|
BITOR = BITELLER |
||||
|
BITRSHIFT = BITRSKIFT |
||||
|
BITXOR = BITXELLER |
||||
|
COMPLEX = KOMPLEKS |
||||
|
CONVERT = KONVERTER |
||||
|
DEC2BIN = DEC.TIL.BIN |
||||
|
DEC2HEX = DEC.TIL.HEX |
||||
|
DEC2OCT = DEC.TIL.OKT |
||||
|
DELTA = DELTA |
||||
|
ERF = FEJLFUNK |
||||
|
ERF.PRECISE = ERF.PRECISE |
||||
|
ERFC = FEJLFUNK.KOMP |
||||
|
ERFC.PRECISE = ERFC.PRECISE |
||||
|
GESTEP = GETRIN |
||||
|
HEX2BIN = HEX.TIL.BIN |
||||
|
HEX2DEC = HEX.TIL.DEC |
||||
|
HEX2OCT = HEX.TIL.OKT |
||||
|
IMABS = IMAGABS |
||||
|
IMAGINARY = IMAGINÆR |
||||
|
IMARGUMENT = IMAGARGUMENT |
||||
|
IMCONJUGATE = IMAGKONJUGERE |
||||
|
IMCOS = IMAGCOS |
||||
|
IMCOSH = IMAGCOSH |
||||
|
IMCOT = IMAGCOT |
||||
|
IMCSC = IMAGCSC |
||||
|
IMCSCH = IMAGCSCH |
||||
|
IMDIV = IMAGDIV |
||||
|
IMEXP = IMAGEKSP |
||||
|
IMLN = IMAGLN |
||||
|
IMLOG10 = IMAGLOG10 |
||||
|
IMLOG2 = IMAGLOG2 |
||||
|
IMPOWER = IMAGPOTENS |
||||
|
IMPRODUCT = IMAGPRODUKT |
||||
|
IMREAL = IMAGREELT |
||||
|
IMSEC = IMAGSEC |
||||
|
IMSECH = IMAGSECH |
||||
|
IMSIN = IMAGSIN |
||||
|
IMSINH = IMAGSINH |
||||
|
IMSQRT = IMAGKVROD |
||||
|
IMSUB = IMAGSUB |
||||
|
IMSUM = IMAGSUM |
||||
|
IMTAN = IMAGTAN |
||||
|
OCT2BIN = OKT.TIL.BIN |
||||
|
OCT2DEC = OKT.TIL.DEC |
||||
|
OCT2HEX = OKT.TIL.HEX |
||||
|
|
||||
|
## |
||||
|
## Finansielle funktioner (Financial Functions) |
||||
|
## |
||||
|
ACCRINT = PÅLØBRENTE |
||||
|
ACCRINTM = PÅLØBRENTE.UDLØB |
||||
|
AMORDEGRC = AMORDEGRC |
||||
|
AMORLINC = AMORLINC |
||||
|
COUPDAYBS = KUPONDAGE.SA |
||||
|
COUPDAYS = KUPONDAGE.A |
||||
|
COUPDAYSNC = KUPONDAGE.ANK |
||||
|
COUPNCD = KUPONDAG.NÆSTE |
||||
|
COUPNUM = KUPONBETALINGER |
||||
|
COUPPCD = KUPONDAG.FORRIGE |
||||
|
CUMIPMT = AKKUM.RENTE |
||||
|
CUMPRINC = AKKUM.HOVEDSTOL |
||||
|
DB = DB |
||||
|
DDB = DSA |
||||
|
DISC = DISKONTO |
||||
|
DOLLARDE = KR.DECIMAL |
||||
|
DOLLARFR = KR.BRØK |
||||
|
DURATION = VARIGHED |
||||
|
EFFECT = EFFEKTIV.RENTE |
||||
|
FV = FV |
||||
|
FVSCHEDULE = FVTABEL |
||||
|
INTRATE = RENTEFOD |
||||
|
IPMT = R.YDELSE |
||||
|
IRR = IA |
||||
|
ISPMT = ISPMT |
||||
|
MDURATION = MVARIGHED |
||||
|
MIRR = MIA |
||||
|
NOMINAL = NOMINEL |
||||
|
NPER = NPER |
||||
|
NPV = NUTIDSVÆRDI |
||||
|
ODDFPRICE = ULIGE.KURS.PÅLYDENDE |
||||
|
ODDFYIELD = ULIGE.FØRSTE.AFKAST |
||||
|
ODDLPRICE = ULIGE.SIDSTE.KURS |
||||
|
ODDLYIELD = ULIGE.SIDSTE.AFKAST |
||||
|
PDURATION = PVARIGHED |
||||
|
PMT = YDELSE |
||||
|
PPMT = H.YDELSE |
||||
|
PRICE = KURS |
||||
|
PRICEDISC = KURS.DISKONTO |
||||
|
PRICEMAT = KURS.UDLØB |
||||
|
PV = NV |
||||
|
RATE = RENTE |
||||
|
RECEIVED = MODTAGET.VED.UDLØB |
||||
|
RRI = RRI |
||||
|
SLN = LA |
||||
|
SYD = ÅRSAFSKRIVNING |
||||
|
TBILLEQ = STATSOBLIGATION |
||||
|
TBILLPRICE = STATSOBLIGATION.KURS |
||||
|
TBILLYIELD = STATSOBLIGATION.AFKAST |
||||
|
VDB = VSA |
||||
|
XIRR = INTERN.RENTE |
||||
|
XNPV = NETTO.NUTIDSVÆRDI |
||||
|
YIELD = AFKAST |
||||
|
YIELDDISC = AFKAST.DISKONTO |
||||
|
YIELDMAT = AFKAST.UDLØBSDATO |
||||
|
|
||||
|
## |
||||
|
## Informationsfunktioner (Information Functions) |
||||
|
## |
||||
|
CELL = CELLE |
||||
|
ERROR.TYPE = FEJLTYPE |
||||
|
INFO = INFO |
||||
|
ISBLANK = ER.TOM |
||||
|
ISERR = ER.FJL |
||||
|
ISERROR = ER.FEJL |
||||
|
ISEVEN = ER.LIGE |
||||
|
ISFORMULA = ER.FORMEL |
||||
|
ISLOGICAL = ER.LOGISK |
||||
|
ISNA = ER.IKKE.TILGÆNGELIG |
||||
|
ISNONTEXT = ER.IKKE.TEKST |
||||
|
ISNUMBER = ER.TAL |
||||
|
ISODD = ER.ULIGE |
||||
|
ISREF = ER.REFERENCE |
||||
|
ISTEXT = ER.TEKST |
||||
|
N = TAL |
||||
|
NA = IKKE.TILGÆNGELIG |
||||
|
SHEET = ARK |
||||
|
SHEETS = ARK.FLERE |
||||
|
TYPE = VÆRDITYPE |
||||
|
|
||||
|
## |
||||
|
## Logiske funktioner (Logical Functions) |
||||
|
## |
||||
|
AND = OG |
||||
|
FALSE = FALSK |
||||
|
IF = HVIS |
||||
|
IFERROR = HVIS.FEJL |
||||
|
IFNA = HVISIT |
||||
|
IFS = HVISER |
||||
|
NOT = IKKE |
||||
|
OR = ELLER |
||||
|
SWITCH = SKIFT |
||||
|
TRUE = SAND |
||||
|
XOR = XELLER |
||||
|
|
||||
|
## |
||||
|
## Opslags- og referencefunktioner (Lookup & Reference Functions) |
||||
|
## |
||||
|
ADDRESS = ADRESSE |
||||
|
AREAS = OMRÅDER |
||||
|
CHOOSE = VÆLG |
||||
|
COLUMN = KOLONNE |
||||
|
COLUMNS = KOLONNER |
||||
|
FORMULATEXT = FORMELTEKST |
||||
|
GETPIVOTDATA = GETPIVOTDATA |
||||
|
HLOOKUP = VOPSLAG |
||||
|
HYPERLINK = HYPERLINK |
||||
|
INDEX = INDEKS |
||||
|
INDIRECT = INDIREKTE |
||||
|
LOOKUP = SLÅ.OP |
||||
|
MATCH = SAMMENLIGN |
||||
|
OFFSET = FORSKYDNING |
||||
|
ROW = RÆKKE |
||||
|
ROWS = RÆKKER |
||||
|
RTD = RTD |
||||
|
TRANSPOSE = TRANSPONER |
||||
|
VLOOKUP = LOPSLAG |
||||
|
|
||||
|
## |
||||
|
## Matematiske og trigonometriske funktioner (Math & Trig Functions) |
||||
|
## |
||||
|
ABS = ABS |
||||
|
ACOS = ARCCOS |
||||
|
ACOSH = ARCCOSH |
||||
|
ACOT = ARCCOT |
||||
|
ACOTH = ARCCOTH |
||||
|
AGGREGATE = SAMLING |
||||
|
ARABIC = ARABISK |
||||
|
ASIN = ARCSIN |
||||
|
ASINH = ARCSINH |
||||
|
ATAN = ARCTAN |
||||
|
ATAN2 = ARCTAN2 |
||||
|
ATANH = ARCTANH |
||||
|
BASE = BASIS |
||||
|
CEILING.MATH = LOFT.MAT |
||||
|
CEILING.PRECISE = LOFT.PRECISE |
||||
|
COMBIN = KOMBIN |
||||
|
COMBINA = KOMBINA |
||||
|
COS = COS |
||||
|
COSH = COSH |
||||
|
COT = COT |
||||
|
COTH = COTH |
||||
|
CSC = CSC |
||||
|
CSCH = CSCH |
||||
|
DECIMAL = DECIMAL |
||||
|
DEGREES = GRADER |
||||
|
ECMA.CEILING = ECMA.LOFT |
||||
|
EVEN = LIGE |
||||
|
EXP = EKSP |
||||
|
FACT = FAKULTET |
||||
|
FACTDOUBLE = DOBBELT.FAKULTET |
||||
|
FLOOR.MATH = AFRUND.BUND.MAT |
||||
|
FLOOR.PRECISE = AFRUND.GULV.PRECISE |
||||
|
GCD = STØRSTE.FÆLLES.DIVISOR |
||||
|
INT = HELTAL |
||||
|
ISO.CEILING = ISO.LOFT |
||||
|
LCM = MINDSTE.FÆLLES.MULTIPLUM |
||||
|
LN = LN |
||||
|
LOG = LOG |
||||
|
LOG10 = LOG10 |
||||
|
MDETERM = MDETERM |
||||
|
MINVERSE = MINVERT |
||||
|
MMULT = MPRODUKT |
||||
|
MOD = REST |
||||
|
MROUND = MAFRUND |
||||
|
MULTINOMIAL = MULTINOMIAL |
||||
|
MUNIT = MENHED |
||||
|
ODD = ULIGE |
||||
|
PI = PI |
||||
|
POWER = POTENS |
||||
|
PRODUCT = PRODUKT |
||||
|
QUOTIENT = KVOTIENT |
||||
|
RADIANS = RADIANER |
||||
|
RAND = SLUMP |
||||
|
RANDBETWEEN = SLUMPMELLEM |
||||
|
ROMAN = ROMERTAL |
||||
|
ROUND = AFRUND |
||||
|
ROUNDBAHTDOWN = RUNDBAHTNED |
||||
|
ROUNDBAHTUP = RUNDBAHTOP |
||||
|
ROUNDDOWN = RUND.NED |
||||
|
ROUNDUP = RUND.OP |
||||
|
SEC = SEC |
||||
|
SECH = SECH |
||||
|
SERIESSUM = SERIESUM |
||||
|
SIGN = FORTEGN |
||||
|
SIN = SIN |
||||
|
SINH = SINH |
||||
|
SQRT = KVROD |
||||
|
SQRTPI = KVRODPI |
||||
|
SUBTOTAL = SUBTOTAL |
||||
|
SUM = SUM |
||||
|
SUMIF = SUM.HVIS |
||||
|
SUMIFS = SUM.HVISER |
||||
|
SUMPRODUCT = SUMPRODUKT |
||||
|
SUMSQ = SUMKV |
||||
|
SUMX2MY2 = SUMX2MY2 |
||||
|
SUMX2PY2 = SUMX2PY2 |
||||
|
SUMXMY2 = SUMXMY2 |
||||
|
TAN = TAN |
||||
|
TANH = TANH |
||||
|
TRUNC = AFKORT |
||||
|
|
||||
|
## |
||||
|
## Statistiske funktioner (Statistical Functions) |
||||
|
## |
||||
|
AVEDEV = MAD |
||||
|
AVERAGE = MIDDEL |
||||
|
AVERAGEA = MIDDELV |
||||
|
AVERAGEIF = MIDDEL.HVIS |
||||
|
AVERAGEIFS = MIDDEL.HVISER |
||||
|
BETA.DIST = BETA.FORDELING |
||||
|
BETA.INV = BETA.INV |
||||
|
BINOM.DIST = BINOMIAL.FORDELING |
||||
|
BINOM.DIST.RANGE = BINOMIAL.DIST.INTERVAL |
||||
|
BINOM.INV = BINOMIAL.INV |
||||
|
CHISQ.DIST = CHI2.FORDELING |
||||
|
CHISQ.DIST.RT = CHI2.FORD.RT |
||||
|
CHISQ.INV = CHI2.INV |
||||
|
CHISQ.INV.RT = CHI2.INV.RT |
||||
|
CHISQ.TEST = CHI2.TEST |
||||
|
CONFIDENCE.NORM = KONFIDENS.NORM |
||||
|
CONFIDENCE.T = KONFIDENST |
||||
|
CORREL = KORRELATION |
||||
|
COUNT = TÆL |
||||
|
COUNTA = TÆLV |
||||
|
COUNTBLANK = ANTAL.BLANKE |
||||
|
COUNTIF = TÆL.HVIS |
||||
|
COUNTIFS = TÆL.HVISER |
||||
|
COVARIANCE.P = KOVARIANS.P |
||||
|
COVARIANCE.S = KOVARIANS.S |
||||
|
DEVSQ = SAK |
||||
|
EXPON.DIST = EKSP.FORDELING |
||||
|
F.DIST = F.FORDELING |
||||
|
F.DIST.RT = F.FORDELING.RT |
||||
|
F.INV = F.INV |
||||
|
F.INV.RT = F.INV.RT |
||||
|
F.TEST = F.TEST |
||||
|
FISHER = FISHER |
||||
|
FISHERINV = FISHERINV |
||||
|
FORECAST.ETS = PROGNOSE.ETS |
||||
|
FORECAST.ETS.CONFINT = PROGNOSE.ETS.CONFINT |
||||
|
FORECAST.ETS.SEASONALITY = PROGNOSE.ETS.SÆSONUDSVING |
||||
|
FORECAST.ETS.STAT = PROGNOSE.ETS.STAT |
||||
|
FORECAST.LINEAR = PROGNOSE.LINEÆR |
||||
|
FREQUENCY = FREKVENS |
||||
|
GAMMA = GAMMA |
||||
|
GAMMA.DIST = GAMMA.FORDELING |
||||
|
GAMMA.INV = GAMMA.INV |
||||
|
GAMMALN = GAMMALN |
||||
|
GAMMALN.PRECISE = GAMMALN.PRECISE |
||||
|
GAUSS = GAUSS |
||||
|
GEOMEAN = GEOMIDDELVÆRDI |
||||
|
GROWTH = FORØGELSE |
||||
|
HARMEAN = HARMIDDELVÆRDI |
||||
|
HYPGEOM.DIST = HYPGEO.FORDELING |
||||
|
INTERCEPT = SKÆRING |
||||
|
KURT = TOPSTEJL |
||||
|
LARGE = STØRSTE |
||||
|
LINEST = LINREGR |
||||
|
LOGEST = LOGREGR |
||||
|
LOGNORM.DIST = LOGNORM.FORDELING |
||||
|
LOGNORM.INV = LOGNORM.INV |
||||
|
MAX = MAKS |
||||
|
MAXA = MAKSV |
||||
|
MAXIFS = MAKSHVISER |
||||
|
MEDIAN = MEDIAN |
||||
|
MIN = MIN |
||||
|
MINA = MINV |
||||
|
MINIFS = MINHVISER |
||||
|
MODE.MULT = HYPPIGST.FLERE |
||||
|
MODE.SNGL = HYPPIGST.ENKELT |
||||
|
NEGBINOM.DIST = NEGBINOM.FORDELING |
||||
|
NORM.DIST = NORMAL.FORDELING |
||||
|
NORM.INV = NORM.INV |
||||
|
NORM.S.DIST = STANDARD.NORM.FORDELING |
||||
|
NORM.S.INV = STANDARD.NORM.INV |
||||
|
PEARSON = PEARSON |
||||
|
PERCENTILE.EXC = FRAKTIL.UDELAD |
||||
|
PERCENTILE.INC = FRAKTIL.MEDTAG |
||||
|
PERCENTRANK.EXC = PROCENTPLADS.UDELAD |
||||
|
PERCENTRANK.INC = PROCENTPLADS.MEDTAG |
||||
|
PERMUT = PERMUT |
||||
|
PERMUTATIONA = PERMUTATIONA |
||||
|
PHI = PHI |
||||
|
POISSON.DIST = POISSON.FORDELING |
||||
|
PROB = SANDSYNLIGHED |
||||
|
QUARTILE.EXC = KVARTIL.UDELAD |
||||
|
QUARTILE.INC = KVARTIL.MEDTAG |
||||
|
RANK.AVG = PLADS.GNSN |
||||
|
RANK.EQ = PLADS.LIGE |
||||
|
RSQ = FORKLARINGSGRAD |
||||
|
SKEW = SKÆVHED |
||||
|
SKEW.P = SKÆVHED.P |
||||
|
SLOPE = STIGNING |
||||
|
SMALL = MINDSTE |
||||
|
STANDARDIZE = STANDARDISER |
||||
|
STDEV.P = STDAFV.P |
||||
|
STDEV.S = STDAFV.S |
||||
|
STDEVA = STDAFVV |
||||
|
STDEVPA = STDAFVPV |
||||
|
STEYX = STFYX |
||||
|
T.DIST = T.FORDELING |
||||
|
T.DIST.2T = T.FORDELING.2T |
||||
|
T.DIST.RT = T.FORDELING.RT |
||||
|
T.INV = T.INV |
||||
|
T.INV.2T = T.INV.2T |
||||
|
T.TEST = T.TEST |
||||
|
TREND = TENDENS |
||||
|
TRIMMEAN = TRIMMIDDELVÆRDI |
||||
|
VAR.P = VARIANS.P |
||||
|
VAR.S = VARIANS.S |
||||
|
VARA = VARIANSV |
||||
|
VARPA = VARIANSPV |
||||
|
WEIBULL.DIST = WEIBULL.FORDELING |
||||
|
Z.TEST = Z.TEST |
||||
|
|
||||
|
## |
||||
|
## Tekstfunktioner (Text Functions) |
||||
|
## |
||||
|
BAHTTEXT = BAHTTEKST |
||||
|
CHAR = TEGN |
||||
|
CLEAN = RENS |
||||
|
CODE = KODE |
||||
|
CONCAT = CONCAT |
||||
|
DOLLAR = KR |
||||
|
EXACT = EKSAKT |
||||
|
FIND = FIND |
||||
|
FIXED = FAST |
||||
|
ISTHAIDIGIT = ERTHAILANDSKCIFFER |
||||
|
LEFT = VENSTRE |
||||
|
LEN = LÆNGDE |
||||
|
LOWER = SMÅ.BOGSTAVER |
||||
|
MID = MIDT |
||||
|
NUMBERSTRING = TALSTRENG |
||||
|
NUMBERVALUE = TALVÆRDI |
||||
|
PHONETIC = FONETISK |
||||
|
PROPER = STORT.FORBOGSTAV |
||||
|
REPLACE = ERSTAT |
||||
|
REPT = GENTAG |
||||
|
RIGHT = HØJRE |
||||
|
SEARCH = SØG |
||||
|
SUBSTITUTE = UDSKIFT |
||||
|
T = T |
||||
|
TEXT = TEKST |
||||
|
TEXTJOIN = TEKST.KOMBINER |
||||
|
THAIDIGIT = THAILANDSKCIFFER |
||||
|
THAINUMSOUND = THAILANDSKNUMLYD |
||||
|
THAINUMSTRING = THAILANDSKNUMSTRENG |
||||
|
THAISTRINGLENGTH = THAILANDSKSTRENGLÆNGDE |
||||
|
TRIM = FJERN.OVERFLØDIGE.BLANKE |
||||
|
UNICHAR = UNICHAR |
||||
|
UNICODE = UNICODE |
||||
|
UPPER = STORE.BOGSTAVER |
||||
|
VALUE = VÆRDI |
||||
|
|
||||
|
## |
||||
|
## Webfunktioner (Web Functions) |
||||
|
## |
||||
|
ENCODEURL = KODNINGSURL |
||||
|
FILTERXML = FILTRERXML |
||||
|
WEBSERVICE = WEBTJENESTE |
||||
|
|
||||
|
## |
||||
|
## Kompatibilitetsfunktioner (Compatibility Functions) |
||||
|
## |
||||
|
BETADIST = BETAFORDELING |
||||
|
BETAINV = BETAINV |
||||
|
BINOMDIST = BINOMIALFORDELING |
||||
|
CEILING = AFRUND.LOFT |
||||
|
CHIDIST = CHIFORDELING |
||||
|
CHIINV = CHIINV |
||||
|
CHITEST = CHITEST |
||||
|
CONCATENATE = SAMMENKÆDNING |
||||
|
CONFIDENCE = KONFIDENSINTERVAL |
||||
|
COVAR = KOVARIANS |
||||
|
CRITBINOM = KRITBINOM |
||||
|
EXPONDIST = EKSPFORDELING |
||||
|
FDIST = FFORDELING |
||||
|
FINV = FINV |
||||
|
FLOOR = AFRUND.GULV |
||||
|
FORECAST = PROGNOSE |
||||
|
FTEST = FTEST |
||||
|
GAMMADIST = GAMMAFORDELING |
||||
|
GAMMAINV = GAMMAINV |
||||
|
HYPGEOMDIST = HYPGEOFORDELING |
||||
|
LOGINV = LOGINV |
||||
|
LOGNORMDIST = LOGNORMFORDELING |
||||
|
MODE = HYPPIGST |
||||
|
NEGBINOMDIST = NEGBINOMFORDELING |
||||
|
NORMDIST = NORMFORDELING |
||||
|
NORMINV = NORMINV |
||||
|
NORMSDIST = STANDARDNORMFORDELING |
||||
|
NORMSINV = STANDARDNORMINV |
||||
|
PERCENTILE = FRAKTIL |
||||
|
PERCENTRANK = PROCENTPLADS |
||||
|
POISSON = POISSON |
||||
|
QUARTILE = KVARTIL |
||||
|
RANK = PLADS |
||||
|
STDEV = STDAFV |
||||
|
STDEVP = STDAFVP |
||||
|
TDIST = TFORDELING |
||||
|
TINV = TINV |
||||
|
TTEST = TTEST |
||||
|
VAR = VARIANS |
||||
|
VARP = VARIANSP |
||||
|
WEIBULL = WEIBULL |
||||
|
ZTEST = ZTEST |
||||
@ -0,0 +1,533 @@ |
|||||
|
############################################################ |
||||
|
## |
||||
|
## PhpSpreadsheet - function name translations |
||||
|
## |
||||
|
## Deutsch (German) |
||||
|
## |
||||
|
############################################################ |
||||
|
|
||||
|
|
||||
|
## |
||||
|
## Cubefunktionen (Cube Functions) |
||||
|
## |
||||
|
CUBEKPIMEMBER = CUBEKPIELEMENT |
||||
|
CUBEMEMBER = CUBEELEMENT |
||||
|
CUBEMEMBERPROPERTY = CUBEELEMENTEIGENSCHAFT |
||||
|
CUBERANKEDMEMBER = CUBERANGELEMENT |
||||
|
CUBESET = CUBEMENGE |
||||
|
CUBESETCOUNT = CUBEMENGENANZAHL |
||||
|
CUBEVALUE = CUBEWERT |
||||
|
|
||||
|
## |
||||
|
## Datenbankfunktionen (Database Functions) |
||||
|
## |
||||
|
DAVERAGE = DBMITTELWERT |
||||
|
DCOUNT = DBANZAHL |
||||
|
DCOUNTA = DBANZAHL2 |
||||
|
DGET = DBAUSZUG |
||||
|
DMAX = DBMAX |
||||
|
DMIN = DBMIN |
||||
|
DPRODUCT = DBPRODUKT |
||||
|
DSTDEV = DBSTDABW |
||||
|
DSTDEVP = DBSTDABWN |
||||
|
DSUM = DBSUMME |
||||
|
DVAR = DBVARIANZ |
||||
|
DVARP = DBVARIANZEN |
||||
|
|
||||
|
## |
||||
|
## Datums- und Uhrzeitfunktionen (Date & Time Functions) |
||||
|
## |
||||
|
DATE = DATUM |
||||
|
DATEVALUE = DATWERT |
||||
|
DAY = TAG |
||||
|
DAYS = TAGE |
||||
|
DAYS360 = TAGE360 |
||||
|
EDATE = EDATUM |
||||
|
EOMONTH = MONATSENDE |
||||
|
HOUR = STUNDE |
||||
|
ISOWEEKNUM = ISOKALENDERWOCHE |
||||
|
MINUTE = MINUTE |
||||
|
MONTH = MONAT |
||||
|
NETWORKDAYS = NETTOARBEITSTAGE |
||||
|
NETWORKDAYS.INTL = NETTOARBEITSTAGE.INTL |
||||
|
NOW = JETZT |
||||
|
SECOND = SEKUNDE |
||||
|
THAIDAYOFWEEK = THAIWOCHENTAG |
||||
|
THAIMONTHOFYEAR = THAIMONATDESJAHRES |
||||
|
THAIYEAR = THAIJAHR |
||||
|
TIME = ZEIT |
||||
|
TIMEVALUE = ZEITWERT |
||||
|
TODAY = HEUTE |
||||
|
WEEKDAY = WOCHENTAG |
||||
|
WEEKNUM = KALENDERWOCHE |
||||
|
WORKDAY = ARBEITSTAG |
||||
|
WORKDAY.INTL = ARBEITSTAG.INTL |
||||
|
YEAR = JAHR |
||||
|
YEARFRAC = BRTEILJAHRE |
||||
|
|
||||
|
## |
||||
|
## Technische Funktionen (Engineering Functions) |
||||
|
## |
||||
|
BESSELI = BESSELI |
||||
|
BESSELJ = BESSELJ |
||||
|
BESSELK = BESSELK |
||||
|
BESSELY = BESSELY |
||||
|
BIN2DEC = BININDEZ |
||||
|
BIN2HEX = BININHEX |
||||
|
BIN2OCT = BININOKT |
||||
|
BITAND = BITUND |
||||
|
BITLSHIFT = BITLVERSCHIEB |
||||
|
BITOR = BITODER |
||||
|
BITRSHIFT = BITRVERSCHIEB |
||||
|
BITXOR = BITXODER |
||||
|
COMPLEX = KOMPLEXE |
||||
|
CONVERT = UMWANDELN |
||||
|
DEC2BIN = DEZINBIN |
||||
|
DEC2HEX = DEZINHEX |
||||
|
DEC2OCT = DEZINOKT |
||||
|
DELTA = DELTA |
||||
|
ERF = GAUSSFEHLER |
||||
|
ERF.PRECISE = GAUSSF.GENAU |
||||
|
ERFC = GAUSSFKOMPL |
||||
|
ERFC.PRECISE = GAUSSFKOMPL.GENAU |
||||
|
GESTEP = GGANZZAHL |
||||
|
HEX2BIN = HEXINBIN |
||||
|
HEX2DEC = HEXINDEZ |
||||
|
HEX2OCT = HEXINOKT |
||||
|
IMABS = IMABS |
||||
|
IMAGINARY = IMAGINÄRTEIL |
||||
|
IMARGUMENT = IMARGUMENT |
||||
|
IMCONJUGATE = IMKONJUGIERTE |
||||
|
IMCOS = IMCOS |
||||
|
IMCOSH = IMCOSHYP |
||||
|
IMCOT = IMCOT |
||||
|
IMCSC = IMCOSEC |
||||
|
IMCSCH = IMCOSECHYP |
||||
|
IMDIV = IMDIV |
||||
|
IMEXP = IMEXP |
||||
|
IMLN = IMLN |
||||
|
IMLOG10 = IMLOG10 |
||||
|
IMLOG2 = IMLOG2 |
||||
|
IMPOWER = IMAPOTENZ |
||||
|
IMPRODUCT = IMPRODUKT |
||||
|
IMREAL = IMREALTEIL |
||||
|
IMSEC = IMSEC |
||||
|
IMSECH = IMSECHYP |
||||
|
IMSIN = IMSIN |
||||
|
IMSINH = IMSINHYP |
||||
|
IMSQRT = IMWURZEL |
||||
|
IMSUB = IMSUB |
||||
|
IMSUM = IMSUMME |
||||
|
IMTAN = IMTAN |
||||
|
OCT2BIN = OKTINBIN |
||||
|
OCT2DEC = OKTINDEZ |
||||
|
OCT2HEX = OKTINHEX |
||||
|
|
||||
|
## |
||||
|
## Finanzmathematische Funktionen (Financial Functions) |
||||
|
## |
||||
|
ACCRINT = AUFGELZINS |
||||
|
ACCRINTM = AUFGELZINSF |
||||
|
AMORDEGRC = AMORDEGRK |
||||
|
AMORLINC = AMORLINEARK |
||||
|
COUPDAYBS = ZINSTERMTAGVA |
||||
|
COUPDAYS = ZINSTERMTAGE |
||||
|
COUPDAYSNC = ZINSTERMTAGNZ |
||||
|
COUPNCD = ZINSTERMNZ |
||||
|
COUPNUM = ZINSTERMZAHL |
||||
|
COUPPCD = ZINSTERMVZ |
||||
|
CUMIPMT = KUMZINSZ |
||||
|
CUMPRINC = KUMKAPITAL |
||||
|
DB = GDA2 |
||||
|
DDB = GDA |
||||
|
DISC = DISAGIO |
||||
|
DOLLARDE = NOTIERUNGDEZ |
||||
|
DOLLARFR = NOTIERUNGBRU |
||||
|
DURATION = DURATION |
||||
|
EFFECT = EFFEKTIV |
||||
|
FV = ZW |
||||
|
FVSCHEDULE = ZW2 |
||||
|
INTRATE = ZINSSATZ |
||||
|
IPMT = ZINSZ |
||||
|
IRR = IKV |
||||
|
ISPMT = ISPMT |
||||
|
MDURATION = MDURATION |
||||
|
MIRR = QIKV |
||||
|
NOMINAL = NOMINAL |
||||
|
NPER = ZZR |
||||
|
NPV = NBW |
||||
|
ODDFPRICE = UNREGER.KURS |
||||
|
ODDFYIELD = UNREGER.REND |
||||
|
ODDLPRICE = UNREGLE.KURS |
||||
|
ODDLYIELD = UNREGLE.REND |
||||
|
PDURATION = PDURATION |
||||
|
PMT = RMZ |
||||
|
PPMT = KAPZ |
||||
|
PRICE = KURS |
||||
|
PRICEDISC = KURSDISAGIO |
||||
|
PRICEMAT = KURSFÄLLIG |
||||
|
PV = BW |
||||
|
RATE = ZINS |
||||
|
RECEIVED = AUSZAHLUNG |
||||
|
RRI = ZSATZINVEST |
||||
|
SLN = LIA |
||||
|
SYD = DIA |
||||
|
TBILLEQ = TBILLÄQUIV |
||||
|
TBILLPRICE = TBILLKURS |
||||
|
TBILLYIELD = TBILLRENDITE |
||||
|
VDB = VDB |
||||
|
XIRR = XINTZINSFUSS |
||||
|
XNPV = XKAPITALWERT |
||||
|
YIELD = RENDITE |
||||
|
YIELDDISC = RENDITEDIS |
||||
|
YIELDMAT = RENDITEFÄLL |
||||
|
|
||||
|
## |
||||
|
## Informationsfunktionen (Information Functions) |
||||
|
## |
||||
|
CELL = ZELLE |
||||
|
ERROR.TYPE = FEHLER.TYP |
||||
|
INFO = INFO |
||||
|
ISBLANK = ISTLEER |
||||
|
ISERR = ISTFEHL |
||||
|
ISERROR = ISTFEHLER |
||||
|
ISEVEN = ISTGERADE |
||||
|
ISFORMULA = ISTFORMEL |
||||
|
ISLOGICAL = ISTLOG |
||||
|
ISNA = ISTNV |
||||
|
ISNONTEXT = ISTKTEXT |
||||
|
ISNUMBER = ISTZAHL |
||||
|
ISODD = ISTUNGERADE |
||||
|
ISREF = ISTBEZUG |
||||
|
ISTEXT = ISTTEXT |
||||
|
N = N |
||||
|
NA = NV |
||||
|
SHEET = BLATT |
||||
|
SHEETS = BLÄTTER |
||||
|
TYPE = TYP |
||||
|
|
||||
|
## |
||||
|
## Logische Funktionen (Logical Functions) |
||||
|
## |
||||
|
AND = UND |
||||
|
FALSE = FALSCH |
||||
|
IF = WENN |
||||
|
IFERROR = WENNFEHLER |
||||
|
IFNA = WENNNV |
||||
|
IFS = WENNS |
||||
|
NOT = NICHT |
||||
|
OR = ODER |
||||
|
SWITCH = ERSTERWERT |
||||
|
TRUE = WAHR |
||||
|
XOR = XODER |
||||
|
|
||||
|
## |
||||
|
## Nachschlage- und Verweisfunktionen (Lookup & Reference Functions) |
||||
|
## |
||||
|
ADDRESS = ADRESSE |
||||
|
AREAS = BEREICHE |
||||
|
CHOOSE = WAHL |
||||
|
COLUMN = SPALTE |
||||
|
COLUMNS = SPALTEN |
||||
|
FORMULATEXT = FORMELTEXT |
||||
|
GETPIVOTDATA = PIVOTDATENZUORDNEN |
||||
|
HLOOKUP = WVERWEIS |
||||
|
HYPERLINK = HYPERLINK |
||||
|
INDEX = INDEX |
||||
|
INDIRECT = INDIREKT |
||||
|
LOOKUP = VERWEIS |
||||
|
MATCH = VERGLEICH |
||||
|
OFFSET = BEREICH.VERSCHIEBEN |
||||
|
ROW = ZEILE |
||||
|
ROWS = ZEILEN |
||||
|
RTD = RTD |
||||
|
TRANSPOSE = MTRANS |
||||
|
VLOOKUP = SVERWEIS |
||||
|
|
||||
|
## |
||||
|
## Mathematische und trigonometrische Funktionen (Math & Trig Functions) |
||||
|
## |
||||
|
ABS = ABS |
||||
|
ACOS = ARCCOS |
||||
|
ACOSH = ARCCOSHYP |
||||
|
ACOT = ARCCOT |
||||
|
ACOTH = ARCCOTHYP |
||||
|
AGGREGATE = AGGREGAT |
||||
|
ARABIC = ARABISCH |
||||
|
ASIN = ARCSIN |
||||
|
ASINH = ARCSINHYP |
||||
|
ATAN = ARCTAN |
||||
|
ATAN2 = ARCTAN2 |
||||
|
ATANH = ARCTANHYP |
||||
|
BASE = BASIS |
||||
|
CEILING.MATH = OBERGRENZE.MATHEMATIK |
||||
|
CEILING.PRECISE = OBERGRENZE.GENAU |
||||
|
COMBIN = KOMBINATIONEN |
||||
|
COMBINA = KOMBINATIONEN2 |
||||
|
COS = COS |
||||
|
COSH = COSHYP |
||||
|
COT = COT |
||||
|
COTH = COTHYP |
||||
|
CSC = COSEC |
||||
|
CSCH = COSECHYP |
||||
|
DECIMAL = DEZIMAL |
||||
|
DEGREES = GRAD |
||||
|
ECMA.CEILING = ECMA.OBERGRENZE |
||||
|
EVEN = GERADE |
||||
|
EXP = EXP |
||||
|
FACT = FAKULTÄT |
||||
|
FACTDOUBLE = ZWEIFAKULTÄT |
||||
|
FLOOR.MATH = UNTERGRENZE.MATHEMATIK |
||||
|
FLOOR.PRECISE = UNTERGRENZE.GENAU |
||||
|
GCD = GGT |
||||
|
INT = GANZZAHL |
||||
|
ISO.CEILING = ISO.OBERGRENZE |
||||
|
LCM = KGV |
||||
|
LN = LN |
||||
|
LOG = LOG |
||||
|
LOG10 = LOG10 |
||||
|
MDETERM = MDET |
||||
|
MINVERSE = MINV |
||||
|
MMULT = MMULT |
||||
|
MOD = REST |
||||
|
MROUND = VRUNDEN |
||||
|
MULTINOMIAL = POLYNOMIAL |
||||
|
MUNIT = MEINHEIT |
||||
|
ODD = UNGERADE |
||||
|
PI = PI |
||||
|
POWER = POTENZ |
||||
|
PRODUCT = PRODUKT |
||||
|
QUOTIENT = QUOTIENT |
||||
|
RADIANS = BOGENMASS |
||||
|
RAND = ZUFALLSZAHL |
||||
|
RANDBETWEEN = ZUFALLSBEREICH |
||||
|
ROMAN = RÖMISCH |
||||
|
ROUND = RUNDEN |
||||
|
ROUNDBAHTDOWN = RUNDBAHTNED |
||||
|
ROUNDBAHTUP = BAHTAUFRUNDEN |
||||
|
ROUNDDOWN = ABRUNDEN |
||||
|
ROUNDUP = AUFRUNDEN |
||||
|
SEC = SEC |
||||
|
SECH = SECHYP |
||||
|
SERIESSUM = POTENZREIHE |
||||
|
SIGN = VORZEICHEN |
||||
|
SIN = SIN |
||||
|
SINH = SINHYP |
||||
|
SQRT = WURZEL |
||||
|
SQRTPI = WURZELPI |
||||
|
SUBTOTAL = TEILERGEBNIS |
||||
|
SUM = SUMME |
||||
|
SUMIF = SUMMEWENN |
||||
|
SUMIFS = SUMMEWENNS |
||||
|
SUMPRODUCT = SUMMENPRODUKT |
||||
|
SUMSQ = QUADRATESUMME |
||||
|
SUMX2MY2 = SUMMEX2MY2 |
||||
|
SUMX2PY2 = SUMMEX2PY2 |
||||
|
SUMXMY2 = SUMMEXMY2 |
||||
|
TAN = TAN |
||||
|
TANH = TANHYP |
||||
|
TRUNC = KÜRZEN |
||||
|
|
||||
|
## |
||||
|
## Statistische Funktionen (Statistical Functions) |
||||
|
## |
||||
|
AVEDEV = MITTELABW |
||||
|
AVERAGE = MITTELWERT |
||||
|
AVERAGEA = MITTELWERTA |
||||
|
AVERAGEIF = MITTELWERTWENN |
||||
|
AVERAGEIFS = MITTELWERTWENNS |
||||
|
BETA.DIST = BETA.VERT |
||||
|
BETA.INV = BETA.INV |
||||
|
BINOM.DIST = BINOM.VERT |
||||
|
BINOM.DIST.RANGE = BINOM.VERT.BEREICH |
||||
|
BINOM.INV = BINOM.INV |
||||
|
CHISQ.DIST = CHIQU.VERT |
||||
|
CHISQ.DIST.RT = CHIQU.VERT.RE |
||||
|
CHISQ.INV = CHIQU.INV |
||||
|
CHISQ.INV.RT = CHIQU.INV.RE |
||||
|
CHISQ.TEST = CHIQU.TEST |
||||
|
CONFIDENCE.NORM = KONFIDENZ.NORM |
||||
|
CONFIDENCE.T = KONFIDENZ.T |
||||
|
CORREL = KORREL |
||||
|
COUNT = ANZAHL |
||||
|
COUNTA = ANZAHL2 |
||||
|
COUNTBLANK = ANZAHLLEEREZELLEN |
||||
|
COUNTIF = ZÄHLENWENN |
||||
|
COUNTIFS = ZÄHLENWENNS |
||||
|
COVARIANCE.P = KOVARIANZ.P |
||||
|
COVARIANCE.S = KOVARIANZ.S |
||||
|
DEVSQ = SUMQUADABW |
||||
|
EXPON.DIST = EXPON.VERT |
||||
|
F.DIST = F.VERT |
||||
|
F.DIST.RT = F.VERT.RE |
||||
|
F.INV = F.INV |
||||
|
F.INV.RT = F.INV.RE |
||||
|
F.TEST = F.TEST |
||||
|
FISHER = FISHER |
||||
|
FISHERINV = FISHERINV |
||||
|
FORECAST.ETS = PROGNOSE.ETS |
||||
|
FORECAST.ETS.CONFINT = PROGNOSE.ETS.KONFINT |
||||
|
FORECAST.ETS.SEASONALITY = PROGNOSE.ETS.SAISONALITÄT |
||||
|
FORECAST.ETS.STAT = PROGNOSE.ETS.STAT |
||||
|
FORECAST.LINEAR = PROGNOSE.LINEAR |
||||
|
FREQUENCY = HÄUFIGKEIT |
||||
|
GAMMA = GAMMA |
||||
|
GAMMA.DIST = GAMMA.VERT |
||||
|
GAMMA.INV = GAMMA.INV |
||||
|
GAMMALN = GAMMALN |
||||
|
GAMMALN.PRECISE = GAMMALN.GENAU |
||||
|
GAUSS = GAUSS |
||||
|
GEOMEAN = GEOMITTEL |
||||
|
GROWTH = VARIATION |
||||
|
HARMEAN = HARMITTEL |
||||
|
HYPGEOM.DIST = HYPGEOM.VERT |
||||
|
INTERCEPT = ACHSENABSCHNITT |
||||
|
KURT = KURT |
||||
|
LARGE = KGRÖSSTE |
||||
|
LINEST = RGP |
||||
|
LOGEST = RKP |
||||
|
LOGNORM.DIST = LOGNORM.VERT |
||||
|
LOGNORM.INV = LOGNORM.INV |
||||
|
MAX = MAX |
||||
|
MAXA = MAXA |
||||
|
MAXIFS = MAXWENNS |
||||
|
MEDIAN = MEDIAN |
||||
|
MIN = MIN |
||||
|
MINA = MINA |
||||
|
MINIFS = MINWENNS |
||||
|
MODE.MULT = MODUS.VIELF |
||||
|
MODE.SNGL = MODUS.EINF |
||||
|
NEGBINOM.DIST = NEGBINOM.VERT |
||||
|
NORM.DIST = NORM.VERT |
||||
|
NORM.INV = NORM.INV |
||||
|
NORM.S.DIST = NORM.S.VERT |
||||
|
NORM.S.INV = NORM.S.INV |
||||
|
PEARSON = PEARSON |
||||
|
PERCENTILE.EXC = QUANTIL.EXKL |
||||
|
PERCENTILE.INC = QUANTIL.INKL |
||||
|
PERCENTRANK.EXC = QUANTILSRANG.EXKL |
||||
|
PERCENTRANK.INC = QUANTILSRANG.INKL |
||||
|
PERMUT = VARIATIONEN |
||||
|
PERMUTATIONA = VARIATIONEN2 |
||||
|
PHI = PHI |
||||
|
POISSON.DIST = POISSON.VERT |
||||
|
PROB = WAHRSCHBEREICH |
||||
|
QUARTILE.EXC = QUARTILE.EXKL |
||||
|
QUARTILE.INC = QUARTILE.INKL |
||||
|
RANK.AVG = RANG.MITTELW |
||||
|
RANK.EQ = RANG.GLEICH |
||||
|
RSQ = BESTIMMTHEITSMASS |
||||
|
SKEW = SCHIEFE |
||||
|
SKEW.P = SCHIEFE.P |
||||
|
SLOPE = STEIGUNG |
||||
|
SMALL = KKLEINSTE |
||||
|
STANDARDIZE = STANDARDISIERUNG |
||||
|
STDEV.P = STABW.N |
||||
|
STDEV.S = STABW.S |
||||
|
STDEVA = STABWA |
||||
|
STDEVPA = STABWNA |
||||
|
STEYX = STFEHLERYX |
||||
|
T.DIST = T.VERT |
||||
|
T.DIST.2T = T.VERT.2S |
||||
|
T.DIST.RT = T.VERT.RE |
||||
|
T.INV = T.INV |
||||
|
T.INV.2T = T.INV.2S |
||||
|
T.TEST = T.TEST |
||||
|
TREND = TREND |
||||
|
TRIMMEAN = GESTUTZTMITTEL |
||||
|
VAR.P = VAR.P |
||||
|
VAR.S = VAR.S |
||||
|
VARA = VARIANZA |
||||
|
VARPA = VARIANZENA |
||||
|
WEIBULL.DIST = WEIBULL.VERT |
||||
|
Z.TEST = G.TEST |
||||
|
|
||||
|
## |
||||
|
## Textfunktionen (Text Functions) |
||||
|
## |
||||
|
BAHTTEXT = BAHTTEXT |
||||
|
CHAR = ZEICHEN |
||||
|
CLEAN = SÄUBERN |
||||
|
CODE = CODE |
||||
|
CONCAT = TEXTKETTE |
||||
|
DOLLAR = DM |
||||
|
EXACT = IDENTISCH |
||||
|
FIND = FINDEN |
||||
|
FIXED = FEST |
||||
|
ISTHAIDIGIT = ISTTHAIZAHLENWORT |
||||
|
LEFT = LINKS |
||||
|
LEN = LÄNGE |
||||
|
LOWER = KLEIN |
||||
|
MID = TEIL |
||||
|
NUMBERVALUE = ZAHLENWERT |
||||
|
PROPER = GROSS2 |
||||
|
REPLACE = ERSETZEN |
||||
|
REPT = WIEDERHOLEN |
||||
|
RIGHT = RECHTS |
||||
|
SEARCH = SUCHEN |
||||
|
SUBSTITUTE = WECHSELN |
||||
|
T = T |
||||
|
TEXT = TEXT |
||||
|
TEXTJOIN = TEXTVERKETTEN |
||||
|
THAIDIGIT = THAIZAHLENWORT |
||||
|
THAINUMSOUND = THAIZAHLSOUND |
||||
|
THAINUMSTRING = THAILANDSKNUMSTRENG |
||||
|
THAISTRINGLENGTH = THAIZEICHENFOLGENLÄNGE |
||||
|
TRIM = GLÄTTEN |
||||
|
UNICHAR = UNIZEICHEN |
||||
|
UNICODE = UNICODE |
||||
|
UPPER = GROSS |
||||
|
VALUE = WERT |
||||
|
|
||||
|
## |
||||
|
## Webfunktionen (Web Functions) |
||||
|
## |
||||
|
ENCODEURL = URLCODIEREN |
||||
|
FILTERXML = XMLFILTERN |
||||
|
WEBSERVICE = WEBDIENST |
||||
|
|
||||
|
## |
||||
|
## Kompatibilitätsfunktionen (Compatibility Functions) |
||||
|
## |
||||
|
BETADIST = BETAVERT |
||||
|
BETAINV = BETAINV |
||||
|
BINOMDIST = BINOMVERT |
||||
|
CEILING = OBERGRENZE |
||||
|
CHIDIST = CHIVERT |
||||
|
CHIINV = CHIINV |
||||
|
CHITEST = CHITEST |
||||
|
CONCATENATE = VERKETTEN |
||||
|
CONFIDENCE = KONFIDENZ |
||||
|
COVAR = KOVAR |
||||
|
CRITBINOM = KRITBINOM |
||||
|
EXPONDIST = EXPONVERT |
||||
|
FDIST = FVERT |
||||
|
FINV = FINV |
||||
|
FLOOR = UNTERGRENZE |
||||
|
FORECAST = SCHÄTZER |
||||
|
FTEST = FTEST |
||||
|
GAMMADIST = GAMMAVERT |
||||
|
GAMMAINV = GAMMAINV |
||||
|
HYPGEOMDIST = HYPGEOMVERT |
||||
|
LOGINV = LOGINV |
||||
|
LOGNORMDIST = LOGNORMVERT |
||||
|
MODE = MODALWERT |
||||
|
NEGBINOMDIST = NEGBINOMVERT |
||||
|
NORMDIST = NORMVERT |
||||
|
NORMINV = NORMINV |
||||
|
NORMSDIST = STANDNORMVERT |
||||
|
NORMSINV = STANDNORMINV |
||||
|
PERCENTILE = QUANTIL |
||||
|
PERCENTRANK = QUANTILSRANG |
||||
|
POISSON = POISSON |
||||
|
QUARTILE = QUARTILE |
||||
|
RANK = RANG |
||||
|
STDEV = STABW |
||||
|
STDEVP = STABWN |
||||
|
TDIST = TVERT |
||||
|
TINV = TINV |
||||
|
TTEST = TTEST |
||||
|
VAR = VARIANZ |
||||
|
VARP = VARIANZEN |
||||
|
WEIBULL = WEIBULL |
||||
|
ZTEST = GTEST |
||||
@ -0,0 +1,537 @@ |
|||||
|
############################################################ |
||||
|
## |
||||
|
## PhpSpreadsheet - function name translations |
||||
|
## |
||||
|
## Español (Spanish) |
||||
|
## |
||||
|
############################################################ |
||||
|
|
||||
|
|
||||
|
## |
||||
|
## Funciones de cubo (Cube Functions) |
||||
|
## |
||||
|
CUBEKPIMEMBER = MIEMBROKPICUBO |
||||
|
CUBEMEMBER = MIEMBROCUBO |
||||
|
CUBEMEMBERPROPERTY = PROPIEDADMIEMBROCUBO |
||||
|
CUBERANKEDMEMBER = MIEMBRORANGOCUBO |
||||
|
CUBESET = CONJUNTOCUBO |
||||
|
CUBESETCOUNT = RECUENTOCONJUNTOCUBO |
||||
|
CUBEVALUE = VALORCUBO |
||||
|
|
||||
|
## |
||||
|
## Funciones de base de datos (Database Functions) |
||||
|
## |
||||
|
DAVERAGE = BDPROMEDIO |
||||
|
DCOUNT = BDCONTAR |
||||
|
DCOUNTA = BDCONTARA |
||||
|
DGET = BDEXTRAER |
||||
|
DMAX = BDMAX |
||||
|
DMIN = BDMIN |
||||
|
DPRODUCT = BDPRODUCTO |
||||
|
DSTDEV = BDDESVEST |
||||
|
DSTDEVP = BDDESVESTP |
||||
|
DSUM = BDSUMA |
||||
|
DVAR = BDVAR |
||||
|
DVARP = BDVARP |
||||
|
|
||||
|
## |
||||
|
## Funciones de fecha y hora (Date & Time Functions) |
||||
|
## |
||||
|
DATE = FECHA |
||||
|
DATEDIF = SIFECHA |
||||
|
DATESTRING = CADENA.FECHA |
||||
|
DATEVALUE = FECHANUMERO |
||||
|
DAY = DIA |
||||
|
DAYS = DIAS |
||||
|
DAYS360 = DIAS360 |
||||
|
EDATE = FECHA.MES |
||||
|
EOMONTH = FIN.MES |
||||
|
HOUR = HORA |
||||
|
ISOWEEKNUM = ISO.NUM.DE.SEMANA |
||||
|
MINUTE = MINUTO |
||||
|
MONTH = MES |
||||
|
NETWORKDAYS = DIAS.LAB |
||||
|
NETWORKDAYS.INTL = DIAS.LAB.INTL |
||||
|
NOW = AHORA |
||||
|
SECOND = SEGUNDO |
||||
|
THAIDAYOFWEEK = DIASEMTAI |
||||
|
THAIMONTHOFYEAR = MESAÑOTAI |
||||
|
THAIYEAR = AÑOTAI |
||||
|
TIME = NSHORA |
||||
|
TIMEVALUE = HORANUMERO |
||||
|
TODAY = HOY |
||||
|
WEEKDAY = DIASEM |
||||
|
WEEKNUM = NUM.DE.SEMANA |
||||
|
WORKDAY = DIA.LAB |
||||
|
WORKDAY.INTL = DIA.LAB.INTL |
||||
|
YEAR = AÑO |
||||
|
YEARFRAC = FRAC.AÑO |
||||
|
|
||||
|
## |
||||
|
## Funciones de ingeniería (Engineering Functions) |
||||
|
## |
||||
|
BESSELI = BESSELI |
||||
|
BESSELJ = BESSELJ |
||||
|
BESSELK = BESSELK |
||||
|
BESSELY = BESSELY |
||||
|
BIN2DEC = BIN.A.DEC |
||||
|
BIN2HEX = BIN.A.HEX |
||||
|
BIN2OCT = BIN.A.OCT |
||||
|
BITAND = BIT.Y |
||||
|
BITLSHIFT = BIT.DESPLIZQDA |
||||
|
BITOR = BIT.O |
||||
|
BITRSHIFT = BIT.DESPLDCHA |
||||
|
BITXOR = BIT.XO |
||||
|
COMPLEX = COMPLEJO |
||||
|
CONVERT = CONVERTIR |
||||
|
DEC2BIN = DEC.A.BIN |
||||
|
DEC2HEX = DEC.A.HEX |
||||
|
DEC2OCT = DEC.A.OCT |
||||
|
DELTA = DELTA |
||||
|
ERF = FUN.ERROR |
||||
|
ERF.PRECISE = FUN.ERROR.EXACTO |
||||
|
ERFC = FUN.ERROR.COMPL |
||||
|
ERFC.PRECISE = FUN.ERROR.COMPL.EXACTO |
||||
|
GESTEP = MAYOR.O.IGUAL |
||||
|
HEX2BIN = HEX.A.BIN |
||||
|
HEX2DEC = HEX.A.DEC |
||||
|
HEX2OCT = HEX.A.OCT |
||||
|
IMABS = IM.ABS |
||||
|
IMAGINARY = IMAGINARIO |
||||
|
IMARGUMENT = IM.ANGULO |
||||
|
IMCONJUGATE = IM.CONJUGADA |
||||
|
IMCOS = IM.COS |
||||
|
IMCOSH = IM.COSH |
||||
|
IMCOT = IM.COT |
||||
|
IMCSC = IM.CSC |
||||
|
IMCSCH = IM.CSCH |
||||
|
IMDIV = IM.DIV |
||||
|
IMEXP = IM.EXP |
||||
|
IMLN = IM.LN |
||||
|
IMLOG10 = IM.LOG10 |
||||
|
IMLOG2 = IM.LOG2 |
||||
|
IMPOWER = IM.POT |
||||
|
IMPRODUCT = IM.PRODUCT |
||||
|
IMREAL = IM.REAL |
||||
|
IMSEC = IM.SEC |
||||
|
IMSECH = IM.SECH |
||||
|
IMSIN = IM.SENO |
||||
|
IMSINH = IM.SENOH |
||||
|
IMSQRT = IM.RAIZ2 |
||||
|
IMSUB = IM.SUSTR |
||||
|
IMSUM = IM.SUM |
||||
|
IMTAN = IM.TAN |
||||
|
OCT2BIN = OCT.A.BIN |
||||
|
OCT2DEC = OCT.A.DEC |
||||
|
OCT2HEX = OCT.A.HEX |
||||
|
|
||||
|
## |
||||
|
## Funciones financieras (Financial Functions) |
||||
|
## |
||||
|
ACCRINT = INT.ACUM |
||||
|
ACCRINTM = INT.ACUM.V |
||||
|
AMORDEGRC = AMORTIZ.PROGRE |
||||
|
AMORLINC = AMORTIZ.LIN |
||||
|
COUPDAYBS = CUPON.DIAS.L1 |
||||
|
COUPDAYS = CUPON.DIAS |
||||
|
COUPDAYSNC = CUPON.DIAS.L2 |
||||
|
COUPNCD = CUPON.FECHA.L2 |
||||
|
COUPNUM = CUPON.NUM |
||||
|
COUPPCD = CUPON.FECHA.L1 |
||||
|
CUMIPMT = PAGO.INT.ENTRE |
||||
|
CUMPRINC = PAGO.PRINC.ENTRE |
||||
|
DB = DB |
||||
|
DDB = DDB |
||||
|
DISC = TASA.DESC |
||||
|
DOLLARDE = MONEDA.DEC |
||||
|
DOLLARFR = MONEDA.FRAC |
||||
|
DURATION = DURACION |
||||
|
EFFECT = INT.EFECTIVO |
||||
|
FV = VF |
||||
|
FVSCHEDULE = VF.PLAN |
||||
|
INTRATE = TASA.INT |
||||
|
IPMT = PAGOINT |
||||
|
IRR = TIR |
||||
|
ISPMT = INT.PAGO.DIR |
||||
|
MDURATION = DURACION.MODIF |
||||
|
MIRR = TIRM |
||||
|
NOMINAL = TASA.NOMINAL |
||||
|
NPER = NPER |
||||
|
NPV = VNA |
||||
|
ODDFPRICE = PRECIO.PER.IRREGULAR.1 |
||||
|
ODDFYIELD = RENDTO.PER.IRREGULAR.1 |
||||
|
ODDLPRICE = PRECIO.PER.IRREGULAR.2 |
||||
|
ODDLYIELD = RENDTO.PER.IRREGULAR.2 |
||||
|
PDURATION = P.DURACION |
||||
|
PMT = PAGO |
||||
|
PPMT = PAGOPRIN |
||||
|
PRICE = PRECIO |
||||
|
PRICEDISC = PRECIO.DESCUENTO |
||||
|
PRICEMAT = PRECIO.VENCIMIENTO |
||||
|
PV = VA |
||||
|
RATE = TASA |
||||
|
RECEIVED = CANTIDAD.RECIBIDA |
||||
|
RRI = RRI |
||||
|
SLN = SLN |
||||
|
SYD = SYD |
||||
|
TBILLEQ = LETRA.DE.TEST.EQV.A.BONO |
||||
|
TBILLPRICE = LETRA.DE.TES.PRECIO |
||||
|
TBILLYIELD = LETRA.DE.TES.RENDTO |
||||
|
VDB = DVS |
||||
|
XIRR = TIR.NO.PER |
||||
|
XNPV = VNA.NO.PER |
||||
|
YIELD = RENDTO |
||||
|
YIELDDISC = RENDTO.DESC |
||||
|
YIELDMAT = RENDTO.VENCTO |
||||
|
|
||||
|
## |
||||
|
## Funciones de información (Information Functions) |
||||
|
## |
||||
|
CELL = CELDA |
||||
|
ERROR.TYPE = TIPO.DE.ERROR |
||||
|
INFO = INFO |
||||
|
ISBLANK = ESBLANCO |
||||
|
ISERR = ESERR |
||||
|
ISERROR = ESERROR |
||||
|
ISEVEN = ES.PAR |
||||
|
ISFORMULA = ESFORMULA |
||||
|
ISLOGICAL = ESLOGICO |
||||
|
ISNA = ESNOD |
||||
|
ISNONTEXT = ESNOTEXTO |
||||
|
ISNUMBER = ESNUMERO |
||||
|
ISODD = ES.IMPAR |
||||
|
ISREF = ESREF |
||||
|
ISTEXT = ESTEXTO |
||||
|
N = N |
||||
|
NA = NOD |
||||
|
SHEET = HOJA |
||||
|
SHEETS = HOJAS |
||||
|
TYPE = TIPO |
||||
|
|
||||
|
## |
||||
|
## Funciones lógicas (Logical Functions) |
||||
|
## |
||||
|
AND = Y |
||||
|
FALSE = FALSO |
||||
|
IF = SI |
||||
|
IFERROR = SI.ERROR |
||||
|
IFNA = SI.ND |
||||
|
IFS = SI.CONJUNTO |
||||
|
NOT = NO |
||||
|
OR = O |
||||
|
SWITCH = CAMBIAR |
||||
|
TRUE = VERDADERO |
||||
|
XOR = XO |
||||
|
|
||||
|
## |
||||
|
## Funciones de búsqueda y referencia (Lookup & Reference Functions) |
||||
|
## |
||||
|
ADDRESS = DIRECCION |
||||
|
AREAS = AREAS |
||||
|
CHOOSE = ELEGIR |
||||
|
COLUMN = COLUMNA |
||||
|
COLUMNS = COLUMNAS |
||||
|
FORMULATEXT = FORMULATEXTO |
||||
|
GETPIVOTDATA = IMPORTARDATOSDINAMICOS |
||||
|
HLOOKUP = BUSCARH |
||||
|
HYPERLINK = HIPERVINCULO |
||||
|
INDEX = INDICE |
||||
|
INDIRECT = INDIRECTO |
||||
|
LOOKUP = BUSCAR |
||||
|
MATCH = COINCIDIR |
||||
|
OFFSET = DESREF |
||||
|
ROW = FILA |
||||
|
ROWS = FILAS |
||||
|
RTD = RDTR |
||||
|
TRANSPOSE = TRANSPONER |
||||
|
VLOOKUP = BUSCARV |
||||
|
|
||||
|
## |
||||
|
## Funciones matemáticas y trigonométricas (Math & Trig Functions) |
||||
|
## |
||||
|
ABS = ABS |
||||
|
ACOS = ACOS |
||||
|
ACOSH = ACOSH |
||||
|
ACOT = ACOT |
||||
|
ACOTH = ACOTH |
||||
|
AGGREGATE = AGREGAR |
||||
|
ARABIC = NUMERO.ARABE |
||||
|
ASIN = ASENO |
||||
|
ASINH = ASENOH |
||||
|
ATAN = ATAN |
||||
|
ATAN2 = ATAN2 |
||||
|
ATANH = ATANH |
||||
|
BASE = BASE |
||||
|
CEILING.MATH = MULTIPLO.SUPERIOR.MAT |
||||
|
CEILING.PRECISE = MULTIPLO.SUPERIOR.EXACTO |
||||
|
COMBIN = COMBINAT |
||||
|
COMBINA = COMBINA |
||||
|
COS = COS |
||||
|
COSH = COSH |
||||
|
COT = COT |
||||
|
COTH = COTH |
||||
|
CSC = CSC |
||||
|
CSCH = CSCH |
||||
|
DECIMAL = CONV.DECIMAL |
||||
|
DEGREES = GRADOS |
||||
|
ECMA.CEILING = MULTIPLO.SUPERIOR.ECMA |
||||
|
EVEN = REDONDEA.PAR |
||||
|
EXP = EXP |
||||
|
FACT = FACT |
||||
|
FACTDOUBLE = FACT.DOBLE |
||||
|
FLOOR.MATH = MULTIPLO.INFERIOR.MAT |
||||
|
FLOOR.PRECISE = MULTIPLO.INFERIOR.EXACTO |
||||
|
GCD = M.C.D |
||||
|
INT = ENTERO |
||||
|
ISO.CEILING = MULTIPLO.SUPERIOR.ISO |
||||
|
LCM = M.C.M |
||||
|
LN = LN |
||||
|
LOG = LOG |
||||
|
LOG10 = LOG10 |
||||
|
MDETERM = MDETERM |
||||
|
MINVERSE = MINVERSA |
||||
|
MMULT = MMULT |
||||
|
MOD = RESIDUO |
||||
|
MROUND = REDOND.MULT |
||||
|
MULTINOMIAL = MULTINOMIAL |
||||
|
MUNIT = M.UNIDAD |
||||
|
ODD = REDONDEA.IMPAR |
||||
|
PI = PI |
||||
|
POWER = POTENCIA |
||||
|
PRODUCT = PRODUCTO |
||||
|
QUOTIENT = COCIENTE |
||||
|
RADIANS = RADIANES |
||||
|
RAND = ALEATORIO |
||||
|
RANDBETWEEN = ALEATORIO.ENTRE |
||||
|
ROMAN = NUMERO.ROMANO |
||||
|
ROUND = REDONDEAR |
||||
|
ROUNDBAHTDOWN = REDONDEAR.BAHT.MAS |
||||
|
ROUNDBAHTUP = REDONDEAR.BAHT.MENOS |
||||
|
ROUNDDOWN = REDONDEAR.MENOS |
||||
|
ROUNDUP = REDONDEAR.MAS |
||||
|
SEC = SEC |
||||
|
SECH = SECH |
||||
|
SERIESSUM = SUMA.SERIES |
||||
|
SIGN = SIGNO |
||||
|
SIN = SENO |
||||
|
SINH = SENOH |
||||
|
SQRT = RAIZ |
||||
|
SQRTPI = RAIZ2PI |
||||
|
SUBTOTAL = SUBTOTALES |
||||
|
SUM = SUMA |
||||
|
SUMIF = SUMAR.SI |
||||
|
SUMIFS = SUMAR.SI.CONJUNTO |
||||
|
SUMPRODUCT = SUMAPRODUCTO |
||||
|
SUMSQ = SUMA.CUADRADOS |
||||
|
SUMX2MY2 = SUMAX2MENOSY2 |
||||
|
SUMX2PY2 = SUMAX2MASY2 |
||||
|
SUMXMY2 = SUMAXMENOSY2 |
||||
|
TAN = TAN |
||||
|
TANH = TANH |
||||
|
TRUNC = TRUNCAR |
||||
|
|
||||
|
## |
||||
|
## Funciones estadísticas (Statistical Functions) |
||||
|
## |
||||
|
AVEDEV = DESVPROM |
||||
|
AVERAGE = PROMEDIO |
||||
|
AVERAGEA = PROMEDIOA |
||||
|
AVERAGEIF = PROMEDIO.SI |
||||
|
AVERAGEIFS = PROMEDIO.SI.CONJUNTO |
||||
|
BETA.DIST = DISTR.BETA.N |
||||
|
BETA.INV = INV.BETA.N |
||||
|
BINOM.DIST = DISTR.BINOM.N |
||||
|
BINOM.DIST.RANGE = DISTR.BINOM.SERIE |
||||
|
BINOM.INV = INV.BINOM |
||||
|
CHISQ.DIST = DISTR.CHICUAD |
||||
|
CHISQ.DIST.RT = DISTR.CHICUAD.CD |
||||
|
CHISQ.INV = INV.CHICUAD |
||||
|
CHISQ.INV.RT = INV.CHICUAD.CD |
||||
|
CHISQ.TEST = PRUEBA.CHICUAD |
||||
|
CONFIDENCE.NORM = INTERVALO.CONFIANZA.NORM |
||||
|
CONFIDENCE.T = INTERVALO.CONFIANZA.T |
||||
|
CORREL = COEF.DE.CORREL |
||||
|
COUNT = CONTAR |
||||
|
COUNTA = CONTARA |
||||
|
COUNTBLANK = CONTAR.BLANCO |
||||
|
COUNTIF = CONTAR.SI |
||||
|
COUNTIFS = CONTAR.SI.CONJUNTO |
||||
|
COVARIANCE.P = COVARIANCE.P |
||||
|
COVARIANCE.S = COVARIANZA.M |
||||
|
DEVSQ = DESVIA2 |
||||
|
EXPON.DIST = DISTR.EXP.N |
||||
|
F.DIST = DISTR.F.N |
||||
|
F.DIST.RT = DISTR.F.CD |
||||
|
F.INV = INV.F |
||||
|
F.INV.RT = INV.F.CD |
||||
|
F.TEST = PRUEBA.F.N |
||||
|
FISHER = FISHER |
||||
|
FISHERINV = PRUEBA.FISHER.INV |
||||
|
FORECAST.ETS = PRONOSTICO.ETS |
||||
|
FORECAST.ETS.CONFINT = PRONOSTICO.ETS.CONFINT |
||||
|
FORECAST.ETS.SEASONALITY = PRONOSTICO.ETS.ESTACIONALIDAD |
||||
|
FORECAST.ETS.STAT = PRONOSTICO.ETS.STAT |
||||
|
FORECAST.LINEAR = PRONOSTICO.LINEAL |
||||
|
FREQUENCY = FRECUENCIA |
||||
|
GAMMA = GAMMA |
||||
|
GAMMA.DIST = DISTR.GAMMA.N |
||||
|
GAMMA.INV = INV.GAMMA |
||||
|
GAMMALN = GAMMA.LN |
||||
|
GAMMALN.PRECISE = GAMMA.LN.EXACTO |
||||
|
GAUSS = GAUSS |
||||
|
GEOMEAN = MEDIA.GEOM |
||||
|
GROWTH = CRECIMIENTO |
||||
|
HARMEAN = MEDIA.ARMO |
||||
|
HYPGEOM.DIST = DISTR.HIPERGEOM.N |
||||
|
INTERCEPT = INTERSECCION.EJE |
||||
|
KURT = CURTOSIS |
||||
|
LARGE = K.ESIMO.MAYOR |
||||
|
LINEST = ESTIMACION.LINEAL |
||||
|
LOGEST = ESTIMACION.LOGARITMICA |
||||
|
LOGNORM.DIST = DISTR.LOGNORM |
||||
|
LOGNORM.INV = INV.LOGNORM |
||||
|
MAX = MAX |
||||
|
MAXA = MAXA |
||||
|
MAXIFS = MAX.SI.CONJUNTO |
||||
|
MEDIAN = MEDIANA |
||||
|
MIN = MIN |
||||
|
MINA = MINA |
||||
|
MINIFS = MIN.SI.CONJUNTO |
||||
|
MODE.MULT = MODA.VARIOS |
||||
|
MODE.SNGL = MODA.UNO |
||||
|
NEGBINOM.DIST = NEGBINOM.DIST |
||||
|
NORM.DIST = DISTR.NORM.N |
||||
|
NORM.INV = INV.NORM |
||||
|
NORM.S.DIST = DISTR.NORM.ESTAND.N |
||||
|
NORM.S.INV = INV.NORM.ESTAND |
||||
|
PEARSON = PEARSON |
||||
|
PERCENTILE.EXC = PERCENTIL.EXC |
||||
|
PERCENTILE.INC = PERCENTIL.INC |
||||
|
PERCENTRANK.EXC = RANGO.PERCENTIL.EXC |
||||
|
PERCENTRANK.INC = RANGO.PERCENTIL.INC |
||||
|
PERMUT = PERMUTACIONES |
||||
|
PERMUTATIONA = PERMUTACIONES.A |
||||
|
PHI = FI |
||||
|
POISSON.DIST = POISSON.DIST |
||||
|
PROB = PROBABILIDAD |
||||
|
QUARTILE.EXC = CUARTIL.EXC |
||||
|
QUARTILE.INC = CUARTIL.INC |
||||
|
RANK.AVG = JERARQUIA.MEDIA |
||||
|
RANK.EQ = JERARQUIA.EQV |
||||
|
RSQ = COEFICIENTE.R2 |
||||
|
SKEW = COEFICIENTE.ASIMETRIA |
||||
|
SKEW.P = COEFICIENTE.ASIMETRIA.P |
||||
|
SLOPE = PENDIENTE |
||||
|
SMALL = K.ESIMO.MENOR |
||||
|
STANDARDIZE = NORMALIZACION |
||||
|
STDEV.P = DESVEST.P |
||||
|
STDEV.S = DESVEST.M |
||||
|
STDEVA = DESVESTA |
||||
|
STDEVPA = DESVESTPA |
||||
|
STEYX = ERROR.TIPICO.XY |
||||
|
T.DIST = DISTR.T.N |
||||
|
T.DIST.2T = DISTR.T.2C |
||||
|
T.DIST.RT = DISTR.T.CD |
||||
|
T.INV = INV.T |
||||
|
T.INV.2T = INV.T.2C |
||||
|
T.TEST = PRUEBA.T.N |
||||
|
TREND = TENDENCIA |
||||
|
TRIMMEAN = MEDIA.ACOTADA |
||||
|
VAR.P = VAR.P |
||||
|
VAR.S = VAR.S |
||||
|
VARA = VARA |
||||
|
VARPA = VARPA |
||||
|
WEIBULL.DIST = DISTR.WEIBULL |
||||
|
Z.TEST = PRUEBA.Z.N |
||||
|
|
||||
|
## |
||||
|
## Funciones de texto (Text Functions) |
||||
|
## |
||||
|
BAHTTEXT = TEXTOBAHT |
||||
|
CHAR = CARACTER |
||||
|
CLEAN = LIMPIAR |
||||
|
CODE = CODIGO |
||||
|
CONCAT = CONCAT |
||||
|
DOLLAR = MONEDA |
||||
|
EXACT = IGUAL |
||||
|
FIND = ENCONTRAR |
||||
|
FIXED = DECIMAL |
||||
|
ISTHAIDIGIT = ESDIGITOTAI |
||||
|
LEFT = IZQUIERDA |
||||
|
LEN = LARGO |
||||
|
LOWER = MINUSC |
||||
|
MID = EXTRAE |
||||
|
NUMBERSTRING = CADENA.NUMERO |
||||
|
NUMBERVALUE = VALOR.NUMERO |
||||
|
PHONETIC = FONETICO |
||||
|
PROPER = NOMPROPIO |
||||
|
REPLACE = REEMPLAZAR |
||||
|
REPT = REPETIR |
||||
|
RIGHT = DERECHA |
||||
|
SEARCH = HALLAR |
||||
|
SUBSTITUTE = SUSTITUIR |
||||
|
T = T |
||||
|
TEXT = TEXTO |
||||
|
TEXTJOIN = UNIRCADENAS |
||||
|
THAIDIGIT = DIGITOTAI |
||||
|
THAINUMSOUND = SONNUMTAI |
||||
|
THAINUMSTRING = CADENANUMTAI |
||||
|
THAISTRINGLENGTH = LONGCADENATAI |
||||
|
TRIM = ESPACIOS |
||||
|
UNICHAR = UNICAR |
||||
|
UNICODE = UNICODE |
||||
|
UPPER = MAYUSC |
||||
|
VALUE = VALOR |
||||
|
|
||||
|
## |
||||
|
## Funciones web (Web Functions) |
||||
|
## |
||||
|
ENCODEURL = URLCODIF |
||||
|
FILTERXML = XMLFILTRO |
||||
|
WEBSERVICE = SERVICIOWEB |
||||
|
|
||||
|
## |
||||
|
## Funciones de compatibilidad (Compatibility Functions) |
||||
|
## |
||||
|
BETADIST = DISTR.BETA |
||||
|
BETAINV = DISTR.BETA.INV |
||||
|
BINOMDIST = DISTR.BINOM |
||||
|
CEILING = MULTIPLO.SUPERIOR |
||||
|
CHIDIST = DISTR.CHI |
||||
|
CHIINV = PRUEBA.CHI.INV |
||||
|
CHITEST = PRUEBA.CHI |
||||
|
CONCATENATE = CONCATENAR |
||||
|
CONFIDENCE = INTERVALO.CONFIANZA |
||||
|
COVAR = COVAR |
||||
|
CRITBINOM = BINOM.CRIT |
||||
|
EXPONDIST = DISTR.EXP |
||||
|
FDIST = DISTR.F |
||||
|
FINV = DISTR.F.INV |
||||
|
FLOOR = MULTIPLO.INFERIOR |
||||
|
FORECAST = PRONOSTICO |
||||
|
FTEST = PRUEBA.F |
||||
|
GAMMADIST = DISTR.GAMMA |
||||
|
GAMMAINV = DISTR.GAMMA.INV |
||||
|
HYPGEOMDIST = DISTR.HIPERGEOM |
||||
|
LOGINV = DISTR.LOG.INV |
||||
|
LOGNORMDIST = DISTR.LOG.NORM |
||||
|
MODE = MODA |
||||
|
NEGBINOMDIST = NEGBINOMDIST |
||||
|
NORMDIST = DISTR.NORM |
||||
|
NORMINV = DISTR.NORM.INV |
||||
|
NORMSDIST = DISTR.NORM.ESTAND |
||||
|
NORMSINV = DISTR.NORM.ESTAND.INV |
||||
|
PERCENTILE = PERCENTIL |
||||
|
PERCENTRANK = RANGO.PERCENTIL |
||||
|
POISSON = POISSON |
||||
|
QUARTILE = CUARTIL |
||||
|
RANK = JERARQUIA |
||||
|
STDEV = DESVEST |
||||
|
STDEVP = DESVESTP |
||||
|
TDIST = DISTR.T |
||||
|
TINV = DISTR.T.INV |
||||
|
TTEST = PRUEBA.T |
||||
|
VAR = VAR |
||||
|
VARP = VARP |
||||
|
WEIBULL = DIST.WEIBULL |
||||
|
ZTEST = PRUEBA.Z |
||||
@ -0,0 +1,537 @@ |
|||||
|
############################################################ |
||||
|
## |
||||
|
## PhpSpreadsheet - function name translations |
||||
|
## |
||||
|
## Suomi (Finnish) |
||||
|
## |
||||
|
############################################################ |
||||
|
|
||||
|
|
||||
|
## |
||||
|
## Kuutiofunktiot (Cube Functions) |
||||
|
## |
||||
|
CUBEKPIMEMBER = KUUTIOKPIJÄSEN |
||||
|
CUBEMEMBER = KUUTIONJÄSEN |
||||
|
CUBEMEMBERPROPERTY = KUUTIONJÄSENENOMINAISUUS |
||||
|
CUBERANKEDMEMBER = KUUTIONLUOKITELTUJÄSEN |
||||
|
CUBESET = KUUTIOJOUKKO |
||||
|
CUBESETCOUNT = KUUTIOJOUKKOJENMÄÄRÄ |
||||
|
CUBEVALUE = KUUTIONARVO |
||||
|
|
||||
|
## |
||||
|
## Tietokantafunktiot (Database Functions) |
||||
|
## |
||||
|
DAVERAGE = TKESKIARVO |
||||
|
DCOUNT = TLASKE |
||||
|
DCOUNTA = TLASKEA |
||||
|
DGET = TNOUDA |
||||
|
DMAX = TMAKS |
||||
|
DMIN = TMIN |
||||
|
DPRODUCT = TTULO |
||||
|
DSTDEV = TKESKIHAJONTA |
||||
|
DSTDEVP = TKESKIHAJONTAP |
||||
|
DSUM = TSUMMA |
||||
|
DVAR = TVARIANSSI |
||||
|
DVARP = TVARIANSSIP |
||||
|
|
||||
|
## |
||||
|
## Päivämäärä- ja aikafunktiot (Date & Time Functions) |
||||
|
## |
||||
|
DATE = PÄIVÄYS |
||||
|
DATEDIF = PVMERO |
||||
|
DATESTRING = PVMMERKKIJONO |
||||
|
DATEVALUE = PÄIVÄYSARVO |
||||
|
DAY = PÄIVÄ |
||||
|
DAYS = PÄIVÄT |
||||
|
DAYS360 = PÄIVÄT360 |
||||
|
EDATE = PÄIVÄ.KUUKAUSI |
||||
|
EOMONTH = KUUKAUSI.LOPPU |
||||
|
HOUR = TUNNIT |
||||
|
ISOWEEKNUM = VIIKKO.ISO.NRO |
||||
|
MINUTE = MINUUTIT |
||||
|
MONTH = KUUKAUSI |
||||
|
NETWORKDAYS = TYÖPÄIVÄT |
||||
|
NETWORKDAYS.INTL = TYÖPÄIVÄT.KANSVÄL |
||||
|
NOW = NYT |
||||
|
SECOND = SEKUNNIT |
||||
|
THAIDAYOFWEEK = THAI.VIIKONPÄIVÄ |
||||
|
THAIMONTHOFYEAR = THAI.KUUKAUSI |
||||
|
THAIYEAR = THAI.VUOSI |
||||
|
TIME = AIKA |
||||
|
TIMEVALUE = AIKA_ARVO |
||||
|
TODAY = TÄMÄ.PÄIVÄ |
||||
|
WEEKDAY = VIIKONPÄIVÄ |
||||
|
WEEKNUM = VIIKKO.NRO |
||||
|
WORKDAY = TYÖPÄIVÄ |
||||
|
WORKDAY.INTL = TYÖPÄIVÄ.KANSVÄL |
||||
|
YEAR = VUOSI |
||||
|
YEARFRAC = VUOSI.OSA |
||||
|
|
||||
|
## |
||||
|
## Tekniset funktiot (Engineering Functions) |
||||
|
## |
||||
|
BESSELI = BESSELI |
||||
|
BESSELJ = BESSELJ |
||||
|
BESSELK = BESSELK |
||||
|
BESSELY = BESSELY |
||||
|
BIN2DEC = BINDES |
||||
|
BIN2HEX = BINHEKSA |
||||
|
BIN2OCT = BINOKT |
||||
|
BITAND = BITTI.JA |
||||
|
BITLSHIFT = BITTI.SIIRTO.V |
||||
|
BITOR = BITTI.TAI |
||||
|
BITRSHIFT = BITTI.SIIRTO.O |
||||
|
BITXOR = BITTI.EHDOTON.TAI |
||||
|
COMPLEX = KOMPLEKSI |
||||
|
CONVERT = MUUNNA |
||||
|
DEC2BIN = DESBIN |
||||
|
DEC2HEX = DESHEKSA |
||||
|
DEC2OCT = DESOKT |
||||
|
DELTA = SAMA.ARVO |
||||
|
ERF = VIRHEFUNKTIO |
||||
|
ERF.PRECISE = VIRHEFUNKTIO.TARKKA |
||||
|
ERFC = VIRHEFUNKTIO.KOMPLEMENTTI |
||||
|
ERFC.PRECISE = VIRHEFUNKTIO.KOMPLEMENTTI.TARKKA |
||||
|
GESTEP = RAJA |
||||
|
HEX2BIN = HEKSABIN |
||||
|
HEX2DEC = HEKSADES |
||||
|
HEX2OCT = HEKSAOKT |
||||
|
IMABS = KOMPLEKSI.ABS |
||||
|
IMAGINARY = KOMPLEKSI.IMAG |
||||
|
IMARGUMENT = KOMPLEKSI.ARG |
||||
|
IMCONJUGATE = KOMPLEKSI.KONJ |
||||
|
IMCOS = KOMPLEKSI.COS |
||||
|
IMCOSH = IMCOSH |
||||
|
IMCOT = KOMPLEKSI.COT |
||||
|
IMCSC = KOMPLEKSI.KOSEK |
||||
|
IMCSCH = KOMPLEKSI.KOSEKH |
||||
|
IMDIV = KOMPLEKSI.OSAM |
||||
|
IMEXP = KOMPLEKSI.EKSP |
||||
|
IMLN = KOMPLEKSI.LN |
||||
|
IMLOG10 = KOMPLEKSI.LOG10 |
||||
|
IMLOG2 = KOMPLEKSI.LOG2 |
||||
|
IMPOWER = KOMPLEKSI.POT |
||||
|
IMPRODUCT = KOMPLEKSI.TULO |
||||
|
IMREAL = KOMPLEKSI.REAALI |
||||
|
IMSEC = KOMPLEKSI.SEK |
||||
|
IMSECH = KOMPLEKSI.SEKH |
||||
|
IMSIN = KOMPLEKSI.SIN |
||||
|
IMSINH = KOMPLEKSI.SINH |
||||
|
IMSQRT = KOMPLEKSI.NELIÖJ |
||||
|
IMSUB = KOMPLEKSI.EROTUS |
||||
|
IMSUM = KOMPLEKSI.SUM |
||||
|
IMTAN = KOMPLEKSI.TAN |
||||
|
OCT2BIN = OKTBIN |
||||
|
OCT2DEC = OKTDES |
||||
|
OCT2HEX = OKTHEKSA |
||||
|
|
||||
|
## |
||||
|
## Rahoitusfunktiot (Financial Functions) |
||||
|
## |
||||
|
ACCRINT = KERTYNYT.KORKO |
||||
|
ACCRINTM = KERTYNYT.KORKO.LOPUSSA |
||||
|
AMORDEGRC = AMORDEGRC |
||||
|
AMORLINC = AMORLINC |
||||
|
COUPDAYBS = KORKOPÄIVÄT.ALUSTA |
||||
|
COUPDAYS = KORKOPÄIVÄT |
||||
|
COUPDAYSNC = KORKOPÄIVÄT.SEURAAVA |
||||
|
COUPNCD = KORKOPÄIVÄ.SEURAAVA |
||||
|
COUPNUM = KORKOPÄIVÄ.JAKSOT |
||||
|
COUPPCD = KORKOPÄIVÄ.EDELLINEN |
||||
|
CUMIPMT = MAKSETTU.KORKO |
||||
|
CUMPRINC = MAKSETTU.LYHENNYS |
||||
|
DB = DB |
||||
|
DDB = DDB |
||||
|
DISC = DISKONTTOKORKO |
||||
|
DOLLARDE = VALUUTTA.DES |
||||
|
DOLLARFR = VALUUTTA.MURTO |
||||
|
DURATION = KESTO |
||||
|
EFFECT = KORKO.EFEKT |
||||
|
FV = TULEVA.ARVO |
||||
|
FVSCHEDULE = TULEVA.ARVO.ERIKORKO |
||||
|
INTRATE = KORKO.ARVOPAPERI |
||||
|
IPMT = IPMT |
||||
|
IRR = SISÄINEN.KORKO |
||||
|
ISPMT = ISPMT |
||||
|
MDURATION = KESTO.MUUNN |
||||
|
MIRR = MSISÄINEN |
||||
|
NOMINAL = KORKO.VUOSI |
||||
|
NPER = NJAKSO |
||||
|
NPV = NNA |
||||
|
ODDFPRICE = PARITON.ENS.NIMELLISARVO |
||||
|
ODDFYIELD = PARITON.ENS.TUOTTO |
||||
|
ODDLPRICE = PARITON.VIIM.NIMELLISARVO |
||||
|
ODDLYIELD = PARITON.VIIM.TUOTTO |
||||
|
PDURATION = KESTO.JAKSO |
||||
|
PMT = MAKSU |
||||
|
PPMT = PPMT |
||||
|
PRICE = HINTA |
||||
|
PRICEDISC = HINTA.DISK |
||||
|
PRICEMAT = HINTA.LUNASTUS |
||||
|
PV = NA |
||||
|
RATE = KORKO |
||||
|
RECEIVED = SAATU.HINTA |
||||
|
RRI = TOT.ROI |
||||
|
SLN = STP |
||||
|
SYD = VUOSIPOISTO |
||||
|
TBILLEQ = OBLIG.TUOTTOPROS |
||||
|
TBILLPRICE = OBLIG.HINTA |
||||
|
TBILLYIELD = OBLIG.TUOTTO |
||||
|
VDB = VDB |
||||
|
XIRR = SISÄINEN.KORKO.JAKSOTON |
||||
|
XNPV = NNA.JAKSOTON |
||||
|
YIELD = TUOTTO |
||||
|
YIELDDISC = TUOTTO.DISK |
||||
|
YIELDMAT = TUOTTO.ERÄP |
||||
|
|
||||
|
## |
||||
|
## Tietofunktiot (Information Functions) |
||||
|
## |
||||
|
CELL = SOLU |
||||
|
ERROR.TYPE = VIRHEEN.LAJI |
||||
|
INFO = KUVAUS |
||||
|
ISBLANK = ONTYHJÄ |
||||
|
ISERR = ONVIRH |
||||
|
ISERROR = ONVIRHE |
||||
|
ISEVEN = ONPARILLINEN |
||||
|
ISFORMULA = ONKAAVA |
||||
|
ISLOGICAL = ONTOTUUS |
||||
|
ISNA = ONPUUTTUU |
||||
|
ISNONTEXT = ONEI_TEKSTI |
||||
|
ISNUMBER = ONLUKU |
||||
|
ISODD = ONPARITON |
||||
|
ISREF = ONVIITT |
||||
|
ISTEXT = ONTEKSTI |
||||
|
N = N |
||||
|
NA = PUUTTUU |
||||
|
SHEET = TAULUKKO |
||||
|
SHEETS = TAULUKOT |
||||
|
TYPE = TYYPPI |
||||
|
|
||||
|
## |
||||
|
## Loogiset funktiot (Logical Functions) |
||||
|
## |
||||
|
AND = JA |
||||
|
FALSE = EPÄTOSI |
||||
|
IF = JOS |
||||
|
IFERROR = JOSVIRHE |
||||
|
IFNA = JOSPUUTTUU |
||||
|
IFS = JOSS |
||||
|
NOT = EI |
||||
|
OR = TAI |
||||
|
SWITCH = MUUTA |
||||
|
TRUE = TOSI |
||||
|
XOR = EHDOTON.TAI |
||||
|
|
||||
|
## |
||||
|
## Haku- ja viitefunktiot (Lookup & Reference Functions) |
||||
|
## |
||||
|
ADDRESS = OSOITE |
||||
|
AREAS = ALUEET |
||||
|
CHOOSE = VALITSE.INDEKSI |
||||
|
COLUMN = SARAKE |
||||
|
COLUMNS = SARAKKEET |
||||
|
FORMULATEXT = KAAVA.TEKSTI |
||||
|
GETPIVOTDATA = NOUDA.PIVOT.TIEDOT |
||||
|
HLOOKUP = VHAKU |
||||
|
HYPERLINK = HYPERLINKKI |
||||
|
INDEX = INDEKSI |
||||
|
INDIRECT = EPÄSUORA |
||||
|
LOOKUP = HAKU |
||||
|
MATCH = VASTINE |
||||
|
OFFSET = SIIRTYMÄ |
||||
|
ROW = RIVI |
||||
|
ROWS = RIVIT |
||||
|
RTD = RTD |
||||
|
TRANSPOSE = TRANSPONOI |
||||
|
VLOOKUP = PHAKU |
||||
|
|
||||
|
## |
||||
|
## Matemaattiset ja trigonometriset funktiot (Math & Trig Functions) |
||||
|
## |
||||
|
ABS = ITSEISARVO |
||||
|
ACOS = ACOS |
||||
|
ACOSH = ACOSH |
||||
|
ACOT = ACOT |
||||
|
ACOTH = ACOTH |
||||
|
AGGREGATE = KOOSTE |
||||
|
ARABIC = ARABIA |
||||
|
ASIN = ASIN |
||||
|
ASINH = ASINH |
||||
|
ATAN = ATAN |
||||
|
ATAN2 = ATAN2 |
||||
|
ATANH = ATANH |
||||
|
BASE = PERUS |
||||
|
CEILING.MATH = PYÖRISTÄ.KERR.YLÖS.MATEMAATTINEN |
||||
|
CEILING.PRECISE = PYÖRISTÄ.KERR.YLÖS.TARKKA |
||||
|
COMBIN = KOMBINAATIO |
||||
|
COMBINA = KOMBINAATIOA |
||||
|
COS = COS |
||||
|
COSH = COSH |
||||
|
COT = COT |
||||
|
COTH = COTH |
||||
|
CSC = KOSEK |
||||
|
CSCH = KOSEKH |
||||
|
DECIMAL = DESIMAALI |
||||
|
DEGREES = ASTEET |
||||
|
ECMA.CEILING = ECMA.PYÖRISTÄ.KERR.YLÖS |
||||
|
EVEN = PARILLINEN |
||||
|
EXP = EKSPONENTTI |
||||
|
FACT = KERTOMA |
||||
|
FACTDOUBLE = KERTOMA.OSA |
||||
|
FLOOR.MATH = PYÖRISTÄ.KERR.ALAS.MATEMAATTINEN |
||||
|
FLOOR.PRECISE = PYÖRISTÄ.KERR.ALAS.TARKKA |
||||
|
GCD = SUURIN.YHT.TEKIJÄ |
||||
|
INT = KOKONAISLUKU |
||||
|
ISO.CEILING = ISO.PYÖRISTÄ.KERR.YLÖS |
||||
|
LCM = PIENIN.YHT.JAETTAVA |
||||
|
LN = LUONNLOG |
||||
|
LOG = LOG |
||||
|
LOG10 = LOG10 |
||||
|
MDETERM = MDETERM |
||||
|
MINVERSE = MKÄÄNTEINEN |
||||
|
MMULT = MKERRO |
||||
|
MOD = JAKOJ |
||||
|
MROUND = PYÖRISTÄ.KERR |
||||
|
MULTINOMIAL = MULTINOMI |
||||
|
MUNIT = YKSIKKÖM |
||||
|
ODD = PARITON |
||||
|
PI = PII |
||||
|
POWER = POTENSSI |
||||
|
PRODUCT = TULO |
||||
|
QUOTIENT = OSAMÄÄRÄ |
||||
|
RADIANS = RADIAANIT |
||||
|
RAND = SATUNNAISLUKU |
||||
|
RANDBETWEEN = SATUNNAISLUKU.VÄLILTÄ |
||||
|
ROMAN = ROMAN |
||||
|
ROUND = PYÖRISTÄ |
||||
|
ROUNDBAHTDOWN = PYÖRISTÄ.BAHT.ALAS |
||||
|
ROUNDBAHTUP = PYÖRISTÄ.BAHT.YLÖS |
||||
|
ROUNDDOWN = PYÖRISTÄ.DES.ALAS |
||||
|
ROUNDUP = PYÖRISTÄ.DES.YLÖS |
||||
|
SEC = SEK |
||||
|
SECH = SEKH |
||||
|
SERIESSUM = SARJA.SUMMA |
||||
|
SIGN = ETUMERKKI |
||||
|
SIN = SIN |
||||
|
SINH = SINH |
||||
|
SQRT = NELIÖJUURI |
||||
|
SQRTPI = NELIÖJUURI.PII |
||||
|
SUBTOTAL = VÄLISUMMA |
||||
|
SUM = SUMMA |
||||
|
SUMIF = SUMMA.JOS |
||||
|
SUMIFS = SUMMA.JOS.JOUKKO |
||||
|
SUMPRODUCT = TULOJEN.SUMMA |
||||
|
SUMSQ = NELIÖSUMMA |
||||
|
SUMX2MY2 = NELIÖSUMMIEN.EROTUS |
||||
|
SUMX2PY2 = NELIÖSUMMIEN.SUMMA |
||||
|
SUMXMY2 = EROTUSTEN.NELIÖSUMMA |
||||
|
TAN = TAN |
||||
|
TANH = TANH |
||||
|
TRUNC = KATKAISE |
||||
|
|
||||
|
## |
||||
|
## Tilastolliset funktiot (Statistical Functions) |
||||
|
## |
||||
|
AVEDEV = KESKIPOIKKEAMA |
||||
|
AVERAGE = KESKIARVO |
||||
|
AVERAGEA = KESKIARVOA |
||||
|
AVERAGEIF = KESKIARVO.JOS |
||||
|
AVERAGEIFS = KESKIARVO.JOS.JOUKKO |
||||
|
BETA.DIST = BEETA.JAKAUMA |
||||
|
BETA.INV = BEETA.KÄÄNT |
||||
|
BINOM.DIST = BINOMI.JAKAUMA |
||||
|
BINOM.DIST.RANGE = BINOMI.JAKAUMA.ALUE |
||||
|
BINOM.INV = BINOMIJAKAUMA.KÄÄNT |
||||
|
CHISQ.DIST = CHINELIÖ.JAKAUMA |
||||
|
CHISQ.DIST.RT = CHINELIÖ.JAKAUMA.OH |
||||
|
CHISQ.INV = CHINELIÖ.KÄÄNT |
||||
|
CHISQ.INV.RT = CHINELIÖ.KÄÄNT.OH |
||||
|
CHISQ.TEST = CHINELIÖ.TESTI |
||||
|
CONFIDENCE.NORM = LUOTTAMUSVÄLI.NORM |
||||
|
CONFIDENCE.T = LUOTTAMUSVÄLI.T |
||||
|
CORREL = KORRELAATIO |
||||
|
COUNT = LASKE |
||||
|
COUNTA = LASKE.A |
||||
|
COUNTBLANK = LASKE.TYHJÄT |
||||
|
COUNTIF = LASKE.JOS |
||||
|
COUNTIFS = LASKE.JOS.JOUKKO |
||||
|
COVARIANCE.P = KOVARIANSSI.P |
||||
|
COVARIANCE.S = KOVARIANSSI.S |
||||
|
DEVSQ = OIKAISTU.NELIÖSUMMA |
||||
|
EXPON.DIST = EKSPONENTIAALI.JAKAUMA |
||||
|
F.DIST = F.JAKAUMA |
||||
|
F.DIST.RT = F.JAKAUMA.OH |
||||
|
F.INV = F.KÄÄNT |
||||
|
F.INV.RT = F.KÄÄNT.OH |
||||
|
F.TEST = F.TESTI |
||||
|
FISHER = FISHER |
||||
|
FISHERINV = FISHER.KÄÄNT |
||||
|
FORECAST.ETS = ENNUSTE.ETS |
||||
|
FORECAST.ETS.CONFINT = ENNUSTE.ETS.CONFINT |
||||
|
FORECAST.ETS.SEASONALITY = ENNUSTE.ETS.KAUSIVAIHTELU |
||||
|
FORECAST.ETS.STAT = ENNUSTE.ETS.STAT |
||||
|
FORECAST.LINEAR = ENNUSTE.LINEAARINEN |
||||
|
FREQUENCY = TAAJUUS |
||||
|
GAMMA = GAMMA |
||||
|
GAMMA.DIST = GAMMA.JAKAUMA |
||||
|
GAMMA.INV = GAMMA.JAKAUMA.KÄÄNT |
||||
|
GAMMALN = GAMMALN |
||||
|
GAMMALN.PRECISE = GAMMALN.TARKKA |
||||
|
GAUSS = GAUSS |
||||
|
GEOMEAN = KESKIARVO.GEOM |
||||
|
GROWTH = KASVU |
||||
|
HARMEAN = KESKIARVO.HARM |
||||
|
HYPGEOM.DIST = HYPERGEOM_JAKAUMA |
||||
|
INTERCEPT = LEIKKAUSPISTE |
||||
|
KURT = KURT |
||||
|
LARGE = SUURI |
||||
|
LINEST = LINREGR |
||||
|
LOGEST = LOGREGR |
||||
|
LOGNORM.DIST = LOGNORM_JAKAUMA |
||||
|
LOGNORM.INV = LOGNORM.KÄÄNT |
||||
|
MAX = MAKS |
||||
|
MAXA = MAKSA |
||||
|
MAXIFS = MAKS.JOS |
||||
|
MEDIAN = MEDIAANI |
||||
|
MIN = MIN |
||||
|
MINA = MINA |
||||
|
MINIFS = MIN.JOS |
||||
|
MODE.MULT = MOODI.USEA |
||||
|
MODE.SNGL = MOODI.YKSI |
||||
|
NEGBINOM.DIST = BINOMI.JAKAUMA.NEG |
||||
|
NORM.DIST = NORMAALI.JAKAUMA |
||||
|
NORM.INV = NORMAALI.JAKAUMA.KÄÄNT |
||||
|
NORM.S.DIST = NORM_JAKAUMA.NORMIT |
||||
|
NORM.S.INV = NORM_JAKAUMA.KÄÄNT |
||||
|
PEARSON = PEARSON |
||||
|
PERCENTILE.EXC = PROSENTTIPISTE.ULK |
||||
|
PERCENTILE.INC = PROSENTTIPISTE.SIS |
||||
|
PERCENTRANK.EXC = PROSENTTIJÄRJESTYS.ULK |
||||
|
PERCENTRANK.INC = PROSENTTIJÄRJESTYS.SIS |
||||
|
PERMUT = PERMUTAATIO |
||||
|
PERMUTATIONA = PERMUTAATIOA |
||||
|
PHI = FII |
||||
|
POISSON.DIST = POISSON.JAKAUMA |
||||
|
PROB = TODENNÄKÖISYYS |
||||
|
QUARTILE.EXC = NELJÄNNES.ULK |
||||
|
QUARTILE.INC = NELJÄNNES.SIS |
||||
|
RANK.AVG = ARVON.MUKAAN.KESKIARVO |
||||
|
RANK.EQ = ARVON.MUKAAN.TASAN |
||||
|
RSQ = PEARSON.NELIÖ |
||||
|
SKEW = JAKAUMAN.VINOUS |
||||
|
SKEW.P = JAKAUMAN.VINOUS.POP |
||||
|
SLOPE = KULMAKERROIN |
||||
|
SMALL = PIENI |
||||
|
STANDARDIZE = NORMITA |
||||
|
STDEV.P = KESKIHAJONTA.P |
||||
|
STDEV.S = KESKIHAJONTA.S |
||||
|
STDEVA = KESKIHAJONTAA |
||||
|
STDEVPA = KESKIHAJONTAPA |
||||
|
STEYX = KESKIVIRHE |
||||
|
T.DIST = T.JAKAUMA |
||||
|
T.DIST.2T = T.JAKAUMA.2S |
||||
|
T.DIST.RT = T.JAKAUMA.OH |
||||
|
T.INV = T.KÄÄNT |
||||
|
T.INV.2T = T.KÄÄNT.2S |
||||
|
T.TEST = T.TESTI |
||||
|
TREND = SUUNTAUS |
||||
|
TRIMMEAN = KESKIARVO.TASATTU |
||||
|
VAR.P = VAR.P |
||||
|
VAR.S = VAR.S |
||||
|
VARA = VARA |
||||
|
VARPA = VARPA |
||||
|
WEIBULL.DIST = WEIBULL.JAKAUMA |
||||
|
Z.TEST = Z.TESTI |
||||
|
|
||||
|
## |
||||
|
## Tekstifunktiot (Text Functions) |
||||
|
## |
||||
|
BAHTTEXT = BAHTTEKSTI |
||||
|
CHAR = MERKKI |
||||
|
CLEAN = SIIVOA |
||||
|
CODE = KOODI |
||||
|
CONCAT = YHDISTÄ |
||||
|
DOLLAR = VALUUTTA |
||||
|
EXACT = VERTAA |
||||
|
FIND = ETSI |
||||
|
FIXED = KIINTEÄ |
||||
|
ISTHAIDIGIT = ON.THAI.NUMERO |
||||
|
LEFT = VASEN |
||||
|
LEN = PITUUS |
||||
|
LOWER = PIENET |
||||
|
MID = POIMI.TEKSTI |
||||
|
NUMBERSTRING = NROMERKKIJONO |
||||
|
NUMBERVALUE = NROARVO |
||||
|
PHONETIC = FONEETTINEN |
||||
|
PROPER = ERISNIMI |
||||
|
REPLACE = KORVAA |
||||
|
REPT = TOISTA |
||||
|
RIGHT = OIKEA |
||||
|
SEARCH = KÄY.LÄPI |
||||
|
SUBSTITUTE = VAIHDA |
||||
|
T = T |
||||
|
TEXT = TEKSTI |
||||
|
TEXTJOIN = TEKSTI.YHDISTÄ |
||||
|
THAIDIGIT = THAI.NUMERO |
||||
|
THAINUMSOUND = THAI.LUKU.ÄÄNI |
||||
|
THAINUMSTRING = THAI.LUKU.MERKKIJONO |
||||
|
THAISTRINGLENGTH = THAI.MERKKIJONON.PITUUS |
||||
|
TRIM = POISTA.VÄLIT |
||||
|
UNICHAR = UNICODEMERKKI |
||||
|
UNICODE = UNICODE |
||||
|
UPPER = ISOT |
||||
|
VALUE = ARVO |
||||
|
|
||||
|
## |
||||
|
## Verkkofunktiot (Web Functions) |
||||
|
## |
||||
|
ENCODEURL = URLKOODAUS |
||||
|
FILTERXML = SUODATA.XML |
||||
|
WEBSERVICE = VERKKOPALVELU |
||||
|
|
||||
|
## |
||||
|
## Yhteensopivuusfunktiot (Compatibility Functions) |
||||
|
## |
||||
|
BETADIST = BEETAJAKAUMA |
||||
|
BETAINV = BEETAJAKAUMA.KÄÄNT |
||||
|
BINOMDIST = BINOMIJAKAUMA |
||||
|
CEILING = PYÖRISTÄ.KERR.YLÖS |
||||
|
CHIDIST = CHIJAKAUMA |
||||
|
CHIINV = CHIJAKAUMA.KÄÄNT |
||||
|
CHITEST = CHITESTI |
||||
|
CONCATENATE = KETJUTA |
||||
|
CONFIDENCE = LUOTTAMUSVÄLI |
||||
|
COVAR = KOVARIANSSI |
||||
|
CRITBINOM = BINOMIJAKAUMA.KRIT |
||||
|
EXPONDIST = EKSPONENTIAALIJAKAUMA |
||||
|
FDIST = FJAKAUMA |
||||
|
FINV = FJAKAUMA.KÄÄNT |
||||
|
FLOOR = PYÖRISTÄ.KERR.ALAS |
||||
|
FORECAST = ENNUSTE |
||||
|
FTEST = FTESTI |
||||
|
GAMMADIST = GAMMAJAKAUMA |
||||
|
GAMMAINV = GAMMAJAKAUMA.KÄÄNT |
||||
|
HYPGEOMDIST = HYPERGEOM.JAKAUMA |
||||
|
LOGINV = LOGNORM.JAKAUMA.KÄÄNT |
||||
|
LOGNORMDIST = LOGNORM.JAKAUMA |
||||
|
MODE = MOODI |
||||
|
NEGBINOMDIST = BINOMIJAKAUMA.NEG |
||||
|
NORMDIST = NORM.JAKAUMA |
||||
|
NORMINV = NORM.JAKAUMA.KÄÄNT |
||||
|
NORMSDIST = NORM.JAKAUMA.NORMIT |
||||
|
NORMSINV = NORM.JAKAUMA.NORMIT.KÄÄNT |
||||
|
PERCENTILE = PROSENTTIPISTE |
||||
|
PERCENTRANK = PROSENTTIJÄRJESTYS |
||||
|
POISSON = POISSON |
||||
|
QUARTILE = NELJÄNNES |
||||
|
RANK = ARVON.MUKAAN |
||||
|
STDEV = KESKIHAJONTA |
||||
|
STDEVP = KESKIHAJONTAP |
||||
|
TDIST = TJAKAUMA |
||||
|
TINV = TJAKAUMA.KÄÄNT |
||||
|
TTEST = TTESTI |
||||
|
VAR = VAR |
||||
|
VARP = VARP |
||||
|
WEIBULL = WEIBULL |
||||
|
ZTEST = ZTESTI |
||||
@ -0,0 +1,524 @@ |
|||||
|
############################################################ |
||||
|
## |
||||
|
## PhpSpreadsheet - function name translations |
||||
|
## |
||||
|
## Français (French) |
||||
|
## |
||||
|
############################################################ |
||||
|
|
||||
|
|
||||
|
## |
||||
|
## Fonctions Cube (Cube Functions) |
||||
|
## |
||||
|
CUBEKPIMEMBER = MEMBREKPICUBE |
||||
|
CUBEMEMBER = MEMBRECUBE |
||||
|
CUBEMEMBERPROPERTY = PROPRIETEMEMBRECUBE |
||||
|
CUBERANKEDMEMBER = RANGMEMBRECUBE |
||||
|
CUBESET = JEUCUBE |
||||
|
CUBESETCOUNT = NBJEUCUBE |
||||
|
CUBEVALUE = VALEURCUBE |
||||
|
|
||||
|
## |
||||
|
## Fonctions de base de données (Database Functions) |
||||
|
## |
||||
|
DAVERAGE = BDMOYENNE |
||||
|
DCOUNT = BDNB |
||||
|
DCOUNTA = BDNBVAL |
||||
|
DGET = BDLIRE |
||||
|
DMAX = BDMAX |
||||
|
DMIN = BDMIN |
||||
|
DPRODUCT = BDPRODUIT |
||||
|
DSTDEV = BDECARTYPE |
||||
|
DSTDEVP = BDECARTYPEP |
||||
|
DSUM = BDSOMME |
||||
|
DVAR = BDVAR |
||||
|
DVARP = BDVARP |
||||
|
|
||||
|
## |
||||
|
## Fonctions de date et d’heure (Date & Time Functions) |
||||
|
## |
||||
|
DATE = DATE |
||||
|
DATEVALUE = DATEVAL |
||||
|
DAY = JOUR |
||||
|
DAYS = JOURS |
||||
|
DAYS360 = JOURS360 |
||||
|
EDATE = MOIS.DECALER |
||||
|
EOMONTH = FIN.MOIS |
||||
|
HOUR = HEURE |
||||
|
ISOWEEKNUM = NO.SEMAINE.ISO |
||||
|
MINUTE = MINUTE |
||||
|
MONTH = MOIS |
||||
|
NETWORKDAYS = NB.JOURS.OUVRES |
||||
|
NETWORKDAYS.INTL = NB.JOURS.OUVRES.INTL |
||||
|
NOW = MAINTENANT |
||||
|
SECOND = SECONDE |
||||
|
TIME = TEMPS |
||||
|
TIMEVALUE = TEMPSVAL |
||||
|
TODAY = AUJOURDHUI |
||||
|
WEEKDAY = JOURSEM |
||||
|
WEEKNUM = NO.SEMAINE |
||||
|
WORKDAY = SERIE.JOUR.OUVRE |
||||
|
WORKDAY.INTL = SERIE.JOUR.OUVRE.INTL |
||||
|
YEAR = ANNEE |
||||
|
YEARFRAC = FRACTION.ANNEE |
||||
|
|
||||
|
## |
||||
|
## Fonctions d’ingénierie (Engineering Functions) |
||||
|
## |
||||
|
BESSELI = BESSELI |
||||
|
BESSELJ = BESSELJ |
||||
|
BESSELK = BESSELK |
||||
|
BESSELY = BESSELY |
||||
|
BIN2DEC = BINDEC |
||||
|
BIN2HEX = BINHEX |
||||
|
BIN2OCT = BINOCT |
||||
|
BITAND = BITET |
||||
|
BITLSHIFT = BITDECALG |
||||
|
BITOR = BITOU |
||||
|
BITRSHIFT = BITDECALD |
||||
|
BITXOR = BITOUEXCLUSIF |
||||
|
COMPLEX = COMPLEXE |
||||
|
CONVERT = CONVERT |
||||
|
DEC2BIN = DECBIN |
||||
|
DEC2HEX = DECHEX |
||||
|
DEC2OCT = DECOCT |
||||
|
DELTA = DELTA |
||||
|
ERF = ERF |
||||
|
ERF.PRECISE = ERF.PRECIS |
||||
|
ERFC = ERFC |
||||
|
ERFC.PRECISE = ERFC.PRECIS |
||||
|
GESTEP = SUP.SEUIL |
||||
|
HEX2BIN = HEXBIN |
||||
|
HEX2DEC = HEXDEC |
||||
|
HEX2OCT = HEXOCT |
||||
|
IMABS = COMPLEXE.MODULE |
||||
|
IMAGINARY = COMPLEXE.IMAGINAIRE |
||||
|
IMARGUMENT = COMPLEXE.ARGUMENT |
||||
|
IMCONJUGATE = COMPLEXE.CONJUGUE |
||||
|
IMCOS = COMPLEXE.COS |
||||
|
IMCOSH = COMPLEXE.COSH |
||||
|
IMCOT = COMPLEXE.COT |
||||
|
IMCSC = COMPLEXE.CSC |
||||
|
IMCSCH = COMPLEXE.CSCH |
||||
|
IMDIV = COMPLEXE.DIV |
||||
|
IMEXP = COMPLEXE.EXP |
||||
|
IMLN = COMPLEXE.LN |
||||
|
IMLOG10 = COMPLEXE.LOG10 |
||||
|
IMLOG2 = COMPLEXE.LOG2 |
||||
|
IMPOWER = COMPLEXE.PUISSANCE |
||||
|
IMPRODUCT = COMPLEXE.PRODUIT |
||||
|
IMREAL = COMPLEXE.REEL |
||||
|
IMSEC = COMPLEXE.SEC |
||||
|
IMSECH = COMPLEXE.SECH |
||||
|
IMSIN = COMPLEXE.SIN |
||||
|
IMSINH = COMPLEXE.SINH |
||||
|
IMSQRT = COMPLEXE.RACINE |
||||
|
IMSUB = COMPLEXE.DIFFERENCE |
||||
|
IMSUM = COMPLEXE.SOMME |
||||
|
IMTAN = COMPLEXE.TAN |
||||
|
OCT2BIN = OCTBIN |
||||
|
OCT2DEC = OCTDEC |
||||
|
OCT2HEX = OCTHEX |
||||
|
|
||||
|
## |
||||
|
## Fonctions financières (Financial Functions) |
||||
|
## |
||||
|
ACCRINT = INTERET.ACC |
||||
|
ACCRINTM = INTERET.ACC.MAT |
||||
|
AMORDEGRC = AMORDEGRC |
||||
|
AMORLINC = AMORLINC |
||||
|
COUPDAYBS = NB.JOURS.COUPON.PREC |
||||
|
COUPDAYS = NB.JOURS.COUPONS |
||||
|
COUPDAYSNC = NB.JOURS.COUPON.SUIV |
||||
|
COUPNCD = DATE.COUPON.SUIV |
||||
|
COUPNUM = NB.COUPONS |
||||
|
COUPPCD = DATE.COUPON.PREC |
||||
|
CUMIPMT = CUMUL.INTER |
||||
|
CUMPRINC = CUMUL.PRINCPER |
||||
|
DB = DB |
||||
|
DDB = DDB |
||||
|
DISC = TAUX.ESCOMPTE |
||||
|
DOLLARDE = PRIX.DEC |
||||
|
DOLLARFR = PRIX.FRAC |
||||
|
DURATION = DUREE |
||||
|
EFFECT = TAUX.EFFECTIF |
||||
|
FV = VC |
||||
|
FVSCHEDULE = VC.PAIEMENTS |
||||
|
INTRATE = TAUX.INTERET |
||||
|
IPMT = INTPER |
||||
|
IRR = TRI |
||||
|
ISPMT = ISPMT |
||||
|
MDURATION = DUREE.MODIFIEE |
||||
|
MIRR = TRIM |
||||
|
NOMINAL = TAUX.NOMINAL |
||||
|
NPER = NPM |
||||
|
NPV = VAN |
||||
|
ODDFPRICE = PRIX.PCOUPON.IRREG |
||||
|
ODDFYIELD = REND.PCOUPON.IRREG |
||||
|
ODDLPRICE = PRIX.DCOUPON.IRREG |
||||
|
ODDLYIELD = REND.DCOUPON.IRREG |
||||
|
PDURATION = PDUREE |
||||
|
PMT = VPM |
||||
|
PPMT = PRINCPER |
||||
|
PRICE = PRIX.TITRE |
||||
|
PRICEDISC = VALEUR.ENCAISSEMENT |
||||
|
PRICEMAT = PRIX.TITRE.ECHEANCE |
||||
|
PV = VA |
||||
|
RATE = TAUX |
||||
|
RECEIVED = VALEUR.NOMINALE |
||||
|
RRI = TAUX.INT.EQUIV |
||||
|
SLN = AMORLIN |
||||
|
SYD = SYD |
||||
|
TBILLEQ = TAUX.ESCOMPTE.R |
||||
|
TBILLPRICE = PRIX.BON.TRESOR |
||||
|
TBILLYIELD = RENDEMENT.BON.TRESOR |
||||
|
VDB = VDB |
||||
|
XIRR = TRI.PAIEMENTS |
||||
|
XNPV = VAN.PAIEMENTS |
||||
|
YIELD = RENDEMENT.TITRE |
||||
|
YIELDDISC = RENDEMENT.SIMPLE |
||||
|
YIELDMAT = RENDEMENT.TITRE.ECHEANCE |
||||
|
|
||||
|
## |
||||
|
## Fonctions d’information (Information Functions) |
||||
|
## |
||||
|
CELL = CELLULE |
||||
|
ERROR.TYPE = TYPE.ERREUR |
||||
|
INFO = INFORMATIONS |
||||
|
ISBLANK = ESTVIDE |
||||
|
ISERR = ESTERR |
||||
|
ISERROR = ESTERREUR |
||||
|
ISEVEN = EST.PAIR |
||||
|
ISFORMULA = ESTFORMULE |
||||
|
ISLOGICAL = ESTLOGIQUE |
||||
|
ISNA = ESTNA |
||||
|
ISNONTEXT = ESTNONTEXTE |
||||
|
ISNUMBER = ESTNUM |
||||
|
ISODD = EST.IMPAIR |
||||
|
ISREF = ESTREF |
||||
|
ISTEXT = ESTTEXTE |
||||
|
N = N |
||||
|
NA = NA |
||||
|
SHEET = FEUILLE |
||||
|
SHEETS = FEUILLES |
||||
|
TYPE = TYPE |
||||
|
|
||||
|
## |
||||
|
## Fonctions logiques (Logical Functions) |
||||
|
## |
||||
|
AND = ET |
||||
|
FALSE = FAUX |
||||
|
IF = SI |
||||
|
IFERROR = SIERREUR |
||||
|
IFNA = SI.NON.DISP |
||||
|
IFS = SI.CONDITIONS |
||||
|
NOT = NON |
||||
|
OR = OU |
||||
|
SWITCH = SI.MULTIPLE |
||||
|
TRUE = VRAI |
||||
|
XOR = OUX |
||||
|
|
||||
|
## |
||||
|
## Fonctions de recherche et de référence (Lookup & Reference Functions) |
||||
|
## |
||||
|
ADDRESS = ADRESSE |
||||
|
AREAS = ZONES |
||||
|
CHOOSE = CHOISIR |
||||
|
COLUMN = COLONNE |
||||
|
COLUMNS = COLONNES |
||||
|
FORMULATEXT = FORMULETEXTE |
||||
|
GETPIVOTDATA = LIREDONNEESTABCROISDYNAMIQUE |
||||
|
HLOOKUP = RECHERCHEH |
||||
|
HYPERLINK = LIEN_HYPERTEXTE |
||||
|
INDEX = INDEX |
||||
|
INDIRECT = INDIRECT |
||||
|
LOOKUP = RECHERCHE |
||||
|
MATCH = EQUIV |
||||
|
OFFSET = DECALER |
||||
|
ROW = LIGNE |
||||
|
ROWS = LIGNES |
||||
|
RTD = RTD |
||||
|
TRANSPOSE = TRANSPOSE |
||||
|
VLOOKUP = RECHERCHEV |
||||
|
|
||||
|
## |
||||
|
## Fonctions mathématiques et trigonométriques (Math & Trig Functions) |
||||
|
## |
||||
|
ABS = ABS |
||||
|
ACOS = ACOS |
||||
|
ACOSH = ACOSH |
||||
|
ACOT = ACOT |
||||
|
ACOTH = ACOTH |
||||
|
AGGREGATE = AGREGAT |
||||
|
ARABIC = CHIFFRE.ARABE |
||||
|
ASIN = ASIN |
||||
|
ASINH = ASINH |
||||
|
ATAN = ATAN |
||||
|
ATAN2 = ATAN2 |
||||
|
ATANH = ATANH |
||||
|
BASE = BASE |
||||
|
CEILING.MATH = PLAFOND.MATH |
||||
|
CEILING.PRECISE = PLAFOND.PRECIS |
||||
|
COMBIN = COMBIN |
||||
|
COMBINA = COMBINA |
||||
|
COS = COS |
||||
|
COSH = COSH |
||||
|
COT = COT |
||||
|
COTH = COTH |
||||
|
CSC = CSC |
||||
|
CSCH = CSCH |
||||
|
DECIMAL = DECIMAL |
||||
|
DEGREES = DEGRES |
||||
|
ECMA.CEILING = ECMA.PLAFOND |
||||
|
EVEN = PAIR |
||||
|
EXP = EXP |
||||
|
FACT = FACT |
||||
|
FACTDOUBLE = FACTDOUBLE |
||||
|
FLOOR.MATH = PLANCHER.MATH |
||||
|
FLOOR.PRECISE = PLANCHER.PRECIS |
||||
|
GCD = PGCD |
||||
|
INT = ENT |
||||
|
ISO.CEILING = ISO.PLAFOND |
||||
|
LCM = PPCM |
||||
|
LN = LN |
||||
|
LOG = LOG |
||||
|
LOG10 = LOG10 |
||||
|
MDETERM = DETERMAT |
||||
|
MINVERSE = INVERSEMAT |
||||
|
MMULT = PRODUITMAT |
||||
|
MOD = MOD |
||||
|
MROUND = ARRONDI.AU.MULTIPLE |
||||
|
MULTINOMIAL = MULTINOMIALE |
||||
|
MUNIT = MATRICE.UNITAIRE |
||||
|
ODD = IMPAIR |
||||
|
PI = PI |
||||
|
POWER = PUISSANCE |
||||
|
PRODUCT = PRODUIT |
||||
|
QUOTIENT = QUOTIENT |
||||
|
RADIANS = RADIANS |
||||
|
RAND = ALEA |
||||
|
RANDBETWEEN = ALEA.ENTRE.BORNES |
||||
|
ROMAN = ROMAIN |
||||
|
ROUND = ARRONDI |
||||
|
ROUNDDOWN = ARRONDI.INF |
||||
|
ROUNDUP = ARRONDI.SUP |
||||
|
SEC = SEC |
||||
|
SECH = SECH |
||||
|
SERIESSUM = SOMME.SERIES |
||||
|
SIGN = SIGNE |
||||
|
SIN = SIN |
||||
|
SINH = SINH |
||||
|
SQRT = RACINE |
||||
|
SQRTPI = RACINE.PI |
||||
|
SUBTOTAL = SOUS.TOTAL |
||||
|
SUM = SOMME |
||||
|
SUMIF = SOMME.SI |
||||
|
SUMIFS = SOMME.SI.ENS |
||||
|
SUMPRODUCT = SOMMEPROD |
||||
|
SUMSQ = SOMME.CARRES |
||||
|
SUMX2MY2 = SOMME.X2MY2 |
||||
|
SUMX2PY2 = SOMME.X2PY2 |
||||
|
SUMXMY2 = SOMME.XMY2 |
||||
|
TAN = TAN |
||||
|
TANH = TANH |
||||
|
TRUNC = TRONQUE |
||||
|
|
||||
|
## |
||||
|
## Fonctions statistiques (Statistical Functions) |
||||
|
## |
||||
|
AVEDEV = ECART.MOYEN |
||||
|
AVERAGE = MOYENNE |
||||
|
AVERAGEA = AVERAGEA |
||||
|
AVERAGEIF = MOYENNE.SI |
||||
|
AVERAGEIFS = MOYENNE.SI.ENS |
||||
|
BETA.DIST = LOI.BETA.N |
||||
|
BETA.INV = BETA.INVERSE.N |
||||
|
BINOM.DIST = LOI.BINOMIALE.N |
||||
|
BINOM.DIST.RANGE = LOI.BINOMIALE.SERIE |
||||
|
BINOM.INV = LOI.BINOMIALE.INVERSE |
||||
|
CHISQ.DIST = LOI.KHIDEUX.N |
||||
|
CHISQ.DIST.RT = LOI.KHIDEUX.DROITE |
||||
|
CHISQ.INV = LOI.KHIDEUX.INVERSE |
||||
|
CHISQ.INV.RT = LOI.KHIDEUX.INVERSE.DROITE |
||||
|
CHISQ.TEST = CHISQ.TEST |
||||
|
CONFIDENCE.NORM = INTERVALLE.CONFIANCE.NORMAL |
||||
|
CONFIDENCE.T = INTERVALLE.CONFIANCE.STUDENT |
||||
|
CORREL = COEFFICIENT.CORRELATION |
||||
|
COUNT = NB |
||||
|
COUNTA = NBVAL |
||||
|
COUNTBLANK = NB.VIDE |
||||
|
COUNTIF = NB.SI |
||||
|
COUNTIFS = NB.SI.ENS |
||||
|
COVARIANCE.P = COVARIANCE.PEARSON |
||||
|
COVARIANCE.S = COVARIANCE.STANDARD |
||||
|
DEVSQ = SOMME.CARRES.ECARTS |
||||
|
EXPON.DIST = LOI.EXPONENTIELLE.N |
||||
|
F.DIST = LOI.F.N |
||||
|
F.DIST.RT = LOI.F.DROITE |
||||
|
F.INV = INVERSE.LOI.F.N |
||||
|
F.INV.RT = INVERSE.LOI.F.DROITE |
||||
|
F.TEST = F.TEST |
||||
|
FISHER = FISHER |
||||
|
FISHERINV = FISHER.INVERSE |
||||
|
FORECAST.ETS = PREVISION.ETS |
||||
|
FORECAST.ETS.CONFINT = PREVISION.ETS.CONFINT |
||||
|
FORECAST.ETS.SEASONALITY = PREVISION.ETS.CARACTERESAISONNIER |
||||
|
FORECAST.ETS.STAT = PREVISION.ETS.STAT |
||||
|
FORECAST.LINEAR = PREVISION.LINEAIRE |
||||
|
FREQUENCY = FREQUENCE |
||||
|
GAMMA = GAMMA |
||||
|
GAMMA.DIST = LOI.GAMMA.N |
||||
|
GAMMA.INV = LOI.GAMMA.INVERSE.N |
||||
|
GAMMALN = LNGAMMA |
||||
|
GAMMALN.PRECISE = LNGAMMA.PRECIS |
||||
|
GAUSS = GAUSS |
||||
|
GEOMEAN = MOYENNE.GEOMETRIQUE |
||||
|
GROWTH = CROISSANCE |
||||
|
HARMEAN = MOYENNE.HARMONIQUE |
||||
|
HYPGEOM.DIST = LOI.HYPERGEOMETRIQUE.N |
||||
|
INTERCEPT = ORDONNEE.ORIGINE |
||||
|
KURT = KURTOSIS |
||||
|
LARGE = GRANDE.VALEUR |
||||
|
LINEST = DROITEREG |
||||
|
LOGEST = LOGREG |
||||
|
LOGNORM.DIST = LOI.LOGNORMALE.N |
||||
|
LOGNORM.INV = LOI.LOGNORMALE.INVERSE.N |
||||
|
MAX = MAX |
||||
|
MAXA = MAXA |
||||
|
MAXIFS = MAX.SI |
||||
|
MEDIAN = MEDIANE |
||||
|
MIN = MIN |
||||
|
MINA = MINA |
||||
|
MINIFS = MIN.SI |
||||
|
MODE.MULT = MODE.MULTIPLE |
||||
|
MODE.SNGL = MODE.SIMPLE |
||||
|
NEGBINOM.DIST = LOI.BINOMIALE.NEG.N |
||||
|
NORM.DIST = LOI.NORMALE.N |
||||
|
NORM.INV = LOI.NORMALE.INVERSE.N |
||||
|
NORM.S.DIST = LOI.NORMALE.STANDARD.N |
||||
|
NORM.S.INV = LOI.NORMALE.STANDARD.INVERSE.N |
||||
|
PEARSON = PEARSON |
||||
|
PERCENTILE.EXC = CENTILE.EXCLURE |
||||
|
PERCENTILE.INC = CENTILE.INCLURE |
||||
|
PERCENTRANK.EXC = RANG.POURCENTAGE.EXCLURE |
||||
|
PERCENTRANK.INC = RANG.POURCENTAGE.INCLURE |
||||
|
PERMUT = PERMUTATION |
||||
|
PERMUTATIONA = PERMUTATIONA |
||||
|
PHI = PHI |
||||
|
POISSON.DIST = LOI.POISSON.N |
||||
|
PROB = PROBABILITE |
||||
|
QUARTILE.EXC = QUARTILE.EXCLURE |
||||
|
QUARTILE.INC = QUARTILE.INCLURE |
||||
|
RANK.AVG = MOYENNE.RANG |
||||
|
RANK.EQ = EQUATION.RANG |
||||
|
RSQ = COEFFICIENT.DETERMINATION |
||||
|
SKEW = COEFFICIENT.ASYMETRIE |
||||
|
SKEW.P = COEFFICIENT.ASYMETRIE.P |
||||
|
SLOPE = PENTE |
||||
|
SMALL = PETITE.VALEUR |
||||
|
STANDARDIZE = CENTREE.REDUITE |
||||
|
STDEV.P = ECARTYPE.PEARSON |
||||
|
STDEV.S = ECARTYPE.STANDARD |
||||
|
STDEVA = STDEVA |
||||
|
STDEVPA = STDEVPA |
||||
|
STEYX = ERREUR.TYPE.XY |
||||
|
T.DIST = LOI.STUDENT.N |
||||
|
T.DIST.2T = LOI.STUDENT.BILATERALE |
||||
|
T.DIST.RT = LOI.STUDENT.DROITE |
||||
|
T.INV = LOI.STUDENT.INVERSE.N |
||||
|
T.INV.2T = LOI.STUDENT.INVERSE.BILATERALE |
||||
|
T.TEST = T.TEST |
||||
|
TREND = TENDANCE |
||||
|
TRIMMEAN = MOYENNE.REDUITE |
||||
|
VAR.P = VAR.P.N |
||||
|
VAR.S = VAR.S |
||||
|
VARA = VARA |
||||
|
VARPA = VARPA |
||||
|
WEIBULL.DIST = LOI.WEIBULL.N |
||||
|
Z.TEST = Z.TEST |
||||
|
|
||||
|
## |
||||
|
## Fonctions de texte (Text Functions) |
||||
|
## |
||||
|
BAHTTEXT = BAHTTEXT |
||||
|
CHAR = CAR |
||||
|
CLEAN = EPURAGE |
||||
|
CODE = CODE |
||||
|
CONCAT = CONCAT |
||||
|
DOLLAR = DEVISE |
||||
|
EXACT = EXACT |
||||
|
FIND = TROUVE |
||||
|
FIXED = CTXT |
||||
|
LEFT = GAUCHE |
||||
|
LEN = NBCAR |
||||
|
LOWER = MINUSCULE |
||||
|
MID = STXT |
||||
|
NUMBERVALUE = VALEURNOMBRE |
||||
|
PHONETIC = PHONETIQUE |
||||
|
PROPER = NOMPROPRE |
||||
|
REPLACE = REMPLACER |
||||
|
REPT = REPT |
||||
|
RIGHT = DROITE |
||||
|
SEARCH = CHERCHE |
||||
|
SUBSTITUTE = SUBSTITUE |
||||
|
T = T |
||||
|
TEXT = TEXTE |
||||
|
TEXTJOIN = JOINDRE.TEXTE |
||||
|
TRIM = SUPPRESPACE |
||||
|
UNICHAR = UNICAR |
||||
|
UNICODE = UNICODE |
||||
|
UPPER = MAJUSCULE |
||||
|
VALUE = CNUM |
||||
|
|
||||
|
## |
||||
|
## Fonctions web (Web Functions) |
||||
|
## |
||||
|
ENCODEURL = URLENCODAGE |
||||
|
FILTERXML = FILTRE.XML |
||||
|
WEBSERVICE = SERVICEWEB |
||||
|
|
||||
|
## |
||||
|
## Fonctions de compatibilité (Compatibility Functions) |
||||
|
## |
||||
|
BETADIST = LOI.BETA |
||||
|
BETAINV = BETA.INVERSE |
||||
|
BINOMDIST = LOI.BINOMIALE |
||||
|
CEILING = PLAFOND |
||||
|
CHIDIST = LOI.KHIDEUX |
||||
|
CHIINV = KHIDEUX.INVERSE |
||||
|
CHITEST = TEST.KHIDEUX |
||||
|
CONCATENATE = CONCATENER |
||||
|
CONFIDENCE = INTERVALLE.CONFIANCE |
||||
|
COVAR = COVARIANCE |
||||
|
CRITBINOM = CRITERE.LOI.BINOMIALE |
||||
|
EXPONDIST = LOI.EXPONENTIELLE |
||||
|
FDIST = LOI.F |
||||
|
FINV = INVERSE.LOI.F |
||||
|
FLOOR = PLANCHER |
||||
|
FORECAST = PREVISION |
||||
|
FTEST = TEST.F |
||||
|
GAMMADIST = LOI.GAMMA |
||||
|
GAMMAINV = LOI.GAMMA.INVERSE |
||||
|
HYPGEOMDIST = LOI.HYPERGEOMETRIQUE |
||||
|
LOGINV = LOI.LOGNORMALE.INVERSE |
||||
|
LOGNORMDIST = LOI.LOGNORMALE |
||||
|
MODE = MODE |
||||
|
NEGBINOMDIST = LOI.BINOMIALE.NEG |
||||
|
NORMDIST = LOI.NORMALE |
||||
|
NORMINV = LOI.NORMALE.INVERSE |
||||
|
NORMSDIST = LOI.NORMALE.STANDARD |
||||
|
NORMSINV = LOI.NORMALE.STANDARD.INVERSE |
||||
|
PERCENTILE = CENTILE |
||||
|
PERCENTRANK = RANG.POURCENTAGE |
||||
|
POISSON = LOI.POISSON |
||||
|
QUARTILE = QUARTILE |
||||
|
RANK = RANG |
||||
|
STDEV = ECARTYPE |
||||
|
STDEVP = ECARTYPEP |
||||
|
TDIST = LOI.STUDENT |
||||
|
TINV = LOI.STUDENT.INVERSE |
||||
|
TTEST = TEST.STUDENT |
||||
|
VAR = VAR |
||||
|
VARP = VAR.P |
||||
|
WEIBULL = LOI.WEIBULL |
||||
|
ZTEST = TEST.Z |
||||
@ -0,0 +1,537 @@ |
|||||
|
############################################################ |
||||
|
## |
||||
|
## PhpSpreadsheet - function name translations |
||||
|
## |
||||
|
## Magyar (Hungarian) |
||||
|
## |
||||
|
############################################################ |
||||
|
|
||||
|
|
||||
|
## |
||||
|
## Kockafüggvények (Cube Functions) |
||||
|
## |
||||
|
CUBEKPIMEMBER = KOCKA.FŐTELJMUT |
||||
|
CUBEMEMBER = KOCKA.TAG |
||||
|
CUBEMEMBERPROPERTY = KOCKA.TAG.TUL |
||||
|
CUBERANKEDMEMBER = KOCKA.HALM.ELEM |
||||
|
CUBESET = KOCKA.HALM |
||||
|
CUBESETCOUNT = KOCKA.HALM.DB |
||||
|
CUBEVALUE = KOCKA.ÉRTÉK |
||||
|
|
||||
|
## |
||||
|
## Adatbázis-kezelő függvények (Database Functions) |
||||
|
## |
||||
|
DAVERAGE = AB.ÁTLAG |
||||
|
DCOUNT = AB.DARAB |
||||
|
DCOUNTA = AB.DARAB2 |
||||
|
DGET = AB.MEZŐ |
||||
|
DMAX = AB.MAX |
||||
|
DMIN = AB.MIN |
||||
|
DPRODUCT = AB.SZORZAT |
||||
|
DSTDEV = AB.SZÓRÁS |
||||
|
DSTDEVP = AB.SZÓRÁS2 |
||||
|
DSUM = AB.SZUM |
||||
|
DVAR = AB.VAR |
||||
|
DVARP = AB.VAR2 |
||||
|
|
||||
|
## |
||||
|
## Dátumfüggvények (Date & Time Functions) |
||||
|
## |
||||
|
DATE = DÁTUM |
||||
|
DATEDIF = DÁTUMTÓLIG |
||||
|
DATESTRING = DÁTUMSZÖVEG |
||||
|
DATEVALUE = DÁTUMÉRTÉK |
||||
|
DAY = NAP |
||||
|
DAYS = NAPOK |
||||
|
DAYS360 = NAP360 |
||||
|
EDATE = KALK.DÁTUM |
||||
|
EOMONTH = HÓNAP.UTOLSÓ.NAP |
||||
|
HOUR = ÓRA |
||||
|
ISOWEEKNUM = ISO.HÉT.SZÁMA |
||||
|
MINUTE = PERCEK |
||||
|
MONTH = HÓNAP |
||||
|
NETWORKDAYS = ÖSSZ.MUNKANAP |
||||
|
NETWORKDAYS.INTL = ÖSSZ.MUNKANAP.INTL |
||||
|
NOW = MOST |
||||
|
SECOND = MPERC |
||||
|
THAIDAYOFWEEK = THAIHÉTNAPJA |
||||
|
THAIMONTHOFYEAR = THAIHÓNAP |
||||
|
THAIYEAR = THAIÉV |
||||
|
TIME = IDŐ |
||||
|
TIMEVALUE = IDŐÉRTÉK |
||||
|
TODAY = MA |
||||
|
WEEKDAY = HÉT.NAPJA |
||||
|
WEEKNUM = HÉT.SZÁMA |
||||
|
WORKDAY = KALK.MUNKANAP |
||||
|
WORKDAY.INTL = KALK.MUNKANAP.INTL |
||||
|
YEAR = ÉV |
||||
|
YEARFRAC = TÖRTÉV |
||||
|
|
||||
|
## |
||||
|
## Mérnöki függvények (Engineering Functions) |
||||
|
## |
||||
|
BESSELI = BESSELI |
||||
|
BESSELJ = BESSELJ |
||||
|
BESSELK = BESSELK |
||||
|
BESSELY = BESSELY |
||||
|
BIN2DEC = BIN.DEC |
||||
|
BIN2HEX = BIN.HEX |
||||
|
BIN2OCT = BIN.OKT |
||||
|
BITAND = BIT.ÉS |
||||
|
BITLSHIFT = BIT.BAL.ELTOL |
||||
|
BITOR = BIT.VAGY |
||||
|
BITRSHIFT = BIT.JOBB.ELTOL |
||||
|
BITXOR = BIT.XVAGY |
||||
|
COMPLEX = KOMPLEX |
||||
|
CONVERT = KONVERTÁLÁS |
||||
|
DEC2BIN = DEC.BIN |
||||
|
DEC2HEX = DEC.HEX |
||||
|
DEC2OCT = DEC.OKT |
||||
|
DELTA = DELTA |
||||
|
ERF = HIBAF |
||||
|
ERF.PRECISE = HIBAF.PONTOS |
||||
|
ERFC = HIBAF.KOMPLEMENTER |
||||
|
ERFC.PRECISE = HIBAFKOMPLEMENTER.PONTOS |
||||
|
GESTEP = KÜSZÖBNÉL.NAGYOBB |
||||
|
HEX2BIN = HEX.BIN |
||||
|
HEX2DEC = HEX.DEC |
||||
|
HEX2OCT = HEX.OKT |
||||
|
IMABS = KÉPZ.ABSZ |
||||
|
IMAGINARY = KÉPZETES |
||||
|
IMARGUMENT = KÉPZ.ARGUMENT |
||||
|
IMCONJUGATE = KÉPZ.KONJUGÁLT |
||||
|
IMCOS = KÉPZ.COS |
||||
|
IMCOSH = KÉPZ.COSH |
||||
|
IMCOT = KÉPZ.COT |
||||
|
IMCSC = KÉPZ.CSC |
||||
|
IMCSCH = KÉPZ.CSCH |
||||
|
IMDIV = KÉPZ.HÁNYAD |
||||
|
IMEXP = KÉPZ.EXP |
||||
|
IMLN = KÉPZ.LN |
||||
|
IMLOG10 = KÉPZ.LOG10 |
||||
|
IMLOG2 = KÉPZ.LOG2 |
||||
|
IMPOWER = KÉPZ.HATV |
||||
|
IMPRODUCT = KÉPZ.SZORZAT |
||||
|
IMREAL = KÉPZ.VALÓS |
||||
|
IMSEC = KÉPZ.SEC |
||||
|
IMSECH = KÉPZ.SECH |
||||
|
IMSIN = KÉPZ.SIN |
||||
|
IMSINH = KÉPZ.SINH |
||||
|
IMSQRT = KÉPZ.GYÖK |
||||
|
IMSUB = KÉPZ.KÜL |
||||
|
IMSUM = KÉPZ.ÖSSZEG |
||||
|
IMTAN = KÉPZ.TAN |
||||
|
OCT2BIN = OKT.BIN |
||||
|
OCT2DEC = OKT.DEC |
||||
|
OCT2HEX = OKT.HEX |
||||
|
|
||||
|
## |
||||
|
## Pénzügyi függvények (Financial Functions) |
||||
|
## |
||||
|
ACCRINT = IDŐSZAKI.KAMAT |
||||
|
ACCRINTM = LEJÁRATI.KAMAT |
||||
|
AMORDEGRC = ÉRTÉKCSÖKK.TÉNYEZŐVEL |
||||
|
AMORLINC = ÉRTÉKCSÖKK |
||||
|
COUPDAYBS = SZELVÉNYIDŐ.KEZDETTŐL |
||||
|
COUPDAYS = SZELVÉNYIDŐ |
||||
|
COUPDAYSNC = SZELVÉNYIDŐ.KIFIZETÉSTŐL |
||||
|
COUPNCD = ELSŐ.SZELVÉNYDÁTUM |
||||
|
COUPNUM = SZELVÉNYSZÁM |
||||
|
COUPPCD = UTOLSÓ.SZELVÉNYDÁTUM |
||||
|
CUMIPMT = ÖSSZES.KAMAT |
||||
|
CUMPRINC = ÖSSZES.TŐKERÉSZ |
||||
|
DB = KCS2 |
||||
|
DDB = KCSA |
||||
|
DISC = LESZÁM |
||||
|
DOLLARDE = FORINT.DEC |
||||
|
DOLLARFR = FORINT.TÖRT |
||||
|
DURATION = KAMATÉRZ |
||||
|
EFFECT = TÉNYLEGES |
||||
|
FV = JBÉ |
||||
|
FVSCHEDULE = KJÉ |
||||
|
INTRATE = KAMATRÁTA |
||||
|
IPMT = RRÉSZLET |
||||
|
IRR = BMR |
||||
|
ISPMT = LRÉSZLETKAMAT |
||||
|
MDURATION = MKAMATÉRZ |
||||
|
MIRR = MEGTÉRÜLÉS |
||||
|
NOMINAL = NÉVLEGES |
||||
|
NPER = PER.SZÁM |
||||
|
NPV = NMÉ |
||||
|
ODDFPRICE = ELTÉRŐ.EÁR |
||||
|
ODDFYIELD = ELTÉRŐ.EHOZAM |
||||
|
ODDLPRICE = ELTÉRŐ.UÁR |
||||
|
ODDLYIELD = ELTÉRŐ.UHOZAM |
||||
|
PDURATION = KAMATÉRZ.PER |
||||
|
PMT = RÉSZLET |
||||
|
PPMT = PRÉSZLET |
||||
|
PRICE = ÁR |
||||
|
PRICEDISC = ÁR.LESZÁM |
||||
|
PRICEMAT = ÁR.LEJÁRAT |
||||
|
PV = MÉ |
||||
|
RATE = RÁTA |
||||
|
RECEIVED = KAPOTT |
||||
|
RRI = MR |
||||
|
SLN = LCSA |
||||
|
SYD = ÉSZÖ |
||||
|
TBILLEQ = KJEGY.EGYENÉRT |
||||
|
TBILLPRICE = KJEGY.ÁR |
||||
|
TBILLYIELD = KJEGY.HOZAM |
||||
|
VDB = ÉCSRI |
||||
|
XIRR = XBMR |
||||
|
XNPV = XNJÉ |
||||
|
YIELD = HOZAM |
||||
|
YIELDDISC = HOZAM.LESZÁM |
||||
|
YIELDMAT = HOZAM.LEJÁRAT |
||||
|
|
||||
|
## |
||||
|
## Információs függvények (Information Functions) |
||||
|
## |
||||
|
CELL = CELLA |
||||
|
ERROR.TYPE = HIBA.TÍPUS |
||||
|
INFO = INFÓ |
||||
|
ISBLANK = ÜRES |
||||
|
ISERR = HIBA.E |
||||
|
ISERROR = HIBÁS |
||||
|
ISEVEN = PÁROSE |
||||
|
ISFORMULA = KÉPLET |
||||
|
ISLOGICAL = LOGIKAI |
||||
|
ISNA = NINCS |
||||
|
ISNONTEXT = NEM.SZÖVEG |
||||
|
ISNUMBER = SZÁM |
||||
|
ISODD = PÁRATLANE |
||||
|
ISREF = HIVATKOZÁS |
||||
|
ISTEXT = SZÖVEG.E |
||||
|
N = S |
||||
|
NA = HIÁNYZIK |
||||
|
SHEET = LAP |
||||
|
SHEETS = LAPOK |
||||
|
TYPE = TÍPUS |
||||
|
|
||||
|
## |
||||
|
## Logikai függvények (Logical Functions) |
||||
|
## |
||||
|
AND = ÉS |
||||
|
FALSE = HAMIS |
||||
|
IF = HA |
||||
|
IFERROR = HAHIBA |
||||
|
IFNA = HAHIÁNYZIK |
||||
|
IFS = HAELSŐIGAZ |
||||
|
NOT = NEM |
||||
|
OR = VAGY |
||||
|
SWITCH = ÁTVÁLT |
||||
|
TRUE = IGAZ |
||||
|
XOR = XVAGY |
||||
|
|
||||
|
## |
||||
|
## Keresési és hivatkozási függvények (Lookup & Reference Functions) |
||||
|
## |
||||
|
ADDRESS = CÍM |
||||
|
AREAS = TERÜLET |
||||
|
CHOOSE = VÁLASZT |
||||
|
COLUMN = OSZLOP |
||||
|
COLUMNS = OSZLOPOK |
||||
|
FORMULATEXT = KÉPLETSZÖVEG |
||||
|
GETPIVOTDATA = KIMUTATÁSADATOT.VESZ |
||||
|
HLOOKUP = VKERES |
||||
|
HYPERLINK = HIPERHIVATKOZÁS |
||||
|
INDEX = INDEX |
||||
|
INDIRECT = INDIREKT |
||||
|
LOOKUP = KERES |
||||
|
MATCH = HOL.VAN |
||||
|
OFFSET = ELTOLÁS |
||||
|
ROW = SOR |
||||
|
ROWS = SOROK |
||||
|
RTD = VIA |
||||
|
TRANSPOSE = TRANSZPONÁLÁS |
||||
|
VLOOKUP = FKERES |
||||
|
|
||||
|
## |
||||
|
## Matematikai és trigonometrikus függvények (Math & Trig Functions) |
||||
|
## |
||||
|
ABS = ABS |
||||
|
ACOS = ARCCOS |
||||
|
ACOSH = ACOSH |
||||
|
ACOT = ARCCOT |
||||
|
ACOTH = ARCCOTH |
||||
|
AGGREGATE = ÖSSZESÍT |
||||
|
ARABIC = ARAB |
||||
|
ASIN = ARCSIN |
||||
|
ASINH = ASINH |
||||
|
ATAN = ARCTAN |
||||
|
ATAN2 = ARCTAN2 |
||||
|
ATANH = ATANH |
||||
|
BASE = ALAP |
||||
|
CEILING.MATH = PLAFON.MAT |
||||
|
CEILING.PRECISE = PLAFON.PONTOS |
||||
|
COMBIN = KOMBINÁCIÓK |
||||
|
COMBINA = KOMBINÁCIÓK.ISM |
||||
|
COS = COS |
||||
|
COSH = COSH |
||||
|
COT = COT |
||||
|
COTH = COTH |
||||
|
CSC = CSC |
||||
|
CSCH = CSCH |
||||
|
DECIMAL = TIZEDES |
||||
|
DEGREES = FOK |
||||
|
ECMA.CEILING = ECMA.PLAFON |
||||
|
EVEN = PÁROS |
||||
|
EXP = KITEVŐ |
||||
|
FACT = FAKT |
||||
|
FACTDOUBLE = FAKTDUPLA |
||||
|
FLOOR.MATH = PADLÓ.MAT |
||||
|
FLOOR.PRECISE = PADLÓ.PONTOS |
||||
|
GCD = LKO |
||||
|
INT = INT |
||||
|
ISO.CEILING = ISO.PLAFON |
||||
|
LCM = LKT |
||||
|
LN = LN |
||||
|
LOG = LOG |
||||
|
LOG10 = LOG10 |
||||
|
MDETERM = MDETERM |
||||
|
MINVERSE = INVERZ.MÁTRIX |
||||
|
MMULT = MSZORZAT |
||||
|
MOD = MARADÉK |
||||
|
MROUND = TÖBBSZ.KEREKÍT |
||||
|
MULTINOMIAL = SZORHÁNYFAKT |
||||
|
MUNIT = MMÁTRIX |
||||
|
ODD = PÁRATLAN |
||||
|
PI = PI |
||||
|
POWER = HATVÁNY |
||||
|
PRODUCT = SZORZAT |
||||
|
QUOTIENT = KVÓCIENS |
||||
|
RADIANS = RADIÁN |
||||
|
RAND = VÉL |
||||
|
RANDBETWEEN = VÉLETLEN.KÖZÖTT |
||||
|
ROMAN = RÓMAI |
||||
|
ROUND = KEREKÍTÉS |
||||
|
ROUNDBAHTDOWN = BAHTKEREK.LE |
||||
|
ROUNDBAHTUP = BAHTKEREK.FEL |
||||
|
ROUNDDOWN = KEREK.LE |
||||
|
ROUNDUP = KEREK.FEL |
||||
|
SEC = SEC |
||||
|
SECH = SECH |
||||
|
SERIESSUM = SORÖSSZEG |
||||
|
SIGN = ELŐJEL |
||||
|
SIN = SIN |
||||
|
SINH = SINH |
||||
|
SQRT = GYÖK |
||||
|
SQRTPI = GYÖKPI |
||||
|
SUBTOTAL = RÉSZÖSSZEG |
||||
|
SUM = SZUM |
||||
|
SUMIF = SZUMHA |
||||
|
SUMIFS = SZUMHATÖBB |
||||
|
SUMPRODUCT = SZORZATÖSSZEG |
||||
|
SUMSQ = NÉGYZETÖSSZEG |
||||
|
SUMX2MY2 = SZUMX2BŐLY2 |
||||
|
SUMX2PY2 = SZUMX2MEGY2 |
||||
|
SUMXMY2 = SZUMXBŐLY2 |
||||
|
TAN = TAN |
||||
|
TANH = TANH |
||||
|
TRUNC = CSONK |
||||
|
|
||||
|
## |
||||
|
## Statisztikai függvények (Statistical Functions) |
||||
|
## |
||||
|
AVEDEV = ÁTL.ELTÉRÉS |
||||
|
AVERAGE = ÁTLAG |
||||
|
AVERAGEA = ÁTLAGA |
||||
|
AVERAGEIF = ÁTLAGHA |
||||
|
AVERAGEIFS = ÁTLAGHATÖBB |
||||
|
BETA.DIST = BÉTA.ELOSZL |
||||
|
BETA.INV = BÉTA.INVERZ |
||||
|
BINOM.DIST = BINOM.ELOSZL |
||||
|
BINOM.DIST.RANGE = BINOM.ELOSZL.TART |
||||
|
BINOM.INV = BINOM.INVERZ |
||||
|
CHISQ.DIST = KHINÉGYZET.ELOSZLÁS |
||||
|
CHISQ.DIST.RT = KHINÉGYZET.ELOSZLÁS.JOBB |
||||
|
CHISQ.INV = KHINÉGYZET.INVERZ |
||||
|
CHISQ.INV.RT = KHINÉGYZET.INVERZ.JOBB |
||||
|
CHISQ.TEST = KHINÉGYZET.PRÓBA |
||||
|
CONFIDENCE.NORM = MEGBÍZHATÓSÁG.NORM |
||||
|
CONFIDENCE.T = MEGBÍZHATÓSÁG.T |
||||
|
CORREL = KORREL |
||||
|
COUNT = DARAB |
||||
|
COUNTA = DARAB2 |
||||
|
COUNTBLANK = DARABÜRES |
||||
|
COUNTIF = DARABTELI |
||||
|
COUNTIFS = DARABHATÖBB |
||||
|
COVARIANCE.P = KOVARIANCIA.S |
||||
|
COVARIANCE.S = KOVARIANCIA.M |
||||
|
DEVSQ = SQ |
||||
|
EXPON.DIST = EXP.ELOSZL |
||||
|
F.DIST = F.ELOSZL |
||||
|
F.DIST.RT = F.ELOSZLÁS.JOBB |
||||
|
F.INV = F.INVERZ |
||||
|
F.INV.RT = F.INVERZ.JOBB |
||||
|
F.TEST = F.PRÓB |
||||
|
FISHER = FISHER |
||||
|
FISHERINV = INVERZ.FISHER |
||||
|
FORECAST.ETS = ELŐREJELZÉS.ESIM |
||||
|
FORECAST.ETS.CONFINT = ELŐREJELZÉS.ESIM.KONFINT |
||||
|
FORECAST.ETS.SEASONALITY = ELŐREJELZÉS.ESIM.SZEZONALITÁS |
||||
|
FORECAST.ETS.STAT = ELŐREJELZÉS.ESIM.STAT |
||||
|
FORECAST.LINEAR = ELŐREJELZÉS.LINEÁRIS |
||||
|
FREQUENCY = GYAKORISÁG |
||||
|
GAMMA = GAMMA |
||||
|
GAMMA.DIST = GAMMA.ELOSZL |
||||
|
GAMMA.INV = GAMMA.INVERZ |
||||
|
GAMMALN = GAMMALN |
||||
|
GAMMALN.PRECISE = GAMMALN.PONTOS |
||||
|
GAUSS = GAUSS |
||||
|
GEOMEAN = MÉRTANI.KÖZÉP |
||||
|
GROWTH = NÖV |
||||
|
HARMEAN = HARM.KÖZÉP |
||||
|
HYPGEOM.DIST = HIPGEOM.ELOSZLÁS |
||||
|
INTERCEPT = METSZ |
||||
|
KURT = CSÚCSOSSÁG |
||||
|
LARGE = NAGY |
||||
|
LINEST = LIN.ILL |
||||
|
LOGEST = LOG.ILL |
||||
|
LOGNORM.DIST = LOGNORM.ELOSZLÁS |
||||
|
LOGNORM.INV = LOGNORM.INVERZ |
||||
|
MAX = MAX |
||||
|
MAXA = MAXA |
||||
|
MAXIFS = MAXHA |
||||
|
MEDIAN = MEDIÁN |
||||
|
MIN = MIN |
||||
|
MINA = MIN2 |
||||
|
MINIFS = MINHA |
||||
|
MODE.MULT = MÓDUSZ.TÖBB |
||||
|
MODE.SNGL = MÓDUSZ.EGY |
||||
|
NEGBINOM.DIST = NEGBINOM.ELOSZLÁS |
||||
|
NORM.DIST = NORM.ELOSZLÁS |
||||
|
NORM.INV = NORM.INVERZ |
||||
|
NORM.S.DIST = NORM.S.ELOSZLÁS |
||||
|
NORM.S.INV = NORM.S.INVERZ |
||||
|
PEARSON = PEARSON |
||||
|
PERCENTILE.EXC = PERCENTILIS.KIZÁR |
||||
|
PERCENTILE.INC = PERCENTILIS.TARTALMAZ |
||||
|
PERCENTRANK.EXC = SZÁZALÉKRANG.KIZÁR |
||||
|
PERCENTRANK.INC = SZÁZALÉKRANG.TARTALMAZ |
||||
|
PERMUT = VARIÁCIÓK |
||||
|
PERMUTATIONA = VARIÁCIÓK.ISM |
||||
|
PHI = FI |
||||
|
POISSON.DIST = POISSON.ELOSZLÁS |
||||
|
PROB = VALÓSZÍNŰSÉG |
||||
|
QUARTILE.EXC = KVARTILIS.KIZÁR |
||||
|
QUARTILE.INC = KVARTILIS.TARTALMAZ |
||||
|
RANK.AVG = RANG.ÁTL |
||||
|
RANK.EQ = RANG.EGY |
||||
|
RSQ = RNÉGYZET |
||||
|
SKEW = FERDESÉG |
||||
|
SKEW.P = FERDESÉG.P |
||||
|
SLOPE = MEREDEKSÉG |
||||
|
SMALL = KICSI |
||||
|
STANDARDIZE = NORMALIZÁLÁS |
||||
|
STDEV.P = SZÓR.S |
||||
|
STDEV.S = SZÓR.M |
||||
|
STDEVA = SZÓRÁSA |
||||
|
STDEVPA = SZÓRÁSPA |
||||
|
STEYX = STHIBAYX |
||||
|
T.DIST = T.ELOSZL |
||||
|
T.DIST.2T = T.ELOSZLÁS.2SZ |
||||
|
T.DIST.RT = T.ELOSZLÁS.JOBB |
||||
|
T.INV = T.INVERZ |
||||
|
T.INV.2T = T.INVERZ.2SZ |
||||
|
T.TEST = T.PRÓB |
||||
|
TREND = TREND |
||||
|
TRIMMEAN = RÉSZÁTLAG |
||||
|
VAR.P = VAR.S |
||||
|
VAR.S = VAR.M |
||||
|
VARA = VARA |
||||
|
VARPA = VARPA |
||||
|
WEIBULL.DIST = WEIBULL.ELOSZLÁS |
||||
|
Z.TEST = Z.PRÓB |
||||
|
|
||||
|
## |
||||
|
## Szövegműveletekhez használható függvények (Text Functions) |
||||
|
## |
||||
|
BAHTTEXT = BAHTSZÖVEG |
||||
|
CHAR = KARAKTER |
||||
|
CLEAN = TISZTÍT |
||||
|
CODE = KÓD |
||||
|
CONCAT = FŰZ |
||||
|
DOLLAR = FORINT |
||||
|
EXACT = AZONOS |
||||
|
FIND = SZÖVEG.TALÁL |
||||
|
FIXED = FIX |
||||
|
ISTHAIDIGIT = ON.THAI.NUMERO |
||||
|
LEFT = BAL |
||||
|
LEN = HOSSZ |
||||
|
LOWER = KISBETŰ |
||||
|
MID = KÖZÉP |
||||
|
NUMBERSTRING = SZÁM.BETŰVEL |
||||
|
NUMBERVALUE = SZÁMÉRTÉK |
||||
|
PHONETIC = FONETIKUS |
||||
|
PROPER = TNÉV |
||||
|
REPLACE = CSERE |
||||
|
REPT = SOKSZOR |
||||
|
RIGHT = JOBB |
||||
|
SEARCH = SZÖVEG.KERES |
||||
|
SUBSTITUTE = HELYETTE |
||||
|
T = T |
||||
|
TEXT = SZÖVEG |
||||
|
TEXTJOIN = SZÖVEGÖSSZEFŰZÉS |
||||
|
THAIDIGIT = THAISZÁM |
||||
|
THAINUMSOUND = THAISZÁMHANG |
||||
|
THAINUMSTRING = THAISZÁMKAR |
||||
|
THAISTRINGLENGTH = THAIKARHOSSZ |
||||
|
TRIM = KIMETSZ |
||||
|
UNICHAR = UNIKARAKTER |
||||
|
UNICODE = UNICODE |
||||
|
UPPER = NAGYBETŰS |
||||
|
VALUE = ÉRTÉK |
||||
|
|
||||
|
## |
||||
|
## Webes függvények (Web Functions) |
||||
|
## |
||||
|
ENCODEURL = URL.KÓDOL |
||||
|
FILTERXML = XMLSZŰRÉS |
||||
|
WEBSERVICE = WEBSZOLGÁLTATÁS |
||||
|
|
||||
|
## |
||||
|
## Kompatibilitási függvények (Compatibility Functions) |
||||
|
## |
||||
|
BETADIST = BÉTA.ELOSZLÁS |
||||
|
BETAINV = INVERZ.BÉTA |
||||
|
BINOMDIST = BINOM.ELOSZLÁS |
||||
|
CEILING = PLAFON |
||||
|
CHIDIST = KHI.ELOSZLÁS |
||||
|
CHIINV = INVERZ.KHI |
||||
|
CHITEST = KHI.PRÓBA |
||||
|
CONCATENATE = ÖSSZEFŰZ |
||||
|
CONFIDENCE = MEGBÍZHATÓSÁG |
||||
|
COVAR = KOVAR |
||||
|
CRITBINOM = KRITBINOM |
||||
|
EXPONDIST = EXP.ELOSZLÁS |
||||
|
FDIST = F.ELOSZLÁS |
||||
|
FINV = INVERZ.F |
||||
|
FLOOR = PADLÓ |
||||
|
FORECAST = ELŐREJELZÉS |
||||
|
FTEST = F.PRÓBA |
||||
|
GAMMADIST = GAMMA.ELOSZLÁS |
||||
|
GAMMAINV = INVERZ.GAMMA |
||||
|
HYPGEOMDIST = HIPERGEOM.ELOSZLÁS |
||||
|
LOGINV = INVERZ.LOG.ELOSZLÁS |
||||
|
LOGNORMDIST = LOG.ELOSZLÁS |
||||
|
MODE = MÓDUSZ |
||||
|
NEGBINOMDIST = NEGBINOM.ELOSZL |
||||
|
NORMDIST = NORM.ELOSZL |
||||
|
NORMINV = INVERZ.NORM |
||||
|
NORMSDIST = STNORMELOSZL |
||||
|
NORMSINV = INVERZ.STNORM |
||||
|
PERCENTILE = PERCENTILIS |
||||
|
PERCENTRANK = SZÁZALÉKRANG |
||||
|
POISSON = POISSON |
||||
|
QUARTILE = KVARTILIS |
||||
|
RANK = SORSZÁM |
||||
|
STDEV = SZÓRÁS |
||||
|
STDEVP = SZÓRÁSP |
||||
|
TDIST = T.ELOSZLÁS |
||||
|
TINV = INVERZ.T |
||||
|
TTEST = T.PRÓBA |
||||
|
VAR = VAR |
||||
|
VARP = VARP |
||||
|
WEIBULL = WEIBULL |
||||
|
ZTEST = Z.PRÓBA |
||||
@ -0,0 +1,537 @@ |
|||||
|
############################################################ |
||||
|
## |
||||
|
## PhpSpreadsheet - function name translations |
||||
|
## |
||||
|
## Italiano (Italian) |
||||
|
## |
||||
|
############################################################ |
||||
|
|
||||
|
|
||||
|
## |
||||
|
## Funzioni cubo (Cube Functions) |
||||
|
## |
||||
|
CUBEKPIMEMBER = MEMBRO.KPI.CUBO |
||||
|
CUBEMEMBER = MEMBRO.CUBO |
||||
|
CUBEMEMBERPROPERTY = PROPRIETÀ.MEMBRO.CUBO |
||||
|
CUBERANKEDMEMBER = MEMBRO.CUBO.CON.RANGO |
||||
|
CUBESET = SET.CUBO |
||||
|
CUBESETCOUNT = CONTA.SET.CUBO |
||||
|
CUBEVALUE = VALORE.CUBO |
||||
|
|
||||
|
## |
||||
|
## Funzioni di database (Database Functions) |
||||
|
## |
||||
|
DAVERAGE = DB.MEDIA |
||||
|
DCOUNT = DB.CONTA.NUMERI |
||||
|
DCOUNTA = DB.CONTA.VALORI |
||||
|
DGET = DB.VALORI |
||||
|
DMAX = DB.MAX |
||||
|
DMIN = DB.MIN |
||||
|
DPRODUCT = DB.PRODOTTO |
||||
|
DSTDEV = DB.DEV.ST |
||||
|
DSTDEVP = DB.DEV.ST.POP |
||||
|
DSUM = DB.SOMMA |
||||
|
DVAR = DB.VAR |
||||
|
DVARP = DB.VAR.POP |
||||
|
|
||||
|
## |
||||
|
## Funzioni data e ora (Date & Time Functions) |
||||
|
## |
||||
|
DATE = DATA |
||||
|
DATEDIF = DATA.DIFF |
||||
|
DATESTRING = DATA.STRINGA |
||||
|
DATEVALUE = DATA.VALORE |
||||
|
DAY = GIORNO |
||||
|
DAYS = GIORNI |
||||
|
DAYS360 = GIORNO360 |
||||
|
EDATE = DATA.MESE |
||||
|
EOMONTH = FINE.MESE |
||||
|
HOUR = ORA |
||||
|
ISOWEEKNUM = NUM.SETTIMANA.ISO |
||||
|
MINUTE = MINUTO |
||||
|
MONTH = MESE |
||||
|
NETWORKDAYS = GIORNI.LAVORATIVI.TOT |
||||
|
NETWORKDAYS.INTL = GIORNI.LAVORATIVI.TOT.INTL |
||||
|
NOW = ADESSO |
||||
|
SECOND = SECONDO |
||||
|
THAIDAYOFWEEK = THAIGIORNODELLASETTIMANA |
||||
|
THAIMONTHOFYEAR = THAIMESEDELLANNO |
||||
|
THAIYEAR = THAIANNO |
||||
|
TIME = ORARIO |
||||
|
TIMEVALUE = ORARIO.VALORE |
||||
|
TODAY = OGGI |
||||
|
WEEKDAY = GIORNO.SETTIMANA |
||||
|
WEEKNUM = NUM.SETTIMANA |
||||
|
WORKDAY = GIORNO.LAVORATIVO |
||||
|
WORKDAY.INTL = GIORNO.LAVORATIVO.INTL |
||||
|
YEAR = ANNO |
||||
|
YEARFRAC = FRAZIONE.ANNO |
||||
|
|
||||
|
## |
||||
|
## Funzioni ingegneristiche (Engineering Functions) |
||||
|
## |
||||
|
BESSELI = BESSEL.I |
||||
|
BESSELJ = BESSEL.J |
||||
|
BESSELK = BESSEL.K |
||||
|
BESSELY = BESSEL.Y |
||||
|
BIN2DEC = BINARIO.DECIMALE |
||||
|
BIN2HEX = BINARIO.HEX |
||||
|
BIN2OCT = BINARIO.OCT |
||||
|
BITAND = BITAND |
||||
|
BITLSHIFT = BIT.SPOSTA.SX |
||||
|
BITOR = BITOR |
||||
|
BITRSHIFT = BIT.SPOSTA.DX |
||||
|
BITXOR = BITXOR |
||||
|
COMPLEX = COMPLESSO |
||||
|
CONVERT = CONVERTI |
||||
|
DEC2BIN = DECIMALE.BINARIO |
||||
|
DEC2HEX = DECIMALE.HEX |
||||
|
DEC2OCT = DECIMALE.OCT |
||||
|
DELTA = DELTA |
||||
|
ERF = FUNZ.ERRORE |
||||
|
ERF.PRECISE = FUNZ.ERRORE.PRECISA |
||||
|
ERFC = FUNZ.ERRORE.COMP |
||||
|
ERFC.PRECISE = FUNZ.ERRORE.COMP.PRECISA |
||||
|
GESTEP = SOGLIA |
||||
|
HEX2BIN = HEX.BINARIO |
||||
|
HEX2DEC = HEX.DECIMALE |
||||
|
HEX2OCT = HEX.OCT |
||||
|
IMABS = COMP.MODULO |
||||
|
IMAGINARY = COMP.IMMAGINARIO |
||||
|
IMARGUMENT = COMP.ARGOMENTO |
||||
|
IMCONJUGATE = COMP.CONIUGATO |
||||
|
IMCOS = COMP.COS |
||||
|
IMCOSH = COMP.COSH |
||||
|
IMCOT = COMP.COT |
||||
|
IMCSC = COMP.CSC |
||||
|
IMCSCH = COMP.CSCH |
||||
|
IMDIV = COMP.DIV |
||||
|
IMEXP = COMP.EXP |
||||
|
IMLN = COMP.LN |
||||
|
IMLOG10 = COMP.LOG10 |
||||
|
IMLOG2 = COMP.LOG2 |
||||
|
IMPOWER = COMP.POTENZA |
||||
|
IMPRODUCT = COMP.PRODOTTO |
||||
|
IMREAL = COMP.PARTE.REALE |
||||
|
IMSEC = COMP.SEC |
||||
|
IMSECH = COMP.SECH |
||||
|
IMSIN = COMP.SEN |
||||
|
IMSINH = COMP.SENH |
||||
|
IMSQRT = COMP.RADQ |
||||
|
IMSUB = COMP.DIFF |
||||
|
IMSUM = COMP.SOMMA |
||||
|
IMTAN = COMP.TAN |
||||
|
OCT2BIN = OCT.BINARIO |
||||
|
OCT2DEC = OCT.DECIMALE |
||||
|
OCT2HEX = OCT.HEX |
||||
|
|
||||
|
## |
||||
|
## Funzioni finanziarie (Financial Functions) |
||||
|
## |
||||
|
ACCRINT = INT.MATURATO.PER |
||||
|
ACCRINTM = INT.MATURATO.SCAD |
||||
|
AMORDEGRC = AMMORT.DEGR |
||||
|
AMORLINC = AMMORT.PER |
||||
|
COUPDAYBS = GIORNI.CED.INIZ.LIQ |
||||
|
COUPDAYS = GIORNI.CED |
||||
|
COUPDAYSNC = GIORNI.CED.NUOVA |
||||
|
COUPNCD = DATA.CED.SUCC |
||||
|
COUPNUM = NUM.CED |
||||
|
COUPPCD = DATA.CED.PREC |
||||
|
CUMIPMT = INT.CUMUL |
||||
|
CUMPRINC = CAP.CUM |
||||
|
DB = AMMORT.FISSO |
||||
|
DDB = AMMORT |
||||
|
DISC = TASSO.SCONTO |
||||
|
DOLLARDE = VALUTA.DEC |
||||
|
DOLLARFR = VALUTA.FRAZ |
||||
|
DURATION = DURATA |
||||
|
EFFECT = EFFETTIVO |
||||
|
FV = VAL.FUT |
||||
|
FVSCHEDULE = VAL.FUT.CAPITALE |
||||
|
INTRATE = TASSO.INT |
||||
|
IPMT = INTERESSI |
||||
|
IRR = TIR.COST |
||||
|
ISPMT = INTERESSE.RATA |
||||
|
MDURATION = DURATA.M |
||||
|
MIRR = TIR.VAR |
||||
|
NOMINAL = NOMINALE |
||||
|
NPER = NUM.RATE |
||||
|
NPV = VAN |
||||
|
ODDFPRICE = PREZZO.PRIMO.IRR |
||||
|
ODDFYIELD = REND.PRIMO.IRR |
||||
|
ODDLPRICE = PREZZO.ULTIMO.IRR |
||||
|
ODDLYIELD = REND.ULTIMO.IRR |
||||
|
PDURATION = DURATA.P |
||||
|
PMT = RATA |
||||
|
PPMT = P.RATA |
||||
|
PRICE = PREZZO |
||||
|
PRICEDISC = PREZZO.SCONT |
||||
|
PRICEMAT = PREZZO.SCAD |
||||
|
PV = VA |
||||
|
RATE = TASSO |
||||
|
RECEIVED = RICEV.SCAD |
||||
|
RRI = RIT.INVEST.EFFETT |
||||
|
SLN = AMMORT.COST |
||||
|
SYD = AMMORT.ANNUO |
||||
|
TBILLEQ = BOT.EQUIV |
||||
|
TBILLPRICE = BOT.PREZZO |
||||
|
TBILLYIELD = BOT.REND |
||||
|
VDB = AMMORT.VAR |
||||
|
XIRR = TIR.X |
||||
|
XNPV = VAN.X |
||||
|
YIELD = REND |
||||
|
YIELDDISC = REND.TITOLI.SCONT |
||||
|
YIELDMAT = REND.SCAD |
||||
|
|
||||
|
## |
||||
|
## Funzioni relative alle informazioni (Information Functions) |
||||
|
## |
||||
|
CELL = CELLA |
||||
|
ERROR.TYPE = ERRORE.TIPO |
||||
|
INFO = AMBIENTE.INFO |
||||
|
ISBLANK = VAL.VUOTO |
||||
|
ISERR = VAL.ERR |
||||
|
ISERROR = VAL.ERRORE |
||||
|
ISEVEN = VAL.PARI |
||||
|
ISFORMULA = VAL.FORMULA |
||||
|
ISLOGICAL = VAL.LOGICO |
||||
|
ISNA = VAL.NON.DISP |
||||
|
ISNONTEXT = VAL.NON.TESTO |
||||
|
ISNUMBER = VAL.NUMERO |
||||
|
ISODD = VAL.DISPARI |
||||
|
ISREF = VAL.RIF |
||||
|
ISTEXT = VAL.TESTO |
||||
|
N = NUM |
||||
|
NA = NON.DISP |
||||
|
SHEET = FOGLIO |
||||
|
SHEETS = FOGLI |
||||
|
TYPE = TIPO |
||||
|
|
||||
|
## |
||||
|
## Funzioni logiche (Logical Functions) |
||||
|
## |
||||
|
AND = E |
||||
|
FALSE = FALSO |
||||
|
IF = SE |
||||
|
IFERROR = SE.ERRORE |
||||
|
IFNA = SE.NON.DISP. |
||||
|
IFS = PIÙ.SE |
||||
|
NOT = NON |
||||
|
OR = O |
||||
|
SWITCH = SWITCH |
||||
|
TRUE = VERO |
||||
|
XOR = XOR |
||||
|
|
||||
|
## |
||||
|
## Funzioni di ricerca e di riferimento (Lookup & Reference Functions) |
||||
|
## |
||||
|
ADDRESS = INDIRIZZO |
||||
|
AREAS = AREE |
||||
|
CHOOSE = SCEGLI |
||||
|
COLUMN = RIF.COLONNA |
||||
|
COLUMNS = COLONNE |
||||
|
FORMULATEXT = TESTO.FORMULA |
||||
|
GETPIVOTDATA = INFO.DATI.TAB.PIVOT |
||||
|
HLOOKUP = CERCA.ORIZZ |
||||
|
HYPERLINK = COLLEG.IPERTESTUALE |
||||
|
INDEX = INDICE |
||||
|
INDIRECT = INDIRETTO |
||||
|
LOOKUP = CERCA |
||||
|
MATCH = CONFRONTA |
||||
|
OFFSET = SCARTO |
||||
|
ROW = RIF.RIGA |
||||
|
ROWS = RIGHE |
||||
|
RTD = DATITEMPOREALE |
||||
|
TRANSPOSE = MATR.TRASPOSTA |
||||
|
VLOOKUP = CERCA.VERT |
||||
|
|
||||
|
## |
||||
|
## Funzioni matematiche e trigonometriche (Math & Trig Functions) |
||||
|
## |
||||
|
ABS = ASS |
||||
|
ACOS = ARCCOS |
||||
|
ACOSH = ARCCOSH |
||||
|
ACOT = ARCCOT |
||||
|
ACOTH = ARCCOTH |
||||
|
AGGREGATE = AGGREGA |
||||
|
ARABIC = ARABO |
||||
|
ASIN = ARCSEN |
||||
|
ASINH = ARCSENH |
||||
|
ATAN = ARCTAN |
||||
|
ATAN2 = ARCTAN.2 |
||||
|
ATANH = ARCTANH |
||||
|
BASE = BASE |
||||
|
CEILING.MATH = ARROTONDA.ECCESSO.MAT |
||||
|
CEILING.PRECISE = ARROTONDA.ECCESSO.PRECISA |
||||
|
COMBIN = COMBINAZIONE |
||||
|
COMBINA = COMBINAZIONE.VALORI |
||||
|
COS = COS |
||||
|
COSH = COSH |
||||
|
COT = COT |
||||
|
COTH = COTH |
||||
|
CSC = CSC |
||||
|
CSCH = CSCH |
||||
|
DECIMAL = DECIMALE |
||||
|
DEGREES = GRADI |
||||
|
ECMA.CEILING = ECMA.ARROTONDA.ECCESSO |
||||
|
EVEN = PARI |
||||
|
EXP = EXP |
||||
|
FACT = FATTORIALE |
||||
|
FACTDOUBLE = FATT.DOPPIO |
||||
|
FLOOR.MATH = ARROTONDA.DIFETTO.MAT |
||||
|
FLOOR.PRECISE = ARROTONDA.DIFETTO.PRECISA |
||||
|
GCD = MCD |
||||
|
INT = INT |
||||
|
ISO.CEILING = ISO.ARROTONDA.ECCESSO |
||||
|
LCM = MCM |
||||
|
LN = LN |
||||
|
LOG = LOG |
||||
|
LOG10 = LOG10 |
||||
|
MDETERM = MATR.DETERM |
||||
|
MINVERSE = MATR.INVERSA |
||||
|
MMULT = MATR.PRODOTTO |
||||
|
MOD = RESTO |
||||
|
MROUND = ARROTONDA.MULTIPLO |
||||
|
MULTINOMIAL = MULTINOMIALE |
||||
|
MUNIT = MATR.UNIT |
||||
|
ODD = DISPARI |
||||
|
PI = PI.GRECO |
||||
|
POWER = POTENZA |
||||
|
PRODUCT = PRODOTTO |
||||
|
QUOTIENT = QUOZIENTE |
||||
|
RADIANS = RADIANTI |
||||
|
RAND = CASUALE |
||||
|
RANDBETWEEN = CASUALE.TRA |
||||
|
ROMAN = ROMANO |
||||
|
ROUND = ARROTONDA |
||||
|
ROUNDBAHTDOWN = ARROTBAHTGIU |
||||
|
ROUNDBAHTUP = ARROTBAHTSU |
||||
|
ROUNDDOWN = ARROTONDA.PER.DIF |
||||
|
ROUNDUP = ARROTONDA.PER.ECC |
||||
|
SEC = SEC |
||||
|
SECH = SECH |
||||
|
SERIESSUM = SOMMA.SERIE |
||||
|
SIGN = SEGNO |
||||
|
SIN = SEN |
||||
|
SINH = SENH |
||||
|
SQRT = RADQ |
||||
|
SQRTPI = RADQ.PI.GRECO |
||||
|
SUBTOTAL = SUBTOTALE |
||||
|
SUM = SOMMA |
||||
|
SUMIF = SOMMA.SE |
||||
|
SUMIFS = SOMMA.PIÙ.SE |
||||
|
SUMPRODUCT = MATR.SOMMA.PRODOTTO |
||||
|
SUMSQ = SOMMA.Q |
||||
|
SUMX2MY2 = SOMMA.DIFF.Q |
||||
|
SUMX2PY2 = SOMMA.SOMMA.Q |
||||
|
SUMXMY2 = SOMMA.Q.DIFF |
||||
|
TAN = TAN |
||||
|
TANH = TANH |
||||
|
TRUNC = TRONCA |
||||
|
|
||||
|
## |
||||
|
## Funzioni statistiche (Statistical Functions) |
||||
|
## |
||||
|
AVEDEV = MEDIA.DEV |
||||
|
AVERAGE = MEDIA |
||||
|
AVERAGEA = MEDIA.VALORI |
||||
|
AVERAGEIF = MEDIA.SE |
||||
|
AVERAGEIFS = MEDIA.PIÙ.SE |
||||
|
BETA.DIST = DISTRIB.BETA.N |
||||
|
BETA.INV = INV.BETA.N |
||||
|
BINOM.DIST = DISTRIB.BINOM.N |
||||
|
BINOM.DIST.RANGE = INTERVALLO.DISTRIB.BINOM.N. |
||||
|
BINOM.INV = INV.BINOM |
||||
|
CHISQ.DIST = DISTRIB.CHI.QUAD |
||||
|
CHISQ.DIST.RT = DISTRIB.CHI.QUAD.DS |
||||
|
CHISQ.INV = INV.CHI.QUAD |
||||
|
CHISQ.INV.RT = INV.CHI.QUAD.DS |
||||
|
CHISQ.TEST = TEST.CHI.QUAD |
||||
|
CONFIDENCE.NORM = CONFIDENZA.NORM |
||||
|
CONFIDENCE.T = CONFIDENZA.T |
||||
|
CORREL = CORRELAZIONE |
||||
|
COUNT = CONTA.NUMERI |
||||
|
COUNTA = CONTA.VALORI |
||||
|
COUNTBLANK = CONTA.VUOTE |
||||
|
COUNTIF = CONTA.SE |
||||
|
COUNTIFS = CONTA.PIÙ.SE |
||||
|
COVARIANCE.P = COVARIANZA.P |
||||
|
COVARIANCE.S = COVARIANZA.C |
||||
|
DEVSQ = DEV.Q |
||||
|
EXPON.DIST = DISTRIB.EXP.N |
||||
|
F.DIST = DISTRIBF |
||||
|
F.DIST.RT = DISTRIB.F.DS |
||||
|
F.INV = INVF |
||||
|
F.INV.RT = INV.F.DS |
||||
|
F.TEST = TESTF |
||||
|
FISHER = FISHER |
||||
|
FISHERINV = INV.FISHER |
||||
|
FORECAST.ETS = PREVISIONE.ETS |
||||
|
FORECAST.ETS.CONFINT = PREVISIONE.ETS.INTCONF |
||||
|
FORECAST.ETS.SEASONALITY = PREVISIONE.ETS.STAGIONALITÀ |
||||
|
FORECAST.ETS.STAT = PREVISIONE.ETS.STAT |
||||
|
FORECAST.LINEAR = PREVISIONE.LINEARE |
||||
|
FREQUENCY = FREQUENZA |
||||
|
GAMMA = GAMMA |
||||
|
GAMMA.DIST = DISTRIB.GAMMA.N |
||||
|
GAMMA.INV = INV.GAMMA.N |
||||
|
GAMMALN = LN.GAMMA |
||||
|
GAMMALN.PRECISE = LN.GAMMA.PRECISA |
||||
|
GAUSS = GAUSS |
||||
|
GEOMEAN = MEDIA.GEOMETRICA |
||||
|
GROWTH = CRESCITA |
||||
|
HARMEAN = MEDIA.ARMONICA |
||||
|
HYPGEOM.DIST = DISTRIB.IPERGEOM.N |
||||
|
INTERCEPT = INTERCETTA |
||||
|
KURT = CURTOSI |
||||
|
LARGE = GRANDE |
||||
|
LINEST = REGR.LIN |
||||
|
LOGEST = REGR.LOG |
||||
|
LOGNORM.DIST = DISTRIB.LOGNORM.N |
||||
|
LOGNORM.INV = INV.LOGNORM.N |
||||
|
MAX = MAX |
||||
|
MAXA = MAX.VALORI |
||||
|
MAXIFS = MAX.PIÙ.SE |
||||
|
MEDIAN = MEDIANA |
||||
|
MIN = MIN |
||||
|
MINA = MIN.VALORI |
||||
|
MINIFS = MIN.PIÙ.SE |
||||
|
MODE.MULT = MODA.MULT |
||||
|
MODE.SNGL = MODA.SNGL |
||||
|
NEGBINOM.DIST = DISTRIB.BINOM.NEG.N |
||||
|
NORM.DIST = DISTRIB.NORM.N |
||||
|
NORM.INV = INV.NORM.N |
||||
|
NORM.S.DIST = DISTRIB.NORM.ST.N |
||||
|
NORM.S.INV = INV.NORM.S |
||||
|
PEARSON = PEARSON |
||||
|
PERCENTILE.EXC = ESC.PERCENTILE |
||||
|
PERCENTILE.INC = INC.PERCENTILE |
||||
|
PERCENTRANK.EXC = ESC.PERCENT.RANGO |
||||
|
PERCENTRANK.INC = INC.PERCENT.RANGO |
||||
|
PERMUT = PERMUTAZIONE |
||||
|
PERMUTATIONA = PERMUTAZIONE.VALORI |
||||
|
PHI = PHI |
||||
|
POISSON.DIST = DISTRIB.POISSON |
||||
|
PROB = PROBABILITÀ |
||||
|
QUARTILE.EXC = ESC.QUARTILE |
||||
|
QUARTILE.INC = INC.QUARTILE |
||||
|
RANK.AVG = RANGO.MEDIA |
||||
|
RANK.EQ = RANGO.UG |
||||
|
RSQ = RQ |
||||
|
SKEW = ASIMMETRIA |
||||
|
SKEW.P = ASIMMETRIA.P |
||||
|
SLOPE = PENDENZA |
||||
|
SMALL = PICCOLO |
||||
|
STANDARDIZE = NORMALIZZA |
||||
|
STDEV.P = DEV.ST.P |
||||
|
STDEV.S = DEV.ST.C |
||||
|
STDEVA = DEV.ST.VALORI |
||||
|
STDEVPA = DEV.ST.POP.VALORI |
||||
|
STEYX = ERR.STD.YX |
||||
|
T.DIST = DISTRIB.T.N |
||||
|
T.DIST.2T = DISTRIB.T.2T |
||||
|
T.DIST.RT = DISTRIB.T.DS |
||||
|
T.INV = INVT |
||||
|
T.INV.2T = INV.T.2T |
||||
|
T.TEST = TESTT |
||||
|
TREND = TENDENZA |
||||
|
TRIMMEAN = MEDIA.TRONCATA |
||||
|
VAR.P = VAR.P |
||||
|
VAR.S = VAR.C |
||||
|
VARA = VAR.VALORI |
||||
|
VARPA = VAR.POP.VALORI |
||||
|
WEIBULL.DIST = DISTRIB.WEIBULL |
||||
|
Z.TEST = TESTZ |
||||
|
|
||||
|
## |
||||
|
## Funzioni di testo (Text Functions) |
||||
|
## |
||||
|
BAHTTEXT = BAHTTESTO |
||||
|
CHAR = CODICE.CARATT |
||||
|
CLEAN = LIBERA |
||||
|
CODE = CODICE |
||||
|
CONCAT = CONCAT |
||||
|
DOLLAR = VALUTA |
||||
|
EXACT = IDENTICO |
||||
|
FIND = TROVA |
||||
|
FIXED = FISSO |
||||
|
ISTHAIDIGIT = ÈTHAICIFRA |
||||
|
LEFT = SINISTRA |
||||
|
LEN = LUNGHEZZA |
||||
|
LOWER = MINUSC |
||||
|
MID = STRINGA.ESTRAI |
||||
|
NUMBERSTRING = NUMERO.STRINGA |
||||
|
NUMBERVALUE = NUMERO.VALORE |
||||
|
PHONETIC = FURIGANA |
||||
|
PROPER = MAIUSC.INIZ |
||||
|
REPLACE = RIMPIAZZA |
||||
|
REPT = RIPETI |
||||
|
RIGHT = DESTRA |
||||
|
SEARCH = RICERCA |
||||
|
SUBSTITUTE = SOSTITUISCI |
||||
|
T = T |
||||
|
TEXT = TESTO |
||||
|
TEXTJOIN = TESTO.UNISCI |
||||
|
THAIDIGIT = THAICIFRA |
||||
|
THAINUMSOUND = THAINUMSUONO |
||||
|
THAINUMSTRING = THAISZÁMKAR |
||||
|
THAISTRINGLENGTH = THAILUNGSTRINGA |
||||
|
TRIM = ANNULLA.SPAZI |
||||
|
UNICHAR = CARATT.UNI |
||||
|
UNICODE = UNICODE |
||||
|
UPPER = MAIUSC |
||||
|
VALUE = VALORE |
||||
|
|
||||
|
## |
||||
|
## Funzioni Web (Web Functions) |
||||
|
## |
||||
|
ENCODEURL = CODIFICA.URL |
||||
|
FILTERXML = FILTRO.XML |
||||
|
WEBSERVICE = SERVIZIO.WEB |
||||
|
|
||||
|
## |
||||
|
## Funzioni di compatibilità (Compatibility Functions) |
||||
|
## |
||||
|
BETADIST = DISTRIB.BETA |
||||
|
BETAINV = INV.BETA |
||||
|
BINOMDIST = DISTRIB.BINOM |
||||
|
CEILING = ARROTONDA.ECCESSO |
||||
|
CHIDIST = DISTRIB.CHI |
||||
|
CHIINV = INV.CHI |
||||
|
CHITEST = TEST.CHI |
||||
|
CONCATENATE = CONCATENA |
||||
|
CONFIDENCE = CONFIDENZA |
||||
|
COVAR = COVARIANZA |
||||
|
CRITBINOM = CRIT.BINOM |
||||
|
EXPONDIST = DISTRIB.EXP |
||||
|
FDIST = DISTRIB.F |
||||
|
FINV = INV.F |
||||
|
FLOOR = ARROTONDA.DIFETTO |
||||
|
FORECAST = PREVISIONE |
||||
|
FTEST = TEST.F |
||||
|
GAMMADIST = DISTRIB.GAMMA |
||||
|
GAMMAINV = INV.GAMMA |
||||
|
HYPGEOMDIST = DISTRIB.IPERGEOM |
||||
|
LOGINV = INV.LOGNORM |
||||
|
LOGNORMDIST = DISTRIB.LOGNORM |
||||
|
MODE = MODA |
||||
|
NEGBINOMDIST = DISTRIB.BINOM.NEG |
||||
|
NORMDIST = DISTRIB.NORM |
||||
|
NORMINV = INV.NORM |
||||
|
NORMSDIST = DISTRIB.NORM.ST |
||||
|
NORMSINV = INV.NORM.ST |
||||
|
PERCENTILE = PERCENTILE |
||||
|
PERCENTRANK = PERCENT.RANGO |
||||
|
POISSON = POISSON |
||||
|
QUARTILE = QUARTILE |
||||
|
RANK = RANGO |
||||
|
STDEV = DEV.ST |
||||
|
STDEVP = DEV.ST.POP |
||||
|
TDIST = DISTRIB.T |
||||
|
TINV = INV.T |
||||
|
TTEST = TEST.T |
||||
|
VAR = VAR |
||||
|
VARP = VAR.POP |
||||
|
WEIBULL = WEIBULL |
||||
|
ZTEST = TEST.Z |
||||
@ -0,0 +1,538 @@ |
|||||
|
############################################################ |
||||
|
## |
||||
|
## PhpSpreadsheet - function name translations |
||||
|
## |
||||
|
## Norsk Bokmål (Norwegian Bokmål) |
||||
|
## |
||||
|
############################################################ |
||||
|
|
||||
|
|
||||
|
## |
||||
|
## Kubefunksjoner (Cube Functions) |
||||
|
## |
||||
|
CUBEKPIMEMBER = KUBEKPIMEDLEM |
||||
|
CUBEMEMBER = KUBEMEDLEM |
||||
|
CUBEMEMBERPROPERTY = KUBEMEDLEMEGENSKAP |
||||
|
CUBERANKEDMEMBER = KUBERANGERTMEDLEM |
||||
|
CUBESET = KUBESETT |
||||
|
CUBESETCOUNT = KUBESETTANTALL |
||||
|
CUBEVALUE = KUBEVERDI |
||||
|
|
||||
|
## |
||||
|
## Databasefunksjoner (Database Functions) |
||||
|
## |
||||
|
DAVERAGE = DGJENNOMSNITT |
||||
|
DCOUNT = DANTALL |
||||
|
DCOUNTA = DANTALLA |
||||
|
DGET = DHENT |
||||
|
DMAX = DMAKS |
||||
|
DMIN = DMIN |
||||
|
DPRODUCT = DPRODUKT |
||||
|
DSTDEV = DSTDAV |
||||
|
DSTDEVP = DSTDAVP |
||||
|
DSUM = DSUMMER |
||||
|
DVAR = DVARIANS |
||||
|
DVARP = DVARIANSP |
||||
|
|
||||
|
## |
||||
|
## Dato- og tidsfunksjoner (Date & Time Functions) |
||||
|
## |
||||
|
DATE = DATO |
||||
|
DATEDIF = DATODIFF |
||||
|
DATESTRING = DATOSTRENG |
||||
|
DATEVALUE = DATOVERDI |
||||
|
DAY = DAG |
||||
|
DAYS = DAGER |
||||
|
DAYS360 = DAGER360 |
||||
|
EDATE = DAG.ETTER |
||||
|
EOMONTH = MÅNEDSSLUTT |
||||
|
HOUR = TIME |
||||
|
ISOWEEKNUM = ISOUKENR |
||||
|
MINUTE = MINUTT |
||||
|
MONTH = MÅNED |
||||
|
NETWORKDAYS = NETT.ARBEIDSDAGER |
||||
|
NETWORKDAYS.INTL = NETT.ARBEIDSDAGER.INTL |
||||
|
NOW = NÅ |
||||
|
SECOND = SEKUND |
||||
|
THAIDAYOFWEEK = THAIUKEDAG |
||||
|
THAIMONTHOFYEAR = THAIMÅNED |
||||
|
THAIYEAR = THAIÅR |
||||
|
TIME = TID |
||||
|
TIMEVALUE = TIDSVERDI |
||||
|
TODAY = IDAG |
||||
|
WEEKDAY = UKEDAG |
||||
|
WEEKNUM = UKENR |
||||
|
WORKDAY = ARBEIDSDAG |
||||
|
WORKDAY.INTL = ARBEIDSDAG.INTL |
||||
|
YEAR = ÅR |
||||
|
YEARFRAC = ÅRDEL |
||||
|
|
||||
|
## |
||||
|
## Tekniske funksjoner (Engineering Functions) |
||||
|
## |
||||
|
BESSELI = BESSELI |
||||
|
BESSELJ = BESSELJ |
||||
|
BESSELK = BESSELK |
||||
|
BESSELY = BESSELY |
||||
|
BIN2DEC = BINTILDES |
||||
|
BIN2HEX = BINTILHEKS |
||||
|
BIN2OCT = BINTILOKT |
||||
|
BITAND = BITOG |
||||
|
BITLSHIFT = BITVFORSKYV |
||||
|
BITOR = BITELLER |
||||
|
BITRSHIFT = BITHFORSKYV |
||||
|
BITXOR = BITEKSKLUSIVELLER |
||||
|
COMPLEX = KOMPLEKS |
||||
|
CONVERT = KONVERTER |
||||
|
DEC2BIN = DESTILBIN |
||||
|
DEC2HEX = DESTILHEKS |
||||
|
DEC2OCT = DESTILOKT |
||||
|
DELTA = DELTA |
||||
|
ERF = FEILF |
||||
|
ERF.PRECISE = FEILF.PRESIS |
||||
|
ERFC = FEILFK |
||||
|
ERFC.PRECISE = FEILFK.PRESIS |
||||
|
GESTEP = GRENSEVERDI |
||||
|
HEX2BIN = HEKSTILBIN |
||||
|
HEX2DEC = HEKSTILDES |
||||
|
HEX2OCT = HEKSTILOKT |
||||
|
IMABS = IMABS |
||||
|
IMAGINARY = IMAGINÆR |
||||
|
IMARGUMENT = IMARGUMENT |
||||
|
IMCONJUGATE = IMKONJUGERT |
||||
|
IMCOS = IMCOS |
||||
|
IMCOSH = IMCOSH |
||||
|
IMCOT = IMCOT |
||||
|
IMCSC = IMCSC |
||||
|
IMCSCH = IMCSCH |
||||
|
IMDIV = IMDIV |
||||
|
IMEXP = IMEKSP |
||||
|
IMLN = IMLN |
||||
|
IMLOG10 = IMLOG10 |
||||
|
IMLOG2 = IMLOG2 |
||||
|
IMPOWER = IMOPPHØY |
||||
|
IMPRODUCT = IMPRODUKT |
||||
|
IMREAL = IMREELL |
||||
|
IMSEC = IMSEC |
||||
|
IMSECH = IMSECH |
||||
|
IMSIN = IMSIN |
||||
|
IMSINH = IMSINH |
||||
|
IMSQRT = IMROT |
||||
|
IMSUB = IMSUB |
||||
|
IMSUM = IMSUMMER |
||||
|
IMTAN = IMTAN |
||||
|
OCT2BIN = OKTTILBIN |
||||
|
OCT2DEC = OKTTILDES |
||||
|
OCT2HEX = OKTTILHEKS |
||||
|
|
||||
|
## |
||||
|
## Økonomiske funksjoner (Financial Functions) |
||||
|
## |
||||
|
ACCRINT = PÅLØPT.PERIODISK.RENTE |
||||
|
ACCRINTM = PÅLØPT.FORFALLSRENTE |
||||
|
AMORDEGRC = AMORDEGRC |
||||
|
AMORLINC = AMORLINC |
||||
|
COUPDAYBS = OBLIG.DAGER.FF |
||||
|
COUPDAYS = OBLIG.DAGER |
||||
|
COUPDAYSNC = OBLIG.DAGER.NF |
||||
|
COUPNCD = OBLIG.DAGER.EF |
||||
|
COUPNUM = OBLIG.ANTALL |
||||
|
COUPPCD = OBLIG.DAG.FORRIGE |
||||
|
CUMIPMT = SAMLET.RENTE |
||||
|
CUMPRINC = SAMLET.HOVEDSTOL |
||||
|
DB = DAVSKR |
||||
|
DDB = DEGRAVS |
||||
|
DISC = DISKONTERT |
||||
|
DOLLARDE = DOLLARDE |
||||
|
DOLLARFR = DOLLARBR |
||||
|
DURATION = VARIGHET |
||||
|
EFFECT = EFFEKTIV.RENTE |
||||
|
FV = SLUTTVERDI |
||||
|
FVSCHEDULE = SVPLAN |
||||
|
INTRATE = RENTESATS |
||||
|
IPMT = RAVDRAG |
||||
|
IRR = IR |
||||
|
ISPMT = ER.AVDRAG |
||||
|
MDURATION = MVARIGHET |
||||
|
MIRR = MODIR |
||||
|
NOMINAL = NOMINELL |
||||
|
NPER = PERIODER |
||||
|
NPV = NNV |
||||
|
ODDFPRICE = AVVIKFP.PRIS |
||||
|
ODDFYIELD = AVVIKFP.AVKASTNING |
||||
|
ODDLPRICE = AVVIKSP.PRIS |
||||
|
ODDLYIELD = AVVIKSP.AVKASTNING |
||||
|
PDURATION = PVARIGHET |
||||
|
PMT = AVDRAG |
||||
|
PPMT = AMORT |
||||
|
PRICE = PRIS |
||||
|
PRICEDISC = PRIS.DISKONTERT |
||||
|
PRICEMAT = PRIS.FORFALL |
||||
|
PV = NÅVERDI |
||||
|
RATE = RENTE |
||||
|
RECEIVED = MOTTATT.AVKAST |
||||
|
RRI = REALISERT.AVKASTNING |
||||
|
SLN = LINAVS |
||||
|
SYD = ÅRSAVS |
||||
|
TBILLEQ = TBILLEKV |
||||
|
TBILLPRICE = TBILLPRIS |
||||
|
TBILLYIELD = TBILLAVKASTNING |
||||
|
VDB = VERDIAVS |
||||
|
XIRR = XIR |
||||
|
XNPV = XNNV |
||||
|
YIELD = AVKAST |
||||
|
YIELDDISC = AVKAST.DISKONTERT |
||||
|
YIELDMAT = AVKAST.FORFALL |
||||
|
|
||||
|
## |
||||
|
## Informasjonsfunksjoner (Information Functions) |
||||
|
## |
||||
|
CELL = CELLE |
||||
|
ERROR.TYPE = FEIL.TYPE |
||||
|
INFO = INFO |
||||
|
ISBLANK = ERTOM |
||||
|
ISERR = ERF |
||||
|
ISERROR = ERFEIL |
||||
|
ISEVEN = ERPARTALL |
||||
|
ISFORMULA = ERFORMEL |
||||
|
ISLOGICAL = ERLOGISK |
||||
|
ISNA = ERIT |
||||
|
ISNONTEXT = ERIKKETEKST |
||||
|
ISNUMBER = ERTALL |
||||
|
ISODD = ERODDE |
||||
|
ISREF = ERREF |
||||
|
ISTEXT = ERTEKST |
||||
|
N = N |
||||
|
NA = IT |
||||
|
SHEET = ARK |
||||
|
SHEETS = ANTALL.ARK |
||||
|
TYPE = VERDITYPE |
||||
|
|
||||
|
## |
||||
|
## Logiske funksjoner (Logical Functions) |
||||
|
## |
||||
|
AND = OG |
||||
|
FALSE = USANN |
||||
|
IF = HVIS |
||||
|
IFERROR = HVISFEIL |
||||
|
IFNA = HVIS.IT |
||||
|
IFS = HVIS.SETT |
||||
|
NOT = IKKE |
||||
|
OR = ELLER |
||||
|
SWITCH = BRYTER |
||||
|
TRUE = SANN |
||||
|
XOR = EKSKLUSIVELLER |
||||
|
|
||||
|
## |
||||
|
## Oppslag- og referansefunksjoner (Lookup & Reference Functions) |
||||
|
## |
||||
|
ADDRESS = ADRESSE |
||||
|
AREAS = OMRÅDER |
||||
|
CHOOSE = VELG |
||||
|
COLUMN = KOLONNE |
||||
|
COLUMNS = KOLONNER |
||||
|
FORMULATEXT = FORMELTEKST |
||||
|
GETPIVOTDATA = HENTPIVOTDATA |
||||
|
HLOOKUP = FINN.KOLONNE |
||||
|
HYPERLINK = HYPERKOBLING |
||||
|
INDEX = INDEKS |
||||
|
INDIRECT = INDIREKTE |
||||
|
LOOKUP = SLÅ.OPP |
||||
|
MATCH = SAMMENLIGNE |
||||
|
OFFSET = FORSKYVNING |
||||
|
ROW = RAD |
||||
|
ROWS = RADER |
||||
|
RTD = RTD |
||||
|
TRANSPOSE = TRANSPONER |
||||
|
VLOOKUP = FINN.RAD |
||||
|
|
||||
|
## |
||||
|
## Matematikk- og trigonometrifunksjoner (Math & Trig Functions) |
||||
|
## |
||||
|
ABS = ABS |
||||
|
ACOS = ARCCOS |
||||
|
ACOSH = ARCCOSH |
||||
|
ACOT = ACOT |
||||
|
ACOTH = ACOTH |
||||
|
AGGREGATE = MENGDE |
||||
|
ARABIC = ARABISK |
||||
|
ASIN = ARCSIN |
||||
|
ASINH = ARCSINH |
||||
|
ATAN = ARCTAN |
||||
|
ATAN2 = ARCTAN2 |
||||
|
ATANH = ARCTANH |
||||
|
BASE = GRUNNTALL |
||||
|
CEILING.MATH = AVRUND.GJELDENDE.MULTIPLUM.OPP.MATEMATISK |
||||
|
CEILING.PRECISE = AVRUND.GJELDENDE.MULTIPLUM.PRESIS |
||||
|
COMBIN = KOMBINASJON |
||||
|
COMBINA = KOMBINASJONA |
||||
|
COS = COS |
||||
|
COSH = COSH |
||||
|
COT = COT |
||||
|
COTH = COTH |
||||
|
CSC = CSC |
||||
|
CSCH = CSCH |
||||
|
DECIMAL = DESIMAL |
||||
|
DEGREES = GRADER |
||||
|
ECMA.CEILING = ECMA.AVRUND.GJELDENDE.MULTIPLUM |
||||
|
EVEN = AVRUND.TIL.PARTALL |
||||
|
EXP = EKSP |
||||
|
FACT = FAKULTET |
||||
|
FACTDOUBLE = DOBBELFAKT |
||||
|
FLOOR.MATH = AVRUND.GJELDENDE.MULTIPLUM.NED.MATEMATISK |
||||
|
FLOOR.PRECISE = AVRUND.GJELDENDE.MULTIPLUM.NED.PRESIS |
||||
|
GCD = SFF |
||||
|
INT = HELTALL |
||||
|
ISO.CEILING = ISO.AVRUND.GJELDENDE.MULTIPLUM |
||||
|
LCM = MFM |
||||
|
LN = LN |
||||
|
LOG = LOG |
||||
|
LOG10 = LOG10 |
||||
|
MDETERM = MDETERM |
||||
|
MINVERSE = MINVERS |
||||
|
MMULT = MMULT |
||||
|
MOD = REST |
||||
|
MROUND = MRUND |
||||
|
MULTINOMIAL = MULTINOMINELL |
||||
|
MUNIT = MENHET |
||||
|
ODD = AVRUND.TIL.ODDETALL |
||||
|
PI = PI |
||||
|
POWER = OPPHØYD.I |
||||
|
PRODUCT = PRODUKT |
||||
|
QUOTIENT = KVOTIENT |
||||
|
RADIANS = RADIANER |
||||
|
RAND = TILFELDIG |
||||
|
RANDBETWEEN = TILFELDIGMELLOM |
||||
|
ROMAN = ROMERTALL |
||||
|
ROUND = AVRUND |
||||
|
ROUNDBAHTDOWN = RUNDAVBAHTNEDOVER |
||||
|
ROUNDBAHTUP = RUNDAVBAHTOPPOVER |
||||
|
ROUNDDOWN = AVRUND.NED |
||||
|
ROUNDUP = AVRUND.OPP |
||||
|
SEC = SEC |
||||
|
SECH = SECH |
||||
|
SERIESSUM = SUMMER.REKKE |
||||
|
SIGN = FORTEGN |
||||
|
SIN = SIN |
||||
|
SINH = SINH |
||||
|
SQRT = ROT |
||||
|
SQRTPI = ROTPI |
||||
|
SUBTOTAL = DELSUM |
||||
|
SUM = SUMMER |
||||
|
SUMIF = SUMMERHVIS |
||||
|
SUMIFS = SUMMER.HVIS.SETT |
||||
|
SUMPRODUCT = SUMMERPRODUKT |
||||
|
SUMSQ = SUMMERKVADRAT |
||||
|
SUMX2MY2 = SUMMERX2MY2 |
||||
|
SUMX2PY2 = SUMMERX2PY2 |
||||
|
SUMXMY2 = SUMMERXMY2 |
||||
|
TAN = TAN |
||||
|
TANH = TANH |
||||
|
TRUNC = AVKORT |
||||
|
|
||||
|
## |
||||
|
## Statistiske funksjoner (Statistical Functions) |
||||
|
## |
||||
|
AVEDEV = GJENNOMSNITTSAVVIK |
||||
|
AVERAGE = GJENNOMSNITT |
||||
|
AVERAGEA = GJENNOMSNITTA |
||||
|
AVERAGEIF = GJENNOMSNITTHVIS |
||||
|
AVERAGEIFS = GJENNOMSNITT.HVIS.SETT |
||||
|
BETA.DIST = BETA.FORDELING.N |
||||
|
BETA.INV = BETA.INV |
||||
|
BINOM.DIST = BINOM.FORDELING.N |
||||
|
BINOM.DIST.RANGE = BINOM.FORDELING.OMRÅDE |
||||
|
BINOM.INV = BINOM.INV |
||||
|
CHISQ.DIST = KJIKVADRAT.FORDELING |
||||
|
CHISQ.DIST.RT = KJIKVADRAT.FORDELING.H |
||||
|
CHISQ.INV = KJIKVADRAT.INV |
||||
|
CHISQ.INV.RT = KJIKVADRAT.INV.H |
||||
|
CHISQ.TEST = KJIKVADRAT.TEST |
||||
|
CONFIDENCE.NORM = KONFIDENS.NORM |
||||
|
CONFIDENCE.T = KONFIDENS.T |
||||
|
CORREL = KORRELASJON |
||||
|
COUNT = ANTALL |
||||
|
COUNTA = ANTALLA |
||||
|
COUNTBLANK = TELLBLANKE |
||||
|
COUNTIF = ANTALL.HVIS |
||||
|
COUNTIFS = ANTALL.HVIS.SETT |
||||
|
COVARIANCE.P = KOVARIANS.P |
||||
|
COVARIANCE.S = KOVARIANS.S |
||||
|
DEVSQ = AVVIK.KVADRERT |
||||
|
EXPON.DIST = EKSP.FORDELING.N |
||||
|
F.DIST = F.FORDELING |
||||
|
F.DIST.RT = F.FORDELING.H |
||||
|
F.INV = F.INV |
||||
|
F.INV.RT = F.INV.H |
||||
|
F.TEST = F.TEST |
||||
|
FISHER = FISHER |
||||
|
FISHERINV = FISHERINV |
||||
|
FORECAST.ETS = PROGNOSE.ETS |
||||
|
FORECAST.ETS.CONFINT = PROGNOSE.ETS.CONFINT |
||||
|
FORECAST.ETS.SEASONALITY = PROGNOSE.ETS.SESONGAVHENGIGHET |
||||
|
FORECAST.ETS.STAT = PROGNOSE.ETS.STAT |
||||
|
FORECAST.LINEAR = PROGNOSE.LINEÆR |
||||
|
FREQUENCY = FREKVENS |
||||
|
GAMMA = GAMMA |
||||
|
GAMMA.DIST = GAMMA.FORDELING |
||||
|
GAMMA.INV = GAMMA.INV |
||||
|
GAMMALN = GAMMALN |
||||
|
GAMMALN.PRECISE = GAMMALN.PRESIS |
||||
|
GAUSS = GAUSS |
||||
|
GEOMEAN = GJENNOMSNITT.GEOMETRISK |
||||
|
GROWTH = VEKST |
||||
|
HARMEAN = GJENNOMSNITT.HARMONISK |
||||
|
HYPGEOM.DIST = HYPGEOM.FORDELING.N |
||||
|
INTERCEPT = SKJÆRINGSPUNKT |
||||
|
KURT = KURT |
||||
|
LARGE = N.STØRST |
||||
|
LINEST = RETTLINJE |
||||
|
LOGEST = KURVE |
||||
|
LOGNORM.DIST = LOGNORM.FORDELING |
||||
|
LOGNORM.INV = LOGNORM.INV |
||||
|
MAX = STØRST |
||||
|
MAXA = MAKSA |
||||
|
MAXIFS = MAKS.HVIS.SETT |
||||
|
MEDIAN = MEDIAN |
||||
|
MIN = MIN |
||||
|
MINA = MINA |
||||
|
MINIFS = MIN.HVIS.SETT |
||||
|
MODE.MULT = MODUS.MULT |
||||
|
MODE.SNGL = MODUS.SNGL |
||||
|
NEGBINOM.DIST = NEGBINOM.FORDELING.N |
||||
|
NORM.DIST = NORM.FORDELING |
||||
|
NORM.INV = NORM.INV |
||||
|
NORM.S.DIST = NORM.S.FORDELING |
||||
|
NORM.S.INV = NORM.S.INV |
||||
|
PEARSON = PEARSON |
||||
|
PERCENTILE.EXC = PERSENTIL.EKS |
||||
|
PERCENTILE.INC = PERSENTIL.INK |
||||
|
PERCENTRANK.EXC = PROSENTDEL.EKS |
||||
|
PERCENTRANK.INC = PROSENTDEL.INK |
||||
|
PERMUT = PERMUTER |
||||
|
PERMUTATIONA = PERMUTASJONA |
||||
|
PHI = PHI |
||||
|
POISSON.DIST = POISSON.FORDELING |
||||
|
PROB = SANNSYNLIG |
||||
|
QUARTILE.EXC = KVARTIL.EKS |
||||
|
QUARTILE.INC = KVARTIL.INK |
||||
|
RANK.AVG = RANG.GJSN |
||||
|
RANK.EQ = RANG.EKV |
||||
|
RSQ = RKVADRAT |
||||
|
SKEW = SKJEVFORDELING |
||||
|
SKEW.P = SKJEVFORDELING.P |
||||
|
SLOPE = STIGNINGSTALL |
||||
|
SMALL = N.MINST |
||||
|
STANDARDIZE = NORMALISER |
||||
|
STDEV.P = STDAV.P |
||||
|
STDEV.S = STDAV.S |
||||
|
STDEVA = STDAVVIKA |
||||
|
STDEVPA = STDAVVIKPA |
||||
|
STEYX = STANDARDFEIL |
||||
|
T.DIST = T.FORDELING |
||||
|
T.DIST.2T = T.FORDELING.2T |
||||
|
T.DIST.RT = T.FORDELING.H |
||||
|
T.INV = T.INV |
||||
|
T.INV.2T = T.INV.2T |
||||
|
T.TEST = T.TEST |
||||
|
TREND = TREND |
||||
|
TRIMMEAN = TRIMMET.GJENNOMSNITT |
||||
|
VAR.P = VARIANS.P |
||||
|
VAR.S = VARIANS.S |
||||
|
VARA = VARIANSA |
||||
|
VARPA = VARIANSPA |
||||
|
WEIBULL.DIST = WEIBULL.DIST.N |
||||
|
Z.TEST = Z.TEST |
||||
|
|
||||
|
## |
||||
|
## Tekstfunksjoner (Text Functions) |
||||
|
## |
||||
|
ASC = STIGENDE |
||||
|
BAHTTEXT = BAHTTEKST |
||||
|
CHAR = TEGNKODE |
||||
|
CLEAN = RENSK |
||||
|
CODE = KODE |
||||
|
CONCAT = KJED.SAMMEN |
||||
|
DOLLAR = VALUTA |
||||
|
EXACT = EKSAKT |
||||
|
FIND = FINN |
||||
|
FIXED = FASTSATT |
||||
|
ISTHAIDIGIT = ERTHAISIFFER |
||||
|
LEFT = VENSTRE |
||||
|
LEN = LENGDE |
||||
|
LOWER = SMÅ |
||||
|
MID = DELTEKST |
||||
|
NUMBERSTRING = TALLSTRENG |
||||
|
NUMBERVALUE = TALLVERDI |
||||
|
PHONETIC = FURIGANA |
||||
|
PROPER = STOR.FORBOKSTAV |
||||
|
REPLACE = ERSTATT |
||||
|
REPT = GJENTA |
||||
|
RIGHT = HØYRE |
||||
|
SEARCH = SØK |
||||
|
SUBSTITUTE = BYTT.UT |
||||
|
T = T |
||||
|
TEXT = TEKST |
||||
|
TEXTJOIN = TEKST.KOMBINER |
||||
|
THAIDIGIT = THAISIFFER |
||||
|
THAINUMSOUND = THAINUMLYD |
||||
|
THAINUMSTRING = THAINUMSTRENG |
||||
|
THAISTRINGLENGTH = THAISTRENGLENGDE |
||||
|
TRIM = TRIMME |
||||
|
UNICHAR = UNICODETEGN |
||||
|
UNICODE = UNICODE |
||||
|
UPPER = STORE |
||||
|
VALUE = VERDI |
||||
|
|
||||
|
## |
||||
|
## Nettfunksjoner (Web Functions) |
||||
|
## |
||||
|
ENCODEURL = URL.KODE |
||||
|
FILTERXML = FILTRERXML |
||||
|
WEBSERVICE = NETTJENESTE |
||||
|
|
||||
|
## |
||||
|
## Kompatibilitetsfunksjoner (Compatibility Functions) |
||||
|
## |
||||
|
BETADIST = BETA.FORDELING |
||||
|
BETAINV = INVERS.BETA.FORDELING |
||||
|
BINOMDIST = BINOM.FORDELING |
||||
|
CEILING = AVRUND.GJELDENDE.MULTIPLUM |
||||
|
CHIDIST = KJI.FORDELING |
||||
|
CHIINV = INVERS.KJI.FORDELING |
||||
|
CHITEST = KJI.TEST |
||||
|
CONCATENATE = KJEDE.SAMMEN |
||||
|
CONFIDENCE = KONFIDENS |
||||
|
COVAR = KOVARIANS |
||||
|
CRITBINOM = GRENSE.BINOM |
||||
|
EXPONDIST = EKSP.FORDELING |
||||
|
FDIST = FFORDELING |
||||
|
FINV = FFORDELING.INVERS |
||||
|
FLOOR = AVRUND.GJELDENDE.MULTIPLUM.NED |
||||
|
FORECAST = PROGNOSE |
||||
|
FTEST = FTEST |
||||
|
GAMMADIST = GAMMAFORDELING |
||||
|
GAMMAINV = GAMMAINV |
||||
|
HYPGEOMDIST = HYPGEOM.FORDELING |
||||
|
LOGINV = LOGINV |
||||
|
LOGNORMDIST = LOGNORMFORD |
||||
|
MODE = MODUS |
||||
|
NEGBINOMDIST = NEGBINOM.FORDELING |
||||
|
NORMDIST = NORMALFORDELING |
||||
|
NORMINV = NORMINV |
||||
|
NORMSDIST = NORMSFORDELING |
||||
|
NORMSINV = NORMSINV |
||||
|
PERCENTILE = PERSENTIL |
||||
|
PERCENTRANK = PROSENTDEL |
||||
|
POISSON = POISSON |
||||
|
QUARTILE = KVARTIL |
||||
|
RANK = RANG |
||||
|
STDEV = STDAV |
||||
|
STDEVP = STDAVP |
||||
|
TDIST = TFORDELING |
||||
|
TINV = TINV |
||||
|
TTEST = TTEST |
||||
|
VAR = VARIANS |
||||
|
VARP = VARIANSP |
||||
|
WEIBULL = WEIBULL.FORDELING |
||||
|
ZTEST = ZTEST |
||||
@ -0,0 +1,536 @@ |
|||||
|
############################################################ |
||||
|
## |
||||
|
## PhpSpreadsheet - function name translations |
||||
|
## |
||||
|
## Nederlands (Dutch) |
||||
|
## |
||||
|
############################################################ |
||||
|
|
||||
|
|
||||
|
## |
||||
|
## Kubusfuncties (Cube Functions) |
||||
|
## |
||||
|
CUBEKPIMEMBER = KUBUSKPILID |
||||
|
CUBEMEMBER = KUBUSLID |
||||
|
CUBEMEMBERPROPERTY = KUBUSLIDEIGENSCHAP |
||||
|
CUBERANKEDMEMBER = KUBUSGERANGSCHIKTLID |
||||
|
CUBESET = KUBUSSET |
||||
|
CUBESETCOUNT = KUBUSSETAANTAL |
||||
|
CUBEVALUE = KUBUSWAARDE |
||||
|
|
||||
|
## |
||||
|
## Databasefuncties (Database Functions) |
||||
|
## |
||||
|
DAVERAGE = DBGEMIDDELDE |
||||
|
DCOUNT = DBAANTAL |
||||
|
DCOUNTA = DBAANTALC |
||||
|
DGET = DBLEZEN |
||||
|
DMAX = DBMAX |
||||
|
DMIN = DBMIN |
||||
|
DPRODUCT = DBPRODUCT |
||||
|
DSTDEV = DBSTDEV |
||||
|
DSTDEVP = DBSTDEVP |
||||
|
DSUM = DBSOM |
||||
|
DVAR = DBVAR |
||||
|
DVARP = DBVARP |
||||
|
|
||||
|
## |
||||
|
## Datum- en tijdfuncties (Date & Time Functions) |
||||
|
## |
||||
|
DATE = DATUM |
||||
|
DATESTRING = DATUMNOTATIE |
||||
|
DATEVALUE = DATUMWAARDE |
||||
|
DAY = DAG |
||||
|
DAYS = DAGEN |
||||
|
DAYS360 = DAGEN360 |
||||
|
EDATE = ZELFDE.DAG |
||||
|
EOMONTH = LAATSTE.DAG |
||||
|
HOUR = UUR |
||||
|
ISOWEEKNUM = ISO.WEEKNUMMER |
||||
|
MINUTE = MINUUT |
||||
|
MONTH = MAAND |
||||
|
NETWORKDAYS = NETTO.WERKDAGEN |
||||
|
NETWORKDAYS.INTL = NETWERKDAGEN.INTL |
||||
|
NOW = NU |
||||
|
SECOND = SECONDE |
||||
|
THAIDAYOFWEEK = THAIS.WEEKDAG |
||||
|
THAIMONTHOFYEAR = THAIS.MAAND.VAN.JAAR |
||||
|
THAIYEAR = THAIS.JAAR |
||||
|
TIME = TIJD |
||||
|
TIMEVALUE = TIJDWAARDE |
||||
|
TODAY = VANDAAG |
||||
|
WEEKDAY = WEEKDAG |
||||
|
WEEKNUM = WEEKNUMMER |
||||
|
WORKDAY = WERKDAG |
||||
|
WORKDAY.INTL = WERKDAG.INTL |
||||
|
YEAR = JAAR |
||||
|
YEARFRAC = JAAR.DEEL |
||||
|
|
||||
|
## |
||||
|
## Technische functies (Engineering Functions) |
||||
|
## |
||||
|
BESSELI = BESSEL.I |
||||
|
BESSELJ = BESSEL.J |
||||
|
BESSELK = BESSEL.K |
||||
|
BESSELY = BESSEL.Y |
||||
|
BIN2DEC = BIN.N.DEC |
||||
|
BIN2HEX = BIN.N.HEX |
||||
|
BIN2OCT = BIN.N.OCT |
||||
|
BITAND = BIT.EN |
||||
|
BITLSHIFT = BIT.VERSCHUIF.LINKS |
||||
|
BITOR = BIT.OF |
||||
|
BITRSHIFT = BIT.VERSCHUIF.RECHTS |
||||
|
BITXOR = BIT.EX.OF |
||||
|
COMPLEX = COMPLEX |
||||
|
CONVERT = CONVERTEREN |
||||
|
DEC2BIN = DEC.N.BIN |
||||
|
DEC2HEX = DEC.N.HEX |
||||
|
DEC2OCT = DEC.N.OCT |
||||
|
DELTA = DELTA |
||||
|
ERF = FOUTFUNCTIE |
||||
|
ERF.PRECISE = FOUTFUNCTIE.NAUWKEURIG |
||||
|
ERFC = FOUT.COMPLEMENT |
||||
|
ERFC.PRECISE = FOUT.COMPLEMENT.NAUWKEURIG |
||||
|
GESTEP = GROTER.DAN |
||||
|
HEX2BIN = HEX.N.BIN |
||||
|
HEX2DEC = HEX.N.DEC |
||||
|
HEX2OCT = HEX.N.OCT |
||||
|
IMABS = C.ABS |
||||
|
IMAGINARY = C.IM.DEEL |
||||
|
IMARGUMENT = C.ARGUMENT |
||||
|
IMCONJUGATE = C.TOEGEVOEGD |
||||
|
IMCOS = C.COS |
||||
|
IMCOSH = C.COSH |
||||
|
IMCOT = C.COT |
||||
|
IMCSC = C.COSEC |
||||
|
IMCSCH = C.COSECH |
||||
|
IMDIV = C.QUOTIENT |
||||
|
IMEXP = C.EXP |
||||
|
IMLN = C.LN |
||||
|
IMLOG10 = C.LOG10 |
||||
|
IMLOG2 = C.LOG2 |
||||
|
IMPOWER = C.MACHT |
||||
|
IMPRODUCT = C.PRODUCT |
||||
|
IMREAL = C.REEEL.DEEL |
||||
|
IMSEC = C.SEC |
||||
|
IMSECH = C.SECH |
||||
|
IMSIN = C.SIN |
||||
|
IMSINH = C.SINH |
||||
|
IMSQRT = C.WORTEL |
||||
|
IMSUB = C.VERSCHIL |
||||
|
IMSUM = C.SOM |
||||
|
IMTAN = C.TAN |
||||
|
OCT2BIN = OCT.N.BIN |
||||
|
OCT2DEC = OCT.N.DEC |
||||
|
OCT2HEX = OCT.N.HEX |
||||
|
|
||||
|
## |
||||
|
## Financiële functies (Financial Functions) |
||||
|
## |
||||
|
ACCRINT = SAMENG.RENTE |
||||
|
ACCRINTM = SAMENG.RENTE.V |
||||
|
AMORDEGRC = AMORDEGRC |
||||
|
AMORLINC = AMORLINC |
||||
|
COUPDAYBS = COUP.DAGEN.BB |
||||
|
COUPDAYS = COUP.DAGEN |
||||
|
COUPDAYSNC = COUP.DAGEN.VV |
||||
|
COUPNCD = COUP.DATUM.NB |
||||
|
COUPNUM = COUP.AANTAL |
||||
|
COUPPCD = COUP.DATUM.VB |
||||
|
CUMIPMT = CUM.RENTE |
||||
|
CUMPRINC = CUM.HOOFDSOM |
||||
|
DB = DB |
||||
|
DDB = DDB |
||||
|
DISC = DISCONTO |
||||
|
DOLLARDE = EURO.DE |
||||
|
DOLLARFR = EURO.BR |
||||
|
DURATION = DUUR |
||||
|
EFFECT = EFFECT.RENTE |
||||
|
FV = TW |
||||
|
FVSCHEDULE = TOEK.WAARDE2 |
||||
|
INTRATE = RENTEPERCENTAGE |
||||
|
IPMT = IBET |
||||
|
IRR = IR |
||||
|
ISPMT = ISBET |
||||
|
MDURATION = AANG.DUUR |
||||
|
MIRR = GIR |
||||
|
NOMINAL = NOMINALE.RENTE |
||||
|
NPER = NPER |
||||
|
NPV = NHW |
||||
|
ODDFPRICE = AFW.ET.PRIJS |
||||
|
ODDFYIELD = AFW.ET.REND |
||||
|
ODDLPRICE = AFW.LT.PRIJS |
||||
|
ODDLYIELD = AFW.LT.REND |
||||
|
PDURATION = PDUUR |
||||
|
PMT = BET |
||||
|
PPMT = PBET |
||||
|
PRICE = PRIJS.NOM |
||||
|
PRICEDISC = PRIJS.DISCONTO |
||||
|
PRICEMAT = PRIJS.VERVALDAG |
||||
|
PV = HW |
||||
|
RATE = RENTE |
||||
|
RECEIVED = OPBRENGST |
||||
|
RRI = RRI |
||||
|
SLN = LIN.AFSCHR |
||||
|
SYD = SYD |
||||
|
TBILLEQ = SCHATK.OBL |
||||
|
TBILLPRICE = SCHATK.PRIJS |
||||
|
TBILLYIELD = SCHATK.REND |
||||
|
VDB = VDB |
||||
|
XIRR = IR.SCHEMA |
||||
|
XNPV = NHW2 |
||||
|
YIELD = RENDEMENT |
||||
|
YIELDDISC = REND.DISCONTO |
||||
|
YIELDMAT = REND.VERVAL |
||||
|
|
||||
|
## |
||||
|
## Informatiefuncties (Information Functions) |
||||
|
## |
||||
|
CELL = CEL |
||||
|
ERROR.TYPE = TYPE.FOUT |
||||
|
INFO = INFO |
||||
|
ISBLANK = ISLEEG |
||||
|
ISERR = ISFOUT2 |
||||
|
ISERROR = ISFOUT |
||||
|
ISEVEN = IS.EVEN |
||||
|
ISFORMULA = ISFORMULE |
||||
|
ISLOGICAL = ISLOGISCH |
||||
|
ISNA = ISNB |
||||
|
ISNONTEXT = ISGEENTEKST |
||||
|
ISNUMBER = ISGETAL |
||||
|
ISODD = IS.ONEVEN |
||||
|
ISREF = ISVERWIJZING |
||||
|
ISTEXT = ISTEKST |
||||
|
N = N |
||||
|
NA = NB |
||||
|
SHEET = BLAD |
||||
|
SHEETS = BLADEN |
||||
|
TYPE = TYPE |
||||
|
|
||||
|
## |
||||
|
## Logische functies (Logical Functions) |
||||
|
## |
||||
|
AND = EN |
||||
|
FALSE = ONWAAR |
||||
|
IF = ALS |
||||
|
IFERROR = ALS.FOUT |
||||
|
IFNA = ALS.NB |
||||
|
IFS = ALS.VOORWAARDEN |
||||
|
NOT = NIET |
||||
|
OR = OF |
||||
|
SWITCH = SCHAKELEN |
||||
|
TRUE = WAAR |
||||
|
XOR = EX.OF |
||||
|
|
||||
|
## |
||||
|
## Zoek- en verwijzingsfuncties (Lookup & Reference Functions) |
||||
|
## |
||||
|
ADDRESS = ADRES |
||||
|
AREAS = BEREIKEN |
||||
|
CHOOSE = KIEZEN |
||||
|
COLUMN = KOLOM |
||||
|
COLUMNS = KOLOMMEN |
||||
|
FORMULATEXT = FORMULETEKST |
||||
|
GETPIVOTDATA = DRAAITABEL.OPHALEN |
||||
|
HLOOKUP = HORIZ.ZOEKEN |
||||
|
HYPERLINK = HYPERLINK |
||||
|
INDEX = INDEX |
||||
|
INDIRECT = INDIRECT |
||||
|
LOOKUP = ZOEKEN |
||||
|
MATCH = VERGELIJKEN |
||||
|
OFFSET = VERSCHUIVING |
||||
|
ROW = RIJ |
||||
|
ROWS = RIJEN |
||||
|
RTD = RTG |
||||
|
TRANSPOSE = TRANSPONEREN |
||||
|
VLOOKUP = VERT.ZOEKEN |
||||
|
|
||||
|
## |
||||
|
## Wiskundige en trigonometrische functies (Math & Trig Functions) |
||||
|
## |
||||
|
ABS = ABS |
||||
|
ACOS = BOOGCOS |
||||
|
ACOSH = BOOGCOSH |
||||
|
ACOT = BOOGCOT |
||||
|
ACOTH = BOOGCOTH |
||||
|
AGGREGATE = AGGREGAAT |
||||
|
ARABIC = ARABISCH |
||||
|
ASIN = BOOGSIN |
||||
|
ASINH = BOOGSINH |
||||
|
ATAN = BOOGTAN |
||||
|
ATAN2 = BOOGTAN2 |
||||
|
ATANH = BOOGTANH |
||||
|
BASE = BASIS |
||||
|
CEILING.MATH = AFRONDEN.BOVEN.WISK |
||||
|
CEILING.PRECISE = AFRONDEN.BOVEN.NAUWKEURIG |
||||
|
COMBIN = COMBINATIES |
||||
|
COMBINA = COMBIN.A |
||||
|
COS = COS |
||||
|
COSH = COSH |
||||
|
COT = COT |
||||
|
COTH = COTH |
||||
|
CSC = COSEC |
||||
|
CSCH = COSECH |
||||
|
DECIMAL = DECIMAAL |
||||
|
DEGREES = GRADEN |
||||
|
ECMA.CEILING = ECMA.AFRONDEN.BOVEN |
||||
|
EVEN = EVEN |
||||
|
EXP = EXP |
||||
|
FACT = FACULTEIT |
||||
|
FACTDOUBLE = DUBBELE.FACULTEIT |
||||
|
FLOOR.MATH = AFRONDEN.BENEDEN.WISK |
||||
|
FLOOR.PRECISE = AFRONDEN.BENEDEN.NAUWKEURIG |
||||
|
GCD = GGD |
||||
|
INT = INTEGER |
||||
|
ISO.CEILING = ISO.AFRONDEN.BOVEN |
||||
|
LCM = KGV |
||||
|
LN = LN |
||||
|
LOG = LOG |
||||
|
LOG10 = LOG10 |
||||
|
MDETERM = DETERMINANTMAT |
||||
|
MINVERSE = INVERSEMAT |
||||
|
MMULT = PRODUCTMAT |
||||
|
MOD = REST |
||||
|
MROUND = AFRONDEN.N.VEELVOUD |
||||
|
MULTINOMIAL = MULTINOMIAAL |
||||
|
MUNIT = EENHEIDMAT |
||||
|
ODD = ONEVEN |
||||
|
PI = PI |
||||
|
POWER = MACHT |
||||
|
PRODUCT = PRODUCT |
||||
|
QUOTIENT = QUOTIENT |
||||
|
RADIANS = RADIALEN |
||||
|
RAND = ASELECT |
||||
|
RANDBETWEEN = ASELECTTUSSEN |
||||
|
ROMAN = ROMEINS |
||||
|
ROUND = AFRONDEN |
||||
|
ROUNDBAHTDOWN = BAHT.AFR.NAAR.BENEDEN |
||||
|
ROUNDBAHTUP = BAHT.AFR.NAAR.BOVEN |
||||
|
ROUNDDOWN = AFRONDEN.NAAR.BENEDEN |
||||
|
ROUNDUP = AFRONDEN.NAAR.BOVEN |
||||
|
SEC = SEC |
||||
|
SECH = SECH |
||||
|
SERIESSUM = SOM.MACHTREEKS |
||||
|
SIGN = POS.NEG |
||||
|
SIN = SIN |
||||
|
SINH = SINH |
||||
|
SQRT = WORTEL |
||||
|
SQRTPI = WORTEL.PI |
||||
|
SUBTOTAL = SUBTOTAAL |
||||
|
SUM = SOM |
||||
|
SUMIF = SOM.ALS |
||||
|
SUMIFS = SOMMEN.ALS |
||||
|
SUMPRODUCT = SOMPRODUCT |
||||
|
SUMSQ = KWADRATENSOM |
||||
|
SUMX2MY2 = SOM.X2MINY2 |
||||
|
SUMX2PY2 = SOM.X2PLUSY2 |
||||
|
SUMXMY2 = SOM.XMINY.2 |
||||
|
TAN = TAN |
||||
|
TANH = TANH |
||||
|
TRUNC = GEHEEL |
||||
|
|
||||
|
## |
||||
|
## Statistische functies (Statistical Functions) |
||||
|
## |
||||
|
AVEDEV = GEM.DEVIATIE |
||||
|
AVERAGE = GEMIDDELDE |
||||
|
AVERAGEA = GEMIDDELDEA |
||||
|
AVERAGEIF = GEMIDDELDE.ALS |
||||
|
AVERAGEIFS = GEMIDDELDEN.ALS |
||||
|
BETA.DIST = BETA.VERD |
||||
|
BETA.INV = BETA.INV |
||||
|
BINOM.DIST = BINOM.VERD |
||||
|
BINOM.DIST.RANGE = BINOM.VERD.BEREIK |
||||
|
BINOM.INV = BINOMIALE.INV |
||||
|
CHISQ.DIST = CHIKW.VERD |
||||
|
CHISQ.DIST.RT = CHIKW.VERD.RECHTS |
||||
|
CHISQ.INV = CHIKW.INV |
||||
|
CHISQ.INV.RT = CHIKW.INV.RECHTS |
||||
|
CHISQ.TEST = CHIKW.TEST |
||||
|
CONFIDENCE.NORM = VERTROUWELIJKHEID.NORM |
||||
|
CONFIDENCE.T = VERTROUWELIJKHEID.T |
||||
|
CORREL = CORRELATIE |
||||
|
COUNT = AANTAL |
||||
|
COUNTA = AANTALARG |
||||
|
COUNTBLANK = AANTAL.LEGE.CELLEN |
||||
|
COUNTIF = AANTAL.ALS |
||||
|
COUNTIFS = AANTALLEN.ALS |
||||
|
COVARIANCE.P = COVARIANTIE.P |
||||
|
COVARIANCE.S = COVARIANTIE.S |
||||
|
DEVSQ = DEV.KWAD |
||||
|
EXPON.DIST = EXPON.VERD.N |
||||
|
F.DIST = F.VERD |
||||
|
F.DIST.RT = F.VERD.RECHTS |
||||
|
F.INV = F.INV |
||||
|
F.INV.RT = F.INV.RECHTS |
||||
|
F.TEST = F.TEST |
||||
|
FISHER = FISHER |
||||
|
FISHERINV = FISHER.INV |
||||
|
FORECAST.ETS = VOORSPELLEN.ETS |
||||
|
FORECAST.ETS.CONFINT = VOORSPELLEN.ETS.CONFINT |
||||
|
FORECAST.ETS.SEASONALITY = VOORSPELLEN.ETS.SEASONALITY |
||||
|
FORECAST.ETS.STAT = FORECAST.ETS.STAT |
||||
|
FORECAST.LINEAR = VOORSPELLEN.LINEAR |
||||
|
FREQUENCY = INTERVAL |
||||
|
GAMMA = GAMMA |
||||
|
GAMMA.DIST = GAMMA.VERD.N |
||||
|
GAMMA.INV = GAMMA.INV.N |
||||
|
GAMMALN = GAMMA.LN |
||||
|
GAMMALN.PRECISE = GAMMA.LN.NAUWKEURIG |
||||
|
GAUSS = GAUSS |
||||
|
GEOMEAN = MEETK.GEM |
||||
|
GROWTH = GROEI |
||||
|
HARMEAN = HARM.GEM |
||||
|
HYPGEOM.DIST = HYPGEOM.VERD |
||||
|
INTERCEPT = SNIJPUNT |
||||
|
KURT = KURTOSIS |
||||
|
LARGE = GROOTSTE |
||||
|
LINEST = LIJNSCH |
||||
|
LOGEST = LOGSCH |
||||
|
LOGNORM.DIST = LOGNORM.VERD |
||||
|
LOGNORM.INV = LOGNORM.INV |
||||
|
MAX = MAX |
||||
|
MAXA = MAXA |
||||
|
MAXIFS = MAX.ALS.VOORWAARDEN |
||||
|
MEDIAN = MEDIAAN |
||||
|
MIN = MIN |
||||
|
MINA = MINA |
||||
|
MINIFS = MIN.ALS.VOORWAARDEN |
||||
|
MODE.MULT = MODUS.MEERV |
||||
|
MODE.SNGL = MODUS.ENKELV |
||||
|
NEGBINOM.DIST = NEGBINOM.VERD |
||||
|
NORM.DIST = NORM.VERD.N |
||||
|
NORM.INV = NORM.INV.N |
||||
|
NORM.S.DIST = NORM.S.VERD |
||||
|
NORM.S.INV = NORM.S.INV |
||||
|
PEARSON = PEARSON |
||||
|
PERCENTILE.EXC = PERCENTIEL.EXC |
||||
|
PERCENTILE.INC = PERCENTIEL.INC |
||||
|
PERCENTRANK.EXC = PROCENTRANG.EXC |
||||
|
PERCENTRANK.INC = PROCENTRANG.INC |
||||
|
PERMUT = PERMUTATIES |
||||
|
PERMUTATIONA = PERMUTATIE.A |
||||
|
PHI = PHI |
||||
|
POISSON.DIST = POISSON.VERD |
||||
|
PROB = KANS |
||||
|
QUARTILE.EXC = KWARTIEL.EXC |
||||
|
QUARTILE.INC = KWARTIEL.INC |
||||
|
RANK.AVG = RANG.GEMIDDELDE |
||||
|
RANK.EQ = RANG.GELIJK |
||||
|
RSQ = R.KWADRAAT |
||||
|
SKEW = SCHEEFHEID |
||||
|
SKEW.P = SCHEEFHEID.P |
||||
|
SLOPE = RICHTING |
||||
|
SMALL = KLEINSTE |
||||
|
STANDARDIZE = NORMALISEREN |
||||
|
STDEV.P = STDEV.P |
||||
|
STDEV.S = STDEV.S |
||||
|
STDEVA = STDEVA |
||||
|
STDEVPA = STDEVPA |
||||
|
STEYX = STAND.FOUT.YX |
||||
|
T.DIST = T.DIST |
||||
|
T.DIST.2T = T.VERD.2T |
||||
|
T.DIST.RT = T.VERD.RECHTS |
||||
|
T.INV = T.INV |
||||
|
T.INV.2T = T.INV.2T |
||||
|
T.TEST = T.TEST |
||||
|
TREND = TREND |
||||
|
TRIMMEAN = GETRIMD.GEM |
||||
|
VAR.P = VAR.P |
||||
|
VAR.S = VAR.S |
||||
|
VARA = VARA |
||||
|
VARPA = VARPA |
||||
|
WEIBULL.DIST = WEIBULL.VERD |
||||
|
Z.TEST = Z.TEST |
||||
|
|
||||
|
## |
||||
|
## Tekstfuncties (Text Functions) |
||||
|
## |
||||
|
BAHTTEXT = BAHT.TEKST |
||||
|
CHAR = TEKEN |
||||
|
CLEAN = WISSEN.CONTROL |
||||
|
CODE = CODE |
||||
|
CONCAT = TEKST.SAMENV |
||||
|
DOLLAR = EURO |
||||
|
EXACT = GELIJK |
||||
|
FIND = VIND.ALLES |
||||
|
FIXED = VAST |
||||
|
ISTHAIDIGIT = IS.THAIS.CIJFER |
||||
|
LEFT = LINKS |
||||
|
LEN = LENGTE |
||||
|
LOWER = KLEINE.LETTERS |
||||
|
MID = DEEL |
||||
|
NUMBERSTRING = GETALNOTATIE |
||||
|
NUMBERVALUE = NUMERIEKE.WAARDE |
||||
|
PHONETIC = FONETISCH |
||||
|
PROPER = BEGINLETTERS |
||||
|
REPLACE = VERVANGEN |
||||
|
REPT = HERHALING |
||||
|
RIGHT = RECHTS |
||||
|
SEARCH = VIND.SPEC |
||||
|
SUBSTITUTE = SUBSTITUEREN |
||||
|
T = T |
||||
|
TEXT = TEKST |
||||
|
TEXTJOIN = TEKST.COMBINEREN |
||||
|
THAIDIGIT = THAIS.CIJFER |
||||
|
THAINUMSOUND = THAIS.GETAL.GELUID |
||||
|
THAINUMSTRING = THAIS.GETAL.REEKS |
||||
|
THAISTRINGLENGTH = THAIS.REEKS.LENGTE |
||||
|
TRIM = SPATIES.WISSEN |
||||
|
UNICHAR = UNITEKEN |
||||
|
UNICODE = UNICODE |
||||
|
UPPER = HOOFDLETTERS |
||||
|
VALUE = WAARDE |
||||
|
|
||||
|
## |
||||
|
## Webfuncties (Web Functions) |
||||
|
## |
||||
|
ENCODEURL = URL.CODEREN |
||||
|
FILTERXML = XML.FILTEREN |
||||
|
WEBSERVICE = WEBSERVICE |
||||
|
|
||||
|
## |
||||
|
## Compatibiliteitsfuncties (Compatibility Functions) |
||||
|
## |
||||
|
BETADIST = BETAVERD |
||||
|
BETAINV = BETAINV |
||||
|
BINOMDIST = BINOMIALE.VERD |
||||
|
CEILING = AFRONDEN.BOVEN |
||||
|
CHIDIST = CHI.KWADRAAT |
||||
|
CHIINV = CHI.KWADRAAT.INV |
||||
|
CHITEST = CHI.TOETS |
||||
|
CONCATENATE = TEKST.SAMENVOEGEN |
||||
|
CONFIDENCE = BETROUWBAARHEID |
||||
|
COVAR = COVARIANTIE |
||||
|
CRITBINOM = CRIT.BINOM |
||||
|
EXPONDIST = EXPON.VERD |
||||
|
FDIST = F.VERDELING |
||||
|
FINV = F.INVERSE |
||||
|
FLOOR = AFRONDEN.BENEDEN |
||||
|
FORECAST = VOORSPELLEN |
||||
|
FTEST = F.TOETS |
||||
|
GAMMADIST = GAMMA.VERD |
||||
|
GAMMAINV = GAMMA.INV |
||||
|
HYPGEOMDIST = HYPERGEO.VERD |
||||
|
LOGINV = LOG.NORM.INV |
||||
|
LOGNORMDIST = LOG.NORM.VERD |
||||
|
MODE = MODUS |
||||
|
NEGBINOMDIST = NEG.BINOM.VERD |
||||
|
NORMDIST = NORM.VERD |
||||
|
NORMINV = NORM.INV |
||||
|
NORMSDIST = STAND.NORM.VERD |
||||
|
NORMSINV = STAND.NORM.INV |
||||
|
PERCENTILE = PERCENTIEL |
||||
|
PERCENTRANK = PERCENT.RANG |
||||
|
POISSON = POISSON |
||||
|
QUARTILE = KWARTIEL |
||||
|
RANK = RANG |
||||
|
STDEV = STDEV |
||||
|
STDEVP = STDEVP |
||||
|
TDIST = T.VERD |
||||
|
TINV = TINV |
||||
|
TTEST = T.TOETS |
||||
|
VAR = VAR |
||||
|
VARP = VARP |
||||
|
WEIBULL = WEIBULL |
||||
|
ZTEST = Z.TOETS |
||||
@ -0,0 +1,536 @@ |
|||||
|
############################################################ |
||||
|
## |
||||
|
## PhpSpreadsheet - function name translations |
||||
|
## |
||||
|
## Jezyk polski (Polish) |
||||
|
## |
||||
|
############################################################ |
||||
|
|
||||
|
|
||||
|
## |
||||
|
## Funkcje baz danych (Cube Functions) |
||||
|
## |
||||
|
CUBEKPIMEMBER = ELEMENT.KPI.MODUŁU |
||||
|
CUBEMEMBER = ELEMENT.MODUŁU |
||||
|
CUBEMEMBERPROPERTY = WŁAŚCIWOŚĆ.ELEMENTU.MODUŁU |
||||
|
CUBERANKEDMEMBER = USZEREGOWANY.ELEMENT.MODUŁU |
||||
|
CUBESET = ZESTAW.MODUŁÓW |
||||
|
CUBESETCOUNT = LICZNIK.MODUŁÓW.ZESTAWU |
||||
|
CUBEVALUE = WARTOŚĆ.MODUŁU |
||||
|
|
||||
|
## |
||||
|
## Funkcje baz danych (Database Functions) |
||||
|
## |
||||
|
DAVERAGE = BD.ŚREDNIA |
||||
|
DCOUNT = BD.ILE.REKORDÓW |
||||
|
DCOUNTA = BD.ILE.REKORDÓW.A |
||||
|
DGET = BD.POLE |
||||
|
DMAX = BD.MAX |
||||
|
DMIN = BD.MIN |
||||
|
DPRODUCT = BD.ILOCZYN |
||||
|
DSTDEV = BD.ODCH.STANDARD |
||||
|
DSTDEVP = BD.ODCH.STANDARD.POPUL |
||||
|
DSUM = BD.SUMA |
||||
|
DVAR = BD.WARIANCJA |
||||
|
DVARP = BD.WARIANCJA.POPUL |
||||
|
|
||||
|
## |
||||
|
## Funkcje daty i godziny (Date & Time Functions) |
||||
|
## |
||||
|
DATE = DATA |
||||
|
DATEDIF = DATA.RÓŻNICA |
||||
|
DATESTRING = DATA.CIĄG.ZNAK |
||||
|
DATEVALUE = DATA.WARTOŚĆ |
||||
|
DAY = DZIEŃ |
||||
|
DAYS = DNI |
||||
|
DAYS360 = DNI.360 |
||||
|
EDATE = NR.SER.DATY |
||||
|
EOMONTH = NR.SER.OST.DN.MIES |
||||
|
HOUR = GODZINA |
||||
|
ISOWEEKNUM = ISO.NUM.TYG |
||||
|
MINUTE = MINUTA |
||||
|
MONTH = MIESIĄC |
||||
|
NETWORKDAYS = DNI.ROBOCZE |
||||
|
NETWORKDAYS.INTL = DNI.ROBOCZE.NIESTAND |
||||
|
NOW = TERAZ |
||||
|
SECOND = SEKUNDA |
||||
|
THAIDAYOFWEEK = TAJ.DZIEŃ.TYGODNIA |
||||
|
THAIMONTHOFYEAR = TAJ.MIESIĄC.ROKU |
||||
|
THAIYEAR = TAJ.ROK |
||||
|
TIME = CZAS |
||||
|
TIMEVALUE = CZAS.WARTOŚĆ |
||||
|
TODAY = DZIŚ |
||||
|
WEEKDAY = DZIEŃ.TYG |
||||
|
WEEKNUM = NUM.TYG |
||||
|
WORKDAY = DZIEŃ.ROBOCZY |
||||
|
WORKDAY.INTL = DZIEŃ.ROBOCZY.NIESTAND |
||||
|
YEAR = ROK |
||||
|
YEARFRAC = CZĘŚĆ.ROKU |
||||
|
|
||||
|
## |
||||
|
## Funkcje inżynierskie (Engineering Functions) |
||||
|
## |
||||
|
BESSELI = BESSEL.I |
||||
|
BESSELJ = BESSEL.J |
||||
|
BESSELK = BESSEL.K |
||||
|
BESSELY = BESSEL.Y |
||||
|
BIN2DEC = DWÓJK.NA.DZIES |
||||
|
BIN2HEX = DWÓJK.NA.SZESN |
||||
|
BIN2OCT = DWÓJK.NA.ÓSM |
||||
|
BITAND = BITAND |
||||
|
BITLSHIFT = BIT.PRZESUNIĘCIE.W.LEWO |
||||
|
BITOR = BITOR |
||||
|
BITRSHIFT = BIT.PRZESUNIĘCIE.W.PRAWO |
||||
|
BITXOR = BITXOR |
||||
|
COMPLEX = LICZBA.ZESP |
||||
|
CONVERT = KONWERTUJ |
||||
|
DEC2BIN = DZIES.NA.DWÓJK |
||||
|
DEC2HEX = DZIES.NA.SZESN |
||||
|
DEC2OCT = DZIES.NA.ÓSM |
||||
|
DELTA = CZY.RÓWNE |
||||
|
ERF = FUNKCJA.BŁ |
||||
|
ERF.PRECISE = FUNKCJA.BŁ.DOKŁ |
||||
|
ERFC = KOMP.FUNKCJA.BŁ |
||||
|
ERFC.PRECISE = KOMP.FUNKCJA.BŁ.DOKŁ |
||||
|
GESTEP = SPRAWDŹ.PRÓG |
||||
|
HEX2BIN = SZESN.NA.DWÓJK |
||||
|
HEX2DEC = SZESN.NA.DZIES |
||||
|
HEX2OCT = SZESN.NA.ÓSM |
||||
|
IMABS = MODUŁ.LICZBY.ZESP |
||||
|
IMAGINARY = CZ.UROJ.LICZBY.ZESP |
||||
|
IMARGUMENT = ARG.LICZBY.ZESP |
||||
|
IMCONJUGATE = SPRZĘŻ.LICZBY.ZESP |
||||
|
IMCOS = COS.LICZBY.ZESP |
||||
|
IMCOSH = COSH.LICZBY.ZESP |
||||
|
IMCOT = COT.LICZBY.ZESP |
||||
|
IMCSC = CSC.LICZBY.ZESP |
||||
|
IMCSCH = CSCH.LICZBY.ZESP |
||||
|
IMDIV = ILORAZ.LICZB.ZESP |
||||
|
IMEXP = EXP.LICZBY.ZESP |
||||
|
IMLN = LN.LICZBY.ZESP |
||||
|
IMLOG10 = LOG10.LICZBY.ZESP |
||||
|
IMLOG2 = LOG2.LICZBY.ZESP |
||||
|
IMPOWER = POTĘGA.LICZBY.ZESP |
||||
|
IMPRODUCT = ILOCZYN.LICZB.ZESP |
||||
|
IMREAL = CZ.RZECZ.LICZBY.ZESP |
||||
|
IMSEC = SEC.LICZBY.ZESP |
||||
|
IMSECH = SECH.LICZBY.ZESP |
||||
|
IMSIN = SIN.LICZBY.ZESP |
||||
|
IMSINH = SINH.LICZBY.ZESP |
||||
|
IMSQRT = PIERWIASTEK.LICZBY.ZESP |
||||
|
IMSUB = RÓŻN.LICZB.ZESP |
||||
|
IMSUM = SUMA.LICZB.ZESP |
||||
|
IMTAN = TAN.LICZBY.ZESP |
||||
|
OCT2BIN = ÓSM.NA.DWÓJK |
||||
|
OCT2DEC = ÓSM.NA.DZIES |
||||
|
OCT2HEX = ÓSM.NA.SZESN |
||||
|
|
||||
|
## |
||||
|
## Funkcje finansowe (Financial Functions) |
||||
|
## |
||||
|
ACCRINT = NAL.ODS |
||||
|
ACCRINTM = NAL.ODS.WYKUP |
||||
|
AMORDEGRC = AMORT.NIELIN |
||||
|
AMORLINC = AMORT.LIN |
||||
|
COUPDAYBS = WYPŁ.DNI.OD.POCZ |
||||
|
COUPDAYS = WYPŁ.DNI |
||||
|
COUPDAYSNC = WYPŁ.DNI.NAST |
||||
|
COUPNCD = WYPŁ.DATA.NAST |
||||
|
COUPNUM = WYPŁ.LICZBA |
||||
|
COUPPCD = WYPŁ.DATA.POPRZ |
||||
|
CUMIPMT = SPŁAC.ODS |
||||
|
CUMPRINC = SPŁAC.KAPIT |
||||
|
DB = DB |
||||
|
DDB = DDB |
||||
|
DISC = STOPA.DYSK |
||||
|
DOLLARDE = CENA.DZIES |
||||
|
DOLLARFR = CENA.UŁAM |
||||
|
DURATION = ROCZ.PRZYCH |
||||
|
EFFECT = EFEKTYWNA |
||||
|
FV = FV |
||||
|
FVSCHEDULE = WART.PRZYSZŁ.KAP |
||||
|
INTRATE = STOPA.PROC |
||||
|
IPMT = IPMT |
||||
|
IRR = IRR |
||||
|
ISPMT = ISPMT |
||||
|
MDURATION = ROCZ.PRZYCH.M |
||||
|
MIRR = MIRR |
||||
|
NOMINAL = NOMINALNA |
||||
|
NPER = NPER |
||||
|
NPV = NPV |
||||
|
ODDFPRICE = CENA.PIERW.OKR |
||||
|
ODDFYIELD = RENT.PIERW.OKR |
||||
|
ODDLPRICE = CENA.OST.OKR |
||||
|
ODDLYIELD = RENT.OST.OKR |
||||
|
PDURATION = O.CZAS.TRWANIA |
||||
|
PMT = PMT |
||||
|
PPMT = PPMT |
||||
|
PRICE = CENA |
||||
|
PRICEDISC = CENA.DYSK |
||||
|
PRICEMAT = CENA.WYKUP |
||||
|
PV = PV |
||||
|
RATE = RATE |
||||
|
RECEIVED = KWOTA.WYKUP |
||||
|
RRI = RÓWNOW.STOPA.PROC |
||||
|
SLN = SLN |
||||
|
SYD = SYD |
||||
|
TBILLEQ = RENT.EKW.BS |
||||
|
TBILLPRICE = CENA.BS |
||||
|
TBILLYIELD = RENT.BS |
||||
|
VDB = VDB |
||||
|
XIRR = XIRR |
||||
|
XNPV = XNPV |
||||
|
YIELD = RENTOWNOŚĆ |
||||
|
YIELDDISC = RENT.DYSK |
||||
|
YIELDMAT = RENT.WYKUP |
||||
|
|
||||
|
## |
||||
|
## Funkcje informacyjne (Information Functions) |
||||
|
## |
||||
|
CELL = KOMÓRKA |
||||
|
ERROR.TYPE = NR.BŁĘDU |
||||
|
INFO = INFO |
||||
|
ISBLANK = CZY.PUSTA |
||||
|
ISERR = CZY.BŁ |
||||
|
ISERROR = CZY.BŁĄD |
||||
|
ISEVEN = CZY.PARZYSTE |
||||
|
ISFORMULA = CZY.FORMUŁA |
||||
|
ISLOGICAL = CZY.LOGICZNA |
||||
|
ISNA = CZY.BRAK |
||||
|
ISNONTEXT = CZY.NIE.TEKST |
||||
|
ISNUMBER = CZY.LICZBA |
||||
|
ISODD = CZY.NIEPARZYSTE |
||||
|
ISREF = CZY.ADR |
||||
|
ISTEXT = CZY.TEKST |
||||
|
N = N |
||||
|
NA = BRAK |
||||
|
SHEET = ARKUSZ |
||||
|
SHEETS = ARKUSZE |
||||
|
TYPE = TYP |
||||
|
|
||||
|
## |
||||
|
## Funkcje logiczne (Logical Functions) |
||||
|
## |
||||
|
AND = ORAZ |
||||
|
FALSE = FAŁSZ |
||||
|
IF = JEŻELI |
||||
|
IFERROR = JEŻELI.BŁĄD |
||||
|
IFNA = JEŻELI.ND |
||||
|
IFS = WARUNKI |
||||
|
NOT = NIE |
||||
|
OR = LUB |
||||
|
SWITCH = PRZEŁĄCZ |
||||
|
TRUE = PRAWDA |
||||
|
XOR = XOR |
||||
|
|
||||
|
## |
||||
|
## Funkcje wyszukiwania i odwołań (Lookup & Reference Functions) |
||||
|
## |
||||
|
ADDRESS = ADRES |
||||
|
AREAS = OBSZARY |
||||
|
CHOOSE = WYBIERZ |
||||
|
COLUMN = NR.KOLUMNY |
||||
|
COLUMNS = LICZBA.KOLUMN |
||||
|
FORMULATEXT = FORMUŁA.TEKST |
||||
|
GETPIVOTDATA = WEŹDANETABELI |
||||
|
HLOOKUP = WYSZUKAJ.POZIOMO |
||||
|
HYPERLINK = HIPERŁĄCZE |
||||
|
INDEX = INDEKS |
||||
|
INDIRECT = ADR.POŚR |
||||
|
LOOKUP = WYSZUKAJ |
||||
|
MATCH = PODAJ.POZYCJĘ |
||||
|
OFFSET = PRZESUNIĘCIE |
||||
|
ROW = WIERSZ |
||||
|
ROWS = ILE.WIERSZY |
||||
|
RTD = DANE.CZASU.RZECZ |
||||
|
TRANSPOSE = TRANSPONUJ |
||||
|
VLOOKUP = WYSZUKAJ.PIONOWO |
||||
|
|
||||
|
## |
||||
|
## Funkcje matematyczne i trygonometryczne (Math & Trig Functions) |
||||
|
## |
||||
|
ABS = MODUŁ.LICZBY |
||||
|
ACOS = ACOS |
||||
|
ACOSH = ACOSH |
||||
|
ACOT = ACOT |
||||
|
ACOTH = ACOTH |
||||
|
AGGREGATE = AGREGUJ |
||||
|
ARABIC = ARABSKIE |
||||
|
ASIN = ASIN |
||||
|
ASINH = ASINH |
||||
|
ATAN = ATAN |
||||
|
ATAN2 = ATAN2 |
||||
|
ATANH = ATANH |
||||
|
BASE = PODSTAWA |
||||
|
CEILING.MATH = ZAOKR.W.GÓRĘ.MATEMATYCZNE |
||||
|
CEILING.PRECISE = ZAOKR.W.GÓRĘ.DOKŁ |
||||
|
COMBIN = KOMBINACJE |
||||
|
COMBINA = KOMBINACJE.A |
||||
|
COS = COS |
||||
|
COSH = COSH |
||||
|
COT = COT |
||||
|
COTH = COTH |
||||
|
CSC = CSC |
||||
|
CSCH = CSCH |
||||
|
DECIMAL = DZIESIĘTNA |
||||
|
DEGREES = STOPNIE |
||||
|
ECMA.CEILING = ECMA.ZAOKR.W.GÓRĘ |
||||
|
EVEN = ZAOKR.DO.PARZ |
||||
|
EXP = EXP |
||||
|
FACT = SILNIA |
||||
|
FACTDOUBLE = SILNIA.DWUKR |
||||
|
FLOOR.MATH = ZAOKR.W.DÓŁ.MATEMATYCZNE |
||||
|
FLOOR.PRECISE = ZAOKR.W.DÓŁ.DOKŁ |
||||
|
GCD = NAJW.WSP.DZIEL |
||||
|
INT = ZAOKR.DO.CAŁK |
||||
|
ISO.CEILING = ISO.ZAOKR.W.GÓRĘ |
||||
|
LCM = NAJMN.WSP.WIEL |
||||
|
LN = LN |
||||
|
LOG = LOG |
||||
|
LOG10 = LOG10 |
||||
|
MDETERM = WYZNACZNIK.MACIERZY |
||||
|
MINVERSE = MACIERZ.ODW |
||||
|
MMULT = MACIERZ.ILOCZYN |
||||
|
MOD = MOD |
||||
|
MROUND = ZAOKR.DO.WIELOKR |
||||
|
MULTINOMIAL = WIELOMIAN |
||||
|
MUNIT = MACIERZ.JEDNOSTKOWA |
||||
|
ODD = ZAOKR.DO.NPARZ |
||||
|
PI = PI |
||||
|
POWER = POTĘGA |
||||
|
PRODUCT = ILOCZYN |
||||
|
QUOTIENT = CZ.CAŁK.DZIELENIA |
||||
|
RADIANS = RADIANY |
||||
|
RAND = LOS |
||||
|
RANDBETWEEN = LOS.ZAKR |
||||
|
ROMAN = RZYMSKIE |
||||
|
ROUND = ZAOKR |
||||
|
ROUNDBAHTDOWN = ZAOKR.DÓŁ.BAT |
||||
|
ROUNDBAHTUP = ZAOKR.GÓRA.BAT |
||||
|
ROUNDDOWN = ZAOKR.DÓŁ |
||||
|
ROUNDUP = ZAOKR.GÓRA |
||||
|
SEC = SEC |
||||
|
SECH = SECH |
||||
|
SERIESSUM = SUMA.SZER.POT |
||||
|
SIGN = ZNAK.LICZBY |
||||
|
SIN = SIN |
||||
|
SINH = SINH |
||||
|
SQRT = PIERWIASTEK |
||||
|
SQRTPI = PIERW.PI |
||||
|
SUBTOTAL = SUMY.CZĘŚCIOWE |
||||
|
SUM = SUMA |
||||
|
SUMIF = SUMA.JEŻELI |
||||
|
SUMIFS = SUMA.WARUNKÓW |
||||
|
SUMPRODUCT = SUMA.ILOCZYNÓW |
||||
|
SUMSQ = SUMA.KWADRATÓW |
||||
|
SUMX2MY2 = SUMA.X2.M.Y2 |
||||
|
SUMX2PY2 = SUMA.X2.P.Y2 |
||||
|
SUMXMY2 = SUMA.XMY.2 |
||||
|
TAN = TAN |
||||
|
TANH = TANH |
||||
|
TRUNC = LICZBA.CAŁK |
||||
|
|
||||
|
## |
||||
|
## Funkcje statystyczne (Statistical Functions) |
||||
|
## |
||||
|
AVEDEV = ODCH.ŚREDNIE |
||||
|
AVERAGE = ŚREDNIA |
||||
|
AVERAGEA = ŚREDNIA.A |
||||
|
AVERAGEIF = ŚREDNIA.JEŻELI |
||||
|
AVERAGEIFS = ŚREDNIA.WARUNKÓW |
||||
|
BETA.DIST = ROZKŁ.BETA |
||||
|
BETA.INV = ROZKŁ.BETA.ODWR |
||||
|
BINOM.DIST = ROZKŁ.DWUM |
||||
|
BINOM.DIST.RANGE = ROZKŁ.DWUM.ZAKRES |
||||
|
BINOM.INV = ROZKŁ.DWUM.ODWR |
||||
|
CHISQ.DIST = ROZKŁ.CHI |
||||
|
CHISQ.DIST.RT = ROZKŁ.CHI.PS |
||||
|
CHISQ.INV = ROZKŁ.CHI.ODWR |
||||
|
CHISQ.INV.RT = ROZKŁ.CHI.ODWR.PS |
||||
|
CHISQ.TEST = CHI.TEST |
||||
|
CONFIDENCE.NORM = UFNOŚĆ.NORM |
||||
|
CONFIDENCE.T = UFNOŚĆ.T |
||||
|
CORREL = WSP.KORELACJI |
||||
|
COUNT = ILE.LICZB |
||||
|
COUNTA = ILE.NIEPUSTYCH |
||||
|
COUNTBLANK = LICZ.PUSTE |
||||
|
COUNTIF = LICZ.JEŻELI |
||||
|
COUNTIFS = LICZ.WARUNKI |
||||
|
COVARIANCE.P = KOWARIANCJA.POPUL |
||||
|
COVARIANCE.S = KOWARIANCJA.PRÓBKI |
||||
|
DEVSQ = ODCH.KWADRATOWE |
||||
|
EXPON.DIST = ROZKŁ.EXP |
||||
|
F.DIST = ROZKŁ.F |
||||
|
F.DIST.RT = ROZKŁ.F.PS |
||||
|
F.INV = ROZKŁ.F.ODWR |
||||
|
F.INV.RT = ROZKŁ.F.ODWR.PS |
||||
|
F.TEST = F.TEST |
||||
|
FISHER = ROZKŁAD.FISHER |
||||
|
FISHERINV = ROZKŁAD.FISHER.ODW |
||||
|
FORECAST.ETS = REGLINX.ETS |
||||
|
FORECAST.ETS.CONFINT = REGLINX.ETS.CONFINT |
||||
|
FORECAST.ETS.SEASONALITY = REGLINX.ETS.SEZONOWOŚĆ |
||||
|
FORECAST.ETS.STAT = REGLINX.ETS.STATYSTYKA |
||||
|
FORECAST.LINEAR = REGLINX.LINIOWA |
||||
|
FREQUENCY = CZĘSTOŚĆ |
||||
|
GAMMA = GAMMA |
||||
|
GAMMA.DIST = ROZKŁ.GAMMA |
||||
|
GAMMA.INV = ROZKŁ.GAMMA.ODWR |
||||
|
GAMMALN = ROZKŁAD.LIN.GAMMA |
||||
|
GAMMALN.PRECISE = ROZKŁAD.LIN.GAMMA.DOKŁ |
||||
|
GAUSS = GAUSS |
||||
|
GEOMEAN = ŚREDNIA.GEOMETRYCZNA |
||||
|
GROWTH = REGEXPW |
||||
|
HARMEAN = ŚREDNIA.HARMONICZNA |
||||
|
HYPGEOM.DIST = ROZKŁ.HIPERGEOM |
||||
|
INTERCEPT = ODCIĘTA |
||||
|
KURT = KURTOZA |
||||
|
LARGE = MAX.K |
||||
|
LINEST = REGLINP |
||||
|
LOGEST = REGEXPP |
||||
|
LOGNORM.DIST = ROZKŁ.LOG |
||||
|
LOGNORM.INV = ROZKŁ.LOG.ODWR |
||||
|
MAX = MAX |
||||
|
MAXA = MAX.A |
||||
|
MAXIFS = MAKS.WARUNKÓW |
||||
|
MEDIAN = MEDIANA |
||||
|
MIN = MIN |
||||
|
MINA = MIN.A |
||||
|
MINIFS = MIN.WARUNKÓW |
||||
|
MODE.MULT = WYST.NAJCZĘŚCIEJ.TABL |
||||
|
MODE.SNGL = WYST.NAJCZĘŚCIEJ.WART |
||||
|
NEGBINOM.DIST = ROZKŁ.DWUM.PRZEC |
||||
|
NORM.DIST = ROZKŁ.NORMALNY |
||||
|
NORM.INV = ROZKŁ.NORMALNY.ODWR |
||||
|
NORM.S.DIST = ROZKŁ.NORMALNY.S |
||||
|
NORM.S.INV = ROZKŁ.NORMALNY.S.ODWR |
||||
|
PEARSON = PEARSON |
||||
|
PERCENTILE.EXC = PERCENTYL.PRZEDZ.OTW |
||||
|
PERCENTILE.INC = PERCENTYL.PRZEDZ.ZAMK |
||||
|
PERCENTRANK.EXC = PROC.POZ.PRZEDZ.OTW |
||||
|
PERCENTRANK.INC = PROC.POZ.PRZEDZ.ZAMK |
||||
|
PERMUT = PERMUTACJE |
||||
|
PERMUTATIONA = PERMUTACJE.A |
||||
|
PHI = PHI |
||||
|
POISSON.DIST = ROZKŁ.POISSON |
||||
|
PROB = PRAWDPD |
||||
|
QUARTILE.EXC = KWARTYL.PRZEDZ.OTW |
||||
|
QUARTILE.INC = KWARTYL.PRZEDZ.ZAMK |
||||
|
RANK.AVG = POZYCJA.ŚR |
||||
|
RANK.EQ = POZYCJA.NAJW |
||||
|
RSQ = R.KWADRAT |
||||
|
SKEW = SKOŚNOŚĆ |
||||
|
SKEW.P = SKOŚNOŚĆ.P |
||||
|
SLOPE = NACHYLENIE |
||||
|
SMALL = MIN.K |
||||
|
STANDARDIZE = NORMALIZUJ |
||||
|
STDEV.P = ODCH.STAND.POPUL |
||||
|
STDEV.S = ODCH.STANDARD.PRÓBKI |
||||
|
STDEVA = ODCH.STANDARDOWE.A |
||||
|
STDEVPA = ODCH.STANDARD.POPUL.A |
||||
|
STEYX = REGBŁSTD |
||||
|
T.DIST = ROZKŁ.T |
||||
|
T.DIST.2T = ROZKŁ.T.DS |
||||
|
T.DIST.RT = ROZKŁ.T.PS |
||||
|
T.INV = ROZKŁ.T.ODWR |
||||
|
T.INV.2T = ROZKŁ.T.ODWR.DS |
||||
|
T.TEST = T.TEST |
||||
|
TREND = REGLINW |
||||
|
TRIMMEAN = ŚREDNIA.WEWN |
||||
|
VAR.P = WARIANCJA.POP |
||||
|
VAR.S = WARIANCJA.PRÓBKI |
||||
|
VARA = WARIANCJA.A |
||||
|
VARPA = WARIANCJA.POPUL.A |
||||
|
WEIBULL.DIST = ROZKŁ.WEIBULL |
||||
|
Z.TEST = Z.TEST |
||||
|
|
||||
|
## |
||||
|
## Funkcje tekstowe (Text Functions) |
||||
|
## |
||||
|
BAHTTEXT = BAT.TEKST |
||||
|
CHAR = ZNAK |
||||
|
CLEAN = OCZYŚĆ |
||||
|
CODE = KOD |
||||
|
CONCAT = ZŁĄCZ.TEKST |
||||
|
DOLLAR = KWOTA |
||||
|
EXACT = PORÓWNAJ |
||||
|
FIND = ZNAJDŹ |
||||
|
FIXED = ZAOKR.DO.TEKST |
||||
|
ISTHAIDIGIT = CZY.CYFRA.TAJ |
||||
|
LEFT = LEWY |
||||
|
LEN = DŁ |
||||
|
LOWER = LITERY.MAŁE |
||||
|
MID = FRAGMENT.TEKSTU |
||||
|
NUMBERSTRING = LICZBA.CIĄG.ZNAK |
||||
|
NUMBERVALUE = WARTOŚĆ.LICZBOWA |
||||
|
PROPER = Z.WIELKIEJ.LITERY |
||||
|
REPLACE = ZASTĄP |
||||
|
REPT = POWT |
||||
|
RIGHT = PRAWY |
||||
|
SEARCH = SZUKAJ.TEKST |
||||
|
SUBSTITUTE = PODSTAW |
||||
|
T = T |
||||
|
TEXT = TEKST |
||||
|
TEXTJOIN = POŁĄCZ.TEKSTY |
||||
|
THAIDIGIT = TAJ.CYFRA |
||||
|
THAINUMSOUND = TAJ.DŹWIĘK.NUM |
||||
|
THAINUMSTRING = TAJ.CIĄG.NUM |
||||
|
THAISTRINGLENGTH = TAJ.DŁUGOŚĆ.CIĄGU |
||||
|
TRIM = USUŃ.ZBĘDNE.ODSTĘPY |
||||
|
UNICHAR = ZNAK.UNICODE |
||||
|
UNICODE = UNICODE |
||||
|
UPPER = LITERY.WIELKIE |
||||
|
VALUE = WARTOŚĆ |
||||
|
|
||||
|
## |
||||
|
## Funkcje sieci Web (Web Functions) |
||||
|
## |
||||
|
ENCODEURL = ENCODEURL |
||||
|
FILTERXML = FILTERXML |
||||
|
WEBSERVICE = WEBSERVICE |
||||
|
|
||||
|
## |
||||
|
## Funkcje zgodności (Compatibility Functions) |
||||
|
## |
||||
|
BETADIST = ROZKŁAD.BETA |
||||
|
BETAINV = ROZKŁAD.BETA.ODW |
||||
|
BINOMDIST = ROZKŁAD.DWUM |
||||
|
CEILING = ZAOKR.W.GÓRĘ |
||||
|
CHIDIST = ROZKŁAD.CHI |
||||
|
CHIINV = ROZKŁAD.CHI.ODW |
||||
|
CHITEST = TEST.CHI |
||||
|
CONCATENATE = ZŁĄCZ.TEKSTY |
||||
|
CONFIDENCE = UFNOŚĆ |
||||
|
COVAR = KOWARIANCJA |
||||
|
CRITBINOM = PRÓG.ROZKŁAD.DWUM |
||||
|
EXPONDIST = ROZKŁAD.EXP |
||||
|
FDIST = ROZKŁAD.F |
||||
|
FINV = ROZKŁAD.F.ODW |
||||
|
FLOOR = ZAOKR.W.DÓŁ |
||||
|
FORECAST = REGLINX |
||||
|
FTEST = TEST.F |
||||
|
GAMMADIST = ROZKŁAD.GAMMA |
||||
|
GAMMAINV = ROZKŁAD.GAMMA.ODW |
||||
|
HYPGEOMDIST = ROZKŁAD.HIPERGEOM |
||||
|
LOGINV = ROZKŁAD.LOG.ODW |
||||
|
LOGNORMDIST = ROZKŁAD.LOG |
||||
|
MODE = WYST.NAJCZĘŚCIEJ |
||||
|
NEGBINOMDIST = ROZKŁAD.DWUM.PRZEC |
||||
|
NORMDIST = ROZKŁAD.NORMALNY |
||||
|
NORMINV = ROZKŁAD.NORMALNY.ODW |
||||
|
NORMSDIST = ROZKŁAD.NORMALNY.S |
||||
|
NORMSINV = ROZKŁAD.NORMALNY.S.ODW |
||||
|
PERCENTILE = PERCENTYL |
||||
|
PERCENTRANK = PROCENT.POZYCJA |
||||
|
POISSON = ROZKŁAD.POISSON |
||||
|
QUARTILE = KWARTYL |
||||
|
RANK = POZYCJA |
||||
|
STDEV = ODCH.STANDARDOWE |
||||
|
STDEVP = ODCH.STANDARD.POPUL |
||||
|
TDIST = ROZKŁAD.T |
||||
|
TINV = ROZKŁAD.T.ODW |
||||
|
TTEST = TEST.T |
||||
|
VAR = WARIANCJA |
||||
|
VARP = WARIANCJA.POPUL |
||||
|
WEIBULL = ROZKŁAD.WEIBULL |
||||
|
ZTEST = TEST.Z |
||||
@ -0,0 +1,527 @@ |
|||||
|
############################################################ |
||||
|
## |
||||
|
## PhpSpreadsheet - function name translations |
||||
|
## |
||||
|
## Português Brasileiro (Brazilian Portuguese) |
||||
|
## |
||||
|
############################################################ |
||||
|
|
||||
|
|
||||
|
## |
||||
|
## Funções de cubo (Cube Functions) |
||||
|
## |
||||
|
CUBEKPIMEMBER = MEMBROKPICUBO |
||||
|
CUBEMEMBER = MEMBROCUBO |
||||
|
CUBEMEMBERPROPERTY = PROPRIEDADEMEMBROCUBO |
||||
|
CUBERANKEDMEMBER = MEMBROCLASSIFICADOCUBO |
||||
|
CUBESET = CONJUNTOCUBO |
||||
|
CUBESETCOUNT = CONTAGEMCONJUNTOCUBO |
||||
|
CUBEVALUE = VALORCUBO |
||||
|
|
||||
|
## |
||||
|
## Funções de banco de dados (Database Functions) |
||||
|
## |
||||
|
DAVERAGE = BDMÉDIA |
||||
|
DCOUNT = BDCONTAR |
||||
|
DCOUNTA = BDCONTARA |
||||
|
DGET = BDEXTRAIR |
||||
|
DMAX = BDMÁX |
||||
|
DMIN = BDMÍN |
||||
|
DPRODUCT = BDMULTIPL |
||||
|
DSTDEV = BDEST |
||||
|
DSTDEVP = BDDESVPA |
||||
|
DSUM = BDSOMA |
||||
|
DVAR = BDVAREST |
||||
|
DVARP = BDVARP |
||||
|
|
||||
|
## |
||||
|
## Funções de data e hora (Date & Time Functions) |
||||
|
## |
||||
|
DATE = DATA |
||||
|
DATEDIF = DATADIF |
||||
|
DATESTRING = DATA.SÉRIE |
||||
|
DATEVALUE = DATA.VALOR |
||||
|
DAY = DIA |
||||
|
DAYS = DIAS |
||||
|
DAYS360 = DIAS360 |
||||
|
EDATE = DATAM |
||||
|
EOMONTH = FIMMÊS |
||||
|
HOUR = HORA |
||||
|
ISOWEEKNUM = NÚMSEMANAISO |
||||
|
MINUTE = MINUTO |
||||
|
MONTH = MÊS |
||||
|
NETWORKDAYS = DIATRABALHOTOTAL |
||||
|
NETWORKDAYS.INTL = DIATRABALHOTOTAL.INTL |
||||
|
NOW = AGORA |
||||
|
SECOND = SEGUNDO |
||||
|
TIME = TEMPO |
||||
|
TIMEVALUE = VALOR.TEMPO |
||||
|
TODAY = HOJE |
||||
|
WEEKDAY = DIA.DA.SEMANA |
||||
|
WEEKNUM = NÚMSEMANA |
||||
|
WORKDAY = DIATRABALHO |
||||
|
WORKDAY.INTL = DIATRABALHO.INTL |
||||
|
YEAR = ANO |
||||
|
YEARFRAC = FRAÇÃOANO |
||||
|
|
||||
|
## |
||||
|
## Funções de engenharia (Engineering Functions) |
||||
|
## |
||||
|
BESSELI = BESSELI |
||||
|
BESSELJ = BESSELJ |
||||
|
BESSELK = BESSELK |
||||
|
BESSELY = BESSELY |
||||
|
BIN2DEC = BINADEC |
||||
|
BIN2HEX = BINAHEX |
||||
|
BIN2OCT = BINAOCT |
||||
|
BITAND = BITAND |
||||
|
BITLSHIFT = DESLOCESQBIT |
||||
|
BITOR = BITOR |
||||
|
BITRSHIFT = DESLOCDIRBIT |
||||
|
BITXOR = BITXOR |
||||
|
COMPLEX = COMPLEXO |
||||
|
CONVERT = CONVERTER |
||||
|
DEC2BIN = DECABIN |
||||
|
DEC2HEX = DECAHEX |
||||
|
DEC2OCT = DECAOCT |
||||
|
DELTA = DELTA |
||||
|
ERF = FUNERRO |
||||
|
ERF.PRECISE = FUNERRO.PRECISO |
||||
|
ERFC = FUNERROCOMPL |
||||
|
ERFC.PRECISE = FUNERROCOMPL.PRECISO |
||||
|
GESTEP = DEGRAU |
||||
|
HEX2BIN = HEXABIN |
||||
|
HEX2DEC = HEXADEC |
||||
|
HEX2OCT = HEXAOCT |
||||
|
IMABS = IMABS |
||||
|
IMAGINARY = IMAGINÁRIO |
||||
|
IMARGUMENT = IMARG |
||||
|
IMCONJUGATE = IMCONJ |
||||
|
IMCOS = IMCOS |
||||
|
IMCOSH = IMCOSH |
||||
|
IMCOT = IMCOT |
||||
|
IMCSC = IMCOSEC |
||||
|
IMCSCH = IMCOSECH |
||||
|
IMDIV = IMDIV |
||||
|
IMEXP = IMEXP |
||||
|
IMLN = IMLN |
||||
|
IMLOG10 = IMLOG10 |
||||
|
IMLOG2 = IMLOG2 |
||||
|
IMPOWER = IMPOT |
||||
|
IMPRODUCT = IMPROD |
||||
|
IMREAL = IMREAL |
||||
|
IMSEC = IMSEC |
||||
|
IMSECH = IMSECH |
||||
|
IMSIN = IMSENO |
||||
|
IMSINH = IMSENH |
||||
|
IMSQRT = IMRAIZ |
||||
|
IMSUB = IMSUBTR |
||||
|
IMSUM = IMSOMA |
||||
|
IMTAN = IMTAN |
||||
|
OCT2BIN = OCTABIN |
||||
|
OCT2DEC = OCTADEC |
||||
|
OCT2HEX = OCTAHEX |
||||
|
|
||||
|
## |
||||
|
## Funções financeiras (Financial Functions) |
||||
|
## |
||||
|
ACCRINT = JUROSACUM |
||||
|
ACCRINTM = JUROSACUMV |
||||
|
AMORDEGRC = AMORDEGRC |
||||
|
AMORLINC = AMORLINC |
||||
|
COUPDAYBS = CUPDIASINLIQ |
||||
|
COUPDAYS = CUPDIAS |
||||
|
COUPDAYSNC = CUPDIASPRÓX |
||||
|
COUPNCD = CUPDATAPRÓX |
||||
|
COUPNUM = CUPNÚM |
||||
|
COUPPCD = CUPDATAANT |
||||
|
CUMIPMT = PGTOJURACUM |
||||
|
CUMPRINC = PGTOCAPACUM |
||||
|
DB = BD |
||||
|
DDB = BDD |
||||
|
DISC = DESC |
||||
|
DOLLARDE = MOEDADEC |
||||
|
DOLLARFR = MOEDAFRA |
||||
|
DURATION = DURAÇÃO |
||||
|
EFFECT = EFETIVA |
||||
|
FV = VF |
||||
|
FVSCHEDULE = VFPLANO |
||||
|
INTRATE = TAXAJUROS |
||||
|
IPMT = IPGTO |
||||
|
IRR = TIR |
||||
|
ISPMT = ÉPGTO |
||||
|
MDURATION = MDURAÇÃO |
||||
|
MIRR = MTIR |
||||
|
NOMINAL = NOMINAL |
||||
|
NPER = NPER |
||||
|
NPV = VPL |
||||
|
ODDFPRICE = PREÇOPRIMINC |
||||
|
ODDFYIELD = LUCROPRIMINC |
||||
|
ODDLPRICE = PREÇOÚLTINC |
||||
|
ODDLYIELD = LUCROÚLTINC |
||||
|
PDURATION = DURAÇÃOP |
||||
|
PMT = PGTO |
||||
|
PPMT = PPGTO |
||||
|
PRICE = PREÇO |
||||
|
PRICEDISC = PREÇODESC |
||||
|
PRICEMAT = PREÇOVENC |
||||
|
PV = VP |
||||
|
RATE = TAXA |
||||
|
RECEIVED = RECEBER |
||||
|
RRI = TAXAJURO |
||||
|
SLN = DPD |
||||
|
SYD = SDA |
||||
|
TBILLEQ = OTN |
||||
|
TBILLPRICE = OTNVALOR |
||||
|
TBILLYIELD = OTNLUCRO |
||||
|
VDB = BDV |
||||
|
XIRR = XTIR |
||||
|
XNPV = XVPL |
||||
|
YIELD = LUCRO |
||||
|
YIELDDISC = LUCRODESC |
||||
|
YIELDMAT = LUCROVENC |
||||
|
|
||||
|
## |
||||
|
## Funções de informação (Information Functions) |
||||
|
## |
||||
|
CELL = CÉL |
||||
|
ERROR.TYPE = TIPO.ERRO |
||||
|
INFO = INFORMAÇÃO |
||||
|
ISBLANK = ÉCÉL.VAZIA |
||||
|
ISERR = ÉERRO |
||||
|
ISERROR = ÉERROS |
||||
|
ISEVEN = ÉPAR |
||||
|
ISFORMULA = ÉFÓRMULA |
||||
|
ISLOGICAL = ÉLÓGICO |
||||
|
ISNA = É.NÃO.DISP |
||||
|
ISNONTEXT = É.NÃO.TEXTO |
||||
|
ISNUMBER = ÉNÚM |
||||
|
ISODD = ÉIMPAR |
||||
|
ISREF = ÉREF |
||||
|
ISTEXT = ÉTEXTO |
||||
|
N = N |
||||
|
NA = NÃO.DISP |
||||
|
SHEET = PLAN |
||||
|
SHEETS = PLANS |
||||
|
TYPE = TIPO |
||||
|
|
||||
|
## |
||||
|
## Funções lógicas (Logical Functions) |
||||
|
## |
||||
|
AND = E |
||||
|
FALSE = FALSO |
||||
|
IF = SE |
||||
|
IFERROR = SEERRO |
||||
|
IFNA = SENÃODISP |
||||
|
IFS = SES |
||||
|
NOT = NÃO |
||||
|
OR = OU |
||||
|
SWITCH = PARÂMETRO |
||||
|
TRUE = VERDADEIRO |
||||
|
XOR = XOR |
||||
|
|
||||
|
## |
||||
|
## Funções de pesquisa e referência (Lookup & Reference Functions) |
||||
|
## |
||||
|
ADDRESS = ENDEREÇO |
||||
|
AREAS = ÁREAS |
||||
|
CHOOSE = ESCOLHER |
||||
|
COLUMN = COL |
||||
|
COLUMNS = COLS |
||||
|
FORMULATEXT = FÓRMULATEXTO |
||||
|
GETPIVOTDATA = INFODADOSTABELADINÂMICA |
||||
|
HLOOKUP = PROCH |
||||
|
HYPERLINK = HIPERLINK |
||||
|
INDEX = ÍNDICE |
||||
|
INDIRECT = INDIRETO |
||||
|
LOOKUP = PROC |
||||
|
MATCH = CORRESP |
||||
|
OFFSET = DESLOC |
||||
|
ROW = LIN |
||||
|
ROWS = LINS |
||||
|
RTD = RTD |
||||
|
TRANSPOSE = TRANSPOR |
||||
|
VLOOKUP = PROCV |
||||
|
|
||||
|
## |
||||
|
## Funções matemáticas e trigonométricas (Math & Trig Functions) |
||||
|
## |
||||
|
ABS = ABS |
||||
|
ACOS = ACOS |
||||
|
ACOSH = ACOSH |
||||
|
ACOT = ACOT |
||||
|
ACOTH = ACOTH |
||||
|
AGGREGATE = AGREGAR |
||||
|
ARABIC = ARÁBICO |
||||
|
ASIN = ASEN |
||||
|
ASINH = ASENH |
||||
|
ATAN = ATAN |
||||
|
ATAN2 = ATAN2 |
||||
|
ATANH = ATANH |
||||
|
BASE = BASE |
||||
|
CEILING.MATH = TETO.MAT |
||||
|
CEILING.PRECISE = TETO.PRECISO |
||||
|
COMBIN = COMBIN |
||||
|
COMBINA = COMBINA |
||||
|
COS = COS |
||||
|
COSH = COSH |
||||
|
COT = COT |
||||
|
COTH = COTH |
||||
|
CSC = COSEC |
||||
|
CSCH = COSECH |
||||
|
DECIMAL = DECIMAL |
||||
|
DEGREES = GRAUS |
||||
|
ECMA.CEILING = ECMA.TETO |
||||
|
EVEN = PAR |
||||
|
EXP = EXP |
||||
|
FACT = FATORIAL |
||||
|
FACTDOUBLE = FATDUPLO |
||||
|
FLOOR.MATH = ARREDMULTB.MAT |
||||
|
FLOOR.PRECISE = ARREDMULTB.PRECISO |
||||
|
GCD = MDC |
||||
|
INT = INT |
||||
|
ISO.CEILING = ISO.TETO |
||||
|
LCM = MMC |
||||
|
LN = LN |
||||
|
LOG = LOG |
||||
|
LOG10 = LOG10 |
||||
|
MDETERM = MATRIZ.DETERM |
||||
|
MINVERSE = MATRIZ.INVERSO |
||||
|
MMULT = MATRIZ.MULT |
||||
|
MOD = MOD |
||||
|
MROUND = MARRED |
||||
|
MULTINOMIAL = MULTINOMIAL |
||||
|
MUNIT = MUNIT |
||||
|
ODD = ÍMPAR |
||||
|
PI = PI |
||||
|
POWER = POTÊNCIA |
||||
|
PRODUCT = MULT |
||||
|
QUOTIENT = QUOCIENTE |
||||
|
RADIANS = RADIANOS |
||||
|
RAND = ALEATÓRIO |
||||
|
RANDBETWEEN = ALEATÓRIOENTRE |
||||
|
ROMAN = ROMANO |
||||
|
ROUND = ARRED |
||||
|
ROUNDDOWN = ARREDONDAR.PARA.BAIXO |
||||
|
ROUNDUP = ARREDONDAR.PARA.CIMA |
||||
|
SEC = SEC |
||||
|
SECH = SECH |
||||
|
SERIESSUM = SOMASEQÜÊNCIA |
||||
|
SIGN = SINAL |
||||
|
SIN = SEN |
||||
|
SINH = SENH |
||||
|
SQRT = RAIZ |
||||
|
SQRTPI = RAIZPI |
||||
|
SUBTOTAL = SUBTOTAL |
||||
|
SUM = SOMA |
||||
|
SUMIF = SOMASE |
||||
|
SUMIFS = SOMASES |
||||
|
SUMPRODUCT = SOMARPRODUTO |
||||
|
SUMSQ = SOMAQUAD |
||||
|
SUMX2MY2 = SOMAX2DY2 |
||||
|
SUMX2PY2 = SOMAX2SY2 |
||||
|
SUMXMY2 = SOMAXMY2 |
||||
|
TAN = TAN |
||||
|
TANH = TANH |
||||
|
TRUNC = TRUNCAR |
||||
|
|
||||
|
## |
||||
|
## Funções estatísticas (Statistical Functions) |
||||
|
## |
||||
|
AVEDEV = DESV.MÉDIO |
||||
|
AVERAGE = MÉDIA |
||||
|
AVERAGEA = MÉDIAA |
||||
|
AVERAGEIF = MÉDIASE |
||||
|
AVERAGEIFS = MÉDIASES |
||||
|
BETA.DIST = DIST.BETA |
||||
|
BETA.INV = INV.BETA |
||||
|
BINOM.DIST = DISTR.BINOM |
||||
|
BINOM.DIST.RANGE = INTERV.DISTR.BINOM |
||||
|
BINOM.INV = INV.BINOM |
||||
|
CHISQ.DIST = DIST.QUIQUA |
||||
|
CHISQ.DIST.RT = DIST.QUIQUA.CD |
||||
|
CHISQ.INV = INV.QUIQUA |
||||
|
CHISQ.INV.RT = INV.QUIQUA.CD |
||||
|
CHISQ.TEST = TESTE.QUIQUA |
||||
|
CONFIDENCE.NORM = INT.CONFIANÇA.NORM |
||||
|
CONFIDENCE.T = INT.CONFIANÇA.T |
||||
|
CORREL = CORREL |
||||
|
COUNT = CONT.NÚM |
||||
|
COUNTA = CONT.VALORES |
||||
|
COUNTBLANK = CONTAR.VAZIO |
||||
|
COUNTIF = CONT.SE |
||||
|
COUNTIFS = CONT.SES |
||||
|
COVARIANCE.P = COVARIAÇÃO.P |
||||
|
COVARIANCE.S = COVARIAÇÃO.S |
||||
|
DEVSQ = DESVQ |
||||
|
EXPON.DIST = DISTR.EXPON |
||||
|
F.DIST = DIST.F |
||||
|
F.DIST.RT = DIST.F.CD |
||||
|
F.INV = INV.F |
||||
|
F.INV.RT = INV.F.CD |
||||
|
F.TEST = TESTE.F |
||||
|
FISHER = FISHER |
||||
|
FISHERINV = FISHERINV |
||||
|
FORECAST.ETS = PREVISÃO.ETS |
||||
|
FORECAST.ETS.CONFINT = PREVISÃO.ETS.CONFINT |
||||
|
FORECAST.ETS.SEASONALITY = PREVISÃO.ETS.SAZONALIDADE |
||||
|
FORECAST.ETS.STAT = PREVISÃO.ETS.STAT |
||||
|
FORECAST.LINEAR = PREVISÃO.LINEAR |
||||
|
FREQUENCY = FREQÜÊNCIA |
||||
|
GAMMA = GAMA |
||||
|
GAMMA.DIST = DIST.GAMA |
||||
|
GAMMA.INV = INV.GAMA |
||||
|
GAMMALN = LNGAMA |
||||
|
GAMMALN.PRECISE = LNGAMA.PRECISO |
||||
|
GAUSS = GAUSS |
||||
|
GEOMEAN = MÉDIA.GEOMÉTRICA |
||||
|
GROWTH = CRESCIMENTO |
||||
|
HARMEAN = MÉDIA.HARMÔNICA |
||||
|
HYPGEOM.DIST = DIST.HIPERGEOM.N |
||||
|
INTERCEPT = INTERCEPÇÃO |
||||
|
KURT = CURT |
||||
|
LARGE = MAIOR |
||||
|
LINEST = PROJ.LIN |
||||
|
LOGEST = PROJ.LOG |
||||
|
LOGNORM.DIST = DIST.LOGNORMAL.N |
||||
|
LOGNORM.INV = INV.LOGNORMAL |
||||
|
MAX = MÁXIMO |
||||
|
MAXA = MÁXIMOA |
||||
|
MAXIFS = MÁXIMOSES |
||||
|
MEDIAN = MED |
||||
|
MIN = MÍNIMO |
||||
|
MINA = MÍNIMOA |
||||
|
MINIFS = MÍNIMOSES |
||||
|
MODE.MULT = MODO.MULT |
||||
|
MODE.SNGL = MODO.ÚNICO |
||||
|
NEGBINOM.DIST = DIST.BIN.NEG.N |
||||
|
NORM.DIST = DIST.NORM.N |
||||
|
NORM.INV = INV.NORM.N |
||||
|
NORM.S.DIST = DIST.NORMP.N |
||||
|
NORM.S.INV = INV.NORMP.N |
||||
|
PEARSON = PEARSON |
||||
|
PERCENTILE.EXC = PERCENTIL.EXC |
||||
|
PERCENTILE.INC = PERCENTIL.INC |
||||
|
PERCENTRANK.EXC = ORDEM.PORCENTUAL.EXC |
||||
|
PERCENTRANK.INC = ORDEM.PORCENTUAL.INC |
||||
|
PERMUT = PERMUT |
||||
|
PERMUTATIONA = PERMUTAS |
||||
|
PHI = PHI |
||||
|
POISSON.DIST = DIST.POISSON |
||||
|
PROB = PROB |
||||
|
QUARTILE.EXC = QUARTIL.EXC |
||||
|
QUARTILE.INC = QUARTIL.INC |
||||
|
RANK.AVG = ORDEM.MÉD |
||||
|
RANK.EQ = ORDEM.EQ |
||||
|
RSQ = RQUAD |
||||
|
SKEW = DISTORÇÃO |
||||
|
SKEW.P = DISTORÇÃO.P |
||||
|
SLOPE = INCLINAÇÃO |
||||
|
SMALL = MENOR |
||||
|
STANDARDIZE = PADRONIZAR |
||||
|
STDEV.P = DESVPAD.P |
||||
|
STDEV.S = DESVPAD.A |
||||
|
STDEVA = DESVPADA |
||||
|
STDEVPA = DESVPADPA |
||||
|
STEYX = EPADYX |
||||
|
T.DIST = DIST.T |
||||
|
T.DIST.2T = DIST.T.BC |
||||
|
T.DIST.RT = DIST.T.CD |
||||
|
T.INV = INV.T |
||||
|
T.INV.2T = INV.T.BC |
||||
|
T.TEST = TESTE.T |
||||
|
TREND = TENDÊNCIA |
||||
|
TRIMMEAN = MÉDIA.INTERNA |
||||
|
VAR.P = VAR.P |
||||
|
VAR.S = VAR.A |
||||
|
VARA = VARA |
||||
|
VARPA = VARPA |
||||
|
WEIBULL.DIST = DIST.WEIBULL |
||||
|
Z.TEST = TESTE.Z |
||||
|
|
||||
|
## |
||||
|
## Funções de texto (Text Functions) |
||||
|
## |
||||
|
BAHTTEXT = BAHTTEXT |
||||
|
CHAR = CARACT |
||||
|
CLEAN = TIRAR |
||||
|
CODE = CÓDIGO |
||||
|
CONCAT = CONCAT |
||||
|
DOLLAR = MOEDA |
||||
|
EXACT = EXATO |
||||
|
FIND = PROCURAR |
||||
|
FIXED = DEF.NÚM.DEC |
||||
|
LEFT = ESQUERDA |
||||
|
LEN = NÚM.CARACT |
||||
|
LOWER = MINÚSCULA |
||||
|
MID = EXT.TEXTO |
||||
|
NUMBERSTRING = SEQÜÊNCIA.NÚMERO |
||||
|
NUMBERVALUE = VALORNUMÉRICO |
||||
|
PHONETIC = FONÉTICA |
||||
|
PROPER = PRI.MAIÚSCULA |
||||
|
REPLACE = MUDAR |
||||
|
REPT = REPT |
||||
|
RIGHT = DIREITA |
||||
|
SEARCH = LOCALIZAR |
||||
|
SUBSTITUTE = SUBSTITUIR |
||||
|
T = T |
||||
|
TEXT = TEXTO |
||||
|
TEXTJOIN = UNIRTEXTO |
||||
|
TRIM = ARRUMAR |
||||
|
UNICHAR = CARACTUNICODE |
||||
|
UNICODE = UNICODE |
||||
|
UPPER = MAIÚSCULA |
||||
|
VALUE = VALOR |
||||
|
|
||||
|
## |
||||
|
## Funções da Web (Web Functions) |
||||
|
## |
||||
|
ENCODEURL = CODIFURL |
||||
|
FILTERXML = FILTROXML |
||||
|
WEBSERVICE = SERVIÇOWEB |
||||
|
|
||||
|
## |
||||
|
## Funções de compatibilidade (Compatibility Functions) |
||||
|
## |
||||
|
BETADIST = DISTBETA |
||||
|
BETAINV = BETA.ACUM.INV |
||||
|
BINOMDIST = DISTRBINOM |
||||
|
CEILING = TETO |
||||
|
CHIDIST = DIST.QUI |
||||
|
CHIINV = INV.QUI |
||||
|
CHITEST = TESTE.QUI |
||||
|
CONCATENATE = CONCATENAR |
||||
|
CONFIDENCE = INT.CONFIANÇA |
||||
|
COVAR = COVAR |
||||
|
CRITBINOM = CRIT.BINOM |
||||
|
EXPONDIST = DISTEXPON |
||||
|
FDIST = DISTF |
||||
|
FINV = INVF |
||||
|
FLOOR = ARREDMULTB |
||||
|
FORECAST = PREVISÃO |
||||
|
FTEST = TESTEF |
||||
|
GAMMADIST = DISTGAMA |
||||
|
GAMMAINV = INVGAMA |
||||
|
HYPGEOMDIST = DIST.HIPERGEOM |
||||
|
LOGINV = INVLOG |
||||
|
LOGNORMDIST = DIST.LOGNORMAL |
||||
|
MODE = MODO |
||||
|
NEGBINOMDIST = DIST.BIN.NEG |
||||
|
NORMDIST = DISTNORM |
||||
|
NORMINV = INV.NORM |
||||
|
NORMSDIST = DISTNORMP |
||||
|
NORMSINV = INV.NORMP |
||||
|
PERCENTILE = PERCENTIL |
||||
|
PERCENTRANK = ORDEM.PORCENTUAL |
||||
|
POISSON = POISSON |
||||
|
QUARTILE = QUARTIL |
||||
|
RANK = ORDEM |
||||
|
STDEV = DESVPAD |
||||
|
STDEVP = DESVPADP |
||||
|
TDIST = DISTT |
||||
|
TINV = INVT |
||||
|
TTEST = TESTET |
||||
|
VAR = VAR |
||||
|
VARP = VARP |
||||
|
WEIBULL = WEIBULL |
||||
|
ZTEST = TESTEZ |
||||
@ -0,0 +1,537 @@ |
|||||
|
############################################################ |
||||
|
## |
||||
|
## PhpSpreadsheet - function name translations |
||||
|
## |
||||
|
## Português (Portuguese) |
||||
|
## |
||||
|
############################################################ |
||||
|
|
||||
|
|
||||
|
## |
||||
|
## Funções de cubo (Cube Functions) |
||||
|
## |
||||
|
CUBEKPIMEMBER = MEMBROKPICUBO |
||||
|
CUBEMEMBER = MEMBROCUBO |
||||
|
CUBEMEMBERPROPERTY = PROPRIEDADEMEMBROCUBO |
||||
|
CUBERANKEDMEMBER = MEMBROCLASSIFICADOCUBO |
||||
|
CUBESET = CONJUNTOCUBO |
||||
|
CUBESETCOUNT = CONTARCONJUNTOCUBO |
||||
|
CUBEVALUE = VALORCUBO |
||||
|
|
||||
|
## |
||||
|
## Funções de base de dados (Database Functions) |
||||
|
## |
||||
|
DAVERAGE = BDMÉDIA |
||||
|
DCOUNT = BDCONTAR |
||||
|
DCOUNTA = BDCONTAR.VAL |
||||
|
DGET = BDOBTER |
||||
|
DMAX = BDMÁX |
||||
|
DMIN = BDMÍN |
||||
|
DPRODUCT = BDMULTIPL |
||||
|
DSTDEV = BDDESVPAD |
||||
|
DSTDEVP = BDDESVPADP |
||||
|
DSUM = BDSOMA |
||||
|
DVAR = BDVAR |
||||
|
DVARP = BDVARP |
||||
|
|
||||
|
## |
||||
|
## Funções de data e hora (Date & Time Functions) |
||||
|
## |
||||
|
DATE = DATA |
||||
|
DATEDIF = DATADIF |
||||
|
DATESTRING = DATA.CADEIA |
||||
|
DATEVALUE = DATA.VALOR |
||||
|
DAY = DIA |
||||
|
DAYS = DIAS |
||||
|
DAYS360 = DIAS360 |
||||
|
EDATE = DATAM |
||||
|
EOMONTH = FIMMÊS |
||||
|
HOUR = HORA |
||||
|
ISOWEEKNUM = NUMSEMANAISO |
||||
|
MINUTE = MINUTO |
||||
|
MONTH = MÊS |
||||
|
NETWORKDAYS = DIATRABALHOTOTAL |
||||
|
NETWORKDAYS.INTL = DIATRABALHOTOTAL.INTL |
||||
|
NOW = AGORA |
||||
|
SECOND = SEGUNDO |
||||
|
THAIDAYOFWEEK = DIA.DA.SEMANA.TAILANDÊS |
||||
|
THAIMONTHOFYEAR = MÊS.DO.ANO.TAILANDÊS |
||||
|
THAIYEAR = ANO.TAILANDÊS |
||||
|
TIME = TEMPO |
||||
|
TIMEVALUE = VALOR.TEMPO |
||||
|
TODAY = HOJE |
||||
|
WEEKDAY = DIA.SEMANA |
||||
|
WEEKNUM = NÚMSEMANA |
||||
|
WORKDAY = DIATRABALHO |
||||
|
WORKDAY.INTL = DIATRABALHO.INTL |
||||
|
YEAR = ANO |
||||
|
YEARFRAC = FRAÇÃOANO |
||||
|
|
||||
|
## |
||||
|
## Funções de engenharia (Engineering Functions) |
||||
|
## |
||||
|
BESSELI = BESSELI |
||||
|
BESSELJ = BESSELJ |
||||
|
BESSELK = BESSELK |
||||
|
BESSELY = BESSELY |
||||
|
BIN2DEC = BINADEC |
||||
|
BIN2HEX = BINAHEX |
||||
|
BIN2OCT = BINAOCT |
||||
|
BITAND = BIT.E |
||||
|
BITLSHIFT = BITDESL.ESQ |
||||
|
BITOR = BIT.OU |
||||
|
BITRSHIFT = BITDESL.DIR |
||||
|
BITXOR = BIT.XOU |
||||
|
COMPLEX = COMPLEXO |
||||
|
CONVERT = CONVERTER |
||||
|
DEC2BIN = DECABIN |
||||
|
DEC2HEX = DECAHEX |
||||
|
DEC2OCT = DECAOCT |
||||
|
DELTA = DELTA |
||||
|
ERF = FUNCERRO |
||||
|
ERF.PRECISE = FUNCERRO.PRECISO |
||||
|
ERFC = FUNCERROCOMPL |
||||
|
ERFC.PRECISE = FUNCERROCOMPL.PRECISO |
||||
|
GESTEP = DEGRAU |
||||
|
HEX2BIN = HEXABIN |
||||
|
HEX2DEC = HEXADEC |
||||
|
HEX2OCT = HEXAOCT |
||||
|
IMABS = IMABS |
||||
|
IMAGINARY = IMAGINÁRIO |
||||
|
IMARGUMENT = IMARG |
||||
|
IMCONJUGATE = IMCONJ |
||||
|
IMCOS = IMCOS |
||||
|
IMCOSH = IMCOSH |
||||
|
IMCOT = IMCOT |
||||
|
IMCSC = IMCSC |
||||
|
IMCSCH = IMCSCH |
||||
|
IMDIV = IMDIV |
||||
|
IMEXP = IMEXP |
||||
|
IMLN = IMLN |
||||
|
IMLOG10 = IMLOG10 |
||||
|
IMLOG2 = IMLOG2 |
||||
|
IMPOWER = IMPOT |
||||
|
IMPRODUCT = IMPROD |
||||
|
IMREAL = IMREAL |
||||
|
IMSEC = IMSEC |
||||
|
IMSECH = IMSECH |
||||
|
IMSIN = IMSENO |
||||
|
IMSINH = IMSENOH |
||||
|
IMSQRT = IMRAIZ |
||||
|
IMSUB = IMSUBTR |
||||
|
IMSUM = IMSOMA |
||||
|
IMTAN = IMTAN |
||||
|
OCT2BIN = OCTABIN |
||||
|
OCT2DEC = OCTADEC |
||||
|
OCT2HEX = OCTAHEX |
||||
|
|
||||
|
## |
||||
|
## Funções financeiras (Financial Functions) |
||||
|
## |
||||
|
ACCRINT = JUROSACUM |
||||
|
ACCRINTM = JUROSACUMV |
||||
|
AMORDEGRC = AMORDEGRC |
||||
|
AMORLINC = AMORLINC |
||||
|
COUPDAYBS = CUPDIASINLIQ |
||||
|
COUPDAYS = CUPDIAS |
||||
|
COUPDAYSNC = CUPDIASPRÓX |
||||
|
COUPNCD = CUPDATAPRÓX |
||||
|
COUPNUM = CUPNÚM |
||||
|
COUPPCD = CUPDATAANT |
||||
|
CUMIPMT = PGTOJURACUM |
||||
|
CUMPRINC = PGTOCAPACUM |
||||
|
DB = BD |
||||
|
DDB = BDD |
||||
|
DISC = DESC |
||||
|
DOLLARDE = MOEDADEC |
||||
|
DOLLARFR = MOEDAFRA |
||||
|
DURATION = DURAÇÃO |
||||
|
EFFECT = EFETIVA |
||||
|
FV = VF |
||||
|
FVSCHEDULE = VFPLANO |
||||
|
INTRATE = TAXAJUROS |
||||
|
IPMT = IPGTO |
||||
|
IRR = TIR |
||||
|
ISPMT = É.PGTO |
||||
|
MDURATION = MDURAÇÃO |
||||
|
MIRR = MTIR |
||||
|
NOMINAL = NOMINAL |
||||
|
NPER = NPER |
||||
|
NPV = VAL |
||||
|
ODDFPRICE = PREÇOPRIMINC |
||||
|
ODDFYIELD = LUCROPRIMINC |
||||
|
ODDLPRICE = PREÇOÚLTINC |
||||
|
ODDLYIELD = LUCROÚLTINC |
||||
|
PDURATION = PDURAÇÃO |
||||
|
PMT = PGTO |
||||
|
PPMT = PPGTO |
||||
|
PRICE = PREÇO |
||||
|
PRICEDISC = PREÇODESC |
||||
|
PRICEMAT = PREÇOVENC |
||||
|
PV = VA |
||||
|
RATE = TAXA |
||||
|
RECEIVED = RECEBER |
||||
|
RRI = DEVOLVERTAXAJUROS |
||||
|
SLN = AMORT |
||||
|
SYD = AMORTD |
||||
|
TBILLEQ = OTN |
||||
|
TBILLPRICE = OTNVALOR |
||||
|
TBILLYIELD = OTNLUCRO |
||||
|
VDB = BDV |
||||
|
XIRR = XTIR |
||||
|
XNPV = XVAL |
||||
|
YIELD = LUCRO |
||||
|
YIELDDISC = LUCRODESC |
||||
|
YIELDMAT = LUCROVENC |
||||
|
|
||||
|
## |
||||
|
## Funções de informação (Information Functions) |
||||
|
## |
||||
|
CELL = CÉL |
||||
|
ERROR.TYPE = TIPO.ERRO |
||||
|
INFO = INFORMAÇÃO |
||||
|
ISBLANK = É.CÉL.VAZIA |
||||
|
ISERR = É.ERROS |
||||
|
ISERROR = É.ERRO |
||||
|
ISEVEN = ÉPAR |
||||
|
ISFORMULA = É.FORMULA |
||||
|
ISLOGICAL = É.LÓGICO |
||||
|
ISNA = É.NÃO.DISP |
||||
|
ISNONTEXT = É.NÃO.TEXTO |
||||
|
ISNUMBER = É.NÚM |
||||
|
ISODD = ÉÍMPAR |
||||
|
ISREF = É.REF |
||||
|
ISTEXT = É.TEXTO |
||||
|
N = N |
||||
|
NA = NÃO.DISP |
||||
|
SHEET = FOLHA |
||||
|
SHEETS = FOLHAS |
||||
|
TYPE = TIPO |
||||
|
|
||||
|
## |
||||
|
## Funções lógicas (Logical Functions) |
||||
|
## |
||||
|
AND = E |
||||
|
FALSE = FALSO |
||||
|
IF = SE |
||||
|
IFERROR = SE.ERRO |
||||
|
IFNA = SEND |
||||
|
IFS = SE.S |
||||
|
NOT = NÃO |
||||
|
OR = OU |
||||
|
SWITCH = PARÂMETRO |
||||
|
TRUE = VERDADEIRO |
||||
|
XOR = XOU |
||||
|
|
||||
|
## |
||||
|
## Funções de pesquisa e referência (Lookup & Reference Functions) |
||||
|
## |
||||
|
ADDRESS = ENDEREÇO |
||||
|
AREAS = ÁREAS |
||||
|
CHOOSE = SELECIONAR |
||||
|
COLUMN = COL |
||||
|
COLUMNS = COLS |
||||
|
FORMULATEXT = FÓRMULA.TEXTO |
||||
|
GETPIVOTDATA = OBTERDADOSDIN |
||||
|
HLOOKUP = PROCH |
||||
|
HYPERLINK = HIPERLIGAÇÃO |
||||
|
INDEX = ÍNDICE |
||||
|
INDIRECT = INDIRETO |
||||
|
LOOKUP = PROC |
||||
|
MATCH = CORRESP |
||||
|
OFFSET = DESLOCAMENTO |
||||
|
ROW = LIN |
||||
|
ROWS = LINS |
||||
|
RTD = RTD |
||||
|
TRANSPOSE = TRANSPOR |
||||
|
VLOOKUP = PROCV |
||||
|
|
||||
|
## |
||||
|
## Funções matemáticas e trigonométricas (Math & Trig Functions) |
||||
|
## |
||||
|
ABS = ABS |
||||
|
ACOS = ACOS |
||||
|
ACOSH = ACOSH |
||||
|
ACOT = ACOT |
||||
|
ACOTH = ACOTH |
||||
|
AGGREGATE = AGREGAR |
||||
|
ARABIC = ÁRABE |
||||
|
ASIN = ASEN |
||||
|
ASINH = ASENH |
||||
|
ATAN = ATAN |
||||
|
ATAN2 = ATAN2 |
||||
|
ATANH = ATANH |
||||
|
BASE = BASE |
||||
|
CEILING.MATH = ARRED.EXCESSO.MAT |
||||
|
CEILING.PRECISE = ARRED.EXCESSO.PRECISO |
||||
|
COMBIN = COMBIN |
||||
|
COMBINA = COMBIN.R |
||||
|
COS = COS |
||||
|
COSH = COSH |
||||
|
COT = COT |
||||
|
COTH = COTH |
||||
|
CSC = CSC |
||||
|
CSCH = CSCH |
||||
|
DECIMAL = DECIMAL |
||||
|
DEGREES = GRAUS |
||||
|
ECMA.CEILING = ARRED.EXCESSO.ECMA |
||||
|
EVEN = PAR |
||||
|
EXP = EXP |
||||
|
FACT = FATORIAL |
||||
|
FACTDOUBLE = FATDUPLO |
||||
|
FLOOR.MATH = ARRED.DEFEITO.MAT |
||||
|
FLOOR.PRECISE = ARRED.DEFEITO.PRECISO |
||||
|
GCD = MDC |
||||
|
INT = INT |
||||
|
ISO.CEILING = ARRED.EXCESSO.ISO |
||||
|
LCM = MMC |
||||
|
LN = LN |
||||
|
LOG = LOG |
||||
|
LOG10 = LOG10 |
||||
|
MDETERM = MATRIZ.DETERM |
||||
|
MINVERSE = MATRIZ.INVERSA |
||||
|
MMULT = MATRIZ.MULT |
||||
|
MOD = RESTO |
||||
|
MROUND = MARRED |
||||
|
MULTINOMIAL = POLINOMIAL |
||||
|
MUNIT = UNIDM |
||||
|
ODD = ÍMPAR |
||||
|
PI = PI |
||||
|
POWER = POTÊNCIA |
||||
|
PRODUCT = PRODUTO |
||||
|
QUOTIENT = QUOCIENTE |
||||
|
RADIANS = RADIANOS |
||||
|
RAND = ALEATÓRIO |
||||
|
RANDBETWEEN = ALEATÓRIOENTRE |
||||
|
ROMAN = ROMANO |
||||
|
ROUND = ARRED |
||||
|
ROUNDBAHTDOWN = ARREDOND.BAHT.BAIXO |
||||
|
ROUNDBAHTUP = ARREDOND.BAHT.CIMA |
||||
|
ROUNDDOWN = ARRED.PARA.BAIXO |
||||
|
ROUNDUP = ARRED.PARA.CIMA |
||||
|
SEC = SEC |
||||
|
SECH = SECH |
||||
|
SERIESSUM = SOMASÉRIE |
||||
|
SIGN = SINAL |
||||
|
SIN = SEN |
||||
|
SINH = SENH |
||||
|
SQRT = RAIZQ |
||||
|
SQRTPI = RAIZPI |
||||
|
SUBTOTAL = SUBTOTAL |
||||
|
SUM = SOMA |
||||
|
SUMIF = SOMA.SE |
||||
|
SUMIFS = SOMA.SE.S |
||||
|
SUMPRODUCT = SOMARPRODUTO |
||||
|
SUMSQ = SOMARQUAD |
||||
|
SUMX2MY2 = SOMAX2DY2 |
||||
|
SUMX2PY2 = SOMAX2SY2 |
||||
|
SUMXMY2 = SOMAXMY2 |
||||
|
TAN = TAN |
||||
|
TANH = TANH |
||||
|
TRUNC = TRUNCAR |
||||
|
|
||||
|
## |
||||
|
## Funções estatísticas (Statistical Functions) |
||||
|
## |
||||
|
AVEDEV = DESV.MÉDIO |
||||
|
AVERAGE = MÉDIA |
||||
|
AVERAGEA = MÉDIAA |
||||
|
AVERAGEIF = MÉDIA.SE |
||||
|
AVERAGEIFS = MÉDIA.SE.S |
||||
|
BETA.DIST = DIST.BETA |
||||
|
BETA.INV = INV.BETA |
||||
|
BINOM.DIST = DISTR.BINOM |
||||
|
BINOM.DIST.RANGE = DIST.BINOM.INTERVALO |
||||
|
BINOM.INV = INV.BINOM |
||||
|
CHISQ.DIST = DIST.CHIQ |
||||
|
CHISQ.DIST.RT = DIST.CHIQ.DIR |
||||
|
CHISQ.INV = INV.CHIQ |
||||
|
CHISQ.INV.RT = INV.CHIQ.DIR |
||||
|
CHISQ.TEST = TESTE.CHIQ |
||||
|
CONFIDENCE.NORM = INT.CONFIANÇA.NORM |
||||
|
CONFIDENCE.T = INT.CONFIANÇA.T |
||||
|
CORREL = CORREL |
||||
|
COUNT = CONTAR |
||||
|
COUNTA = CONTAR.VAL |
||||
|
COUNTBLANK = CONTAR.VAZIO |
||||
|
COUNTIF = CONTAR.SE |
||||
|
COUNTIFS = CONTAR.SE.S |
||||
|
COVARIANCE.P = COVARIÂNCIA.P |
||||
|
COVARIANCE.S = COVARIÂNCIA.S |
||||
|
DEVSQ = DESVQ |
||||
|
EXPON.DIST = DIST.EXPON |
||||
|
F.DIST = DIST.F |
||||
|
F.DIST.RT = DIST.F.DIR |
||||
|
F.INV = INV.F |
||||
|
F.INV.RT = INV.F.DIR |
||||
|
F.TEST = TESTE.F |
||||
|
FISHER = FISHER |
||||
|
FISHERINV = FISHERINV |
||||
|
FORECAST.ETS = PREVISÃO.ETS |
||||
|
FORECAST.ETS.CONFINT = PREVISÃO.ETS.CONFINT |
||||
|
FORECAST.ETS.SEASONALITY = PREVISÃO.ETS.SAZONALIDADE |
||||
|
FORECAST.ETS.STAT = PREVISÃO.ETS.ESTATÍSTICA |
||||
|
FORECAST.LINEAR = PREVISÃO.LINEAR |
||||
|
FREQUENCY = FREQUÊNCIA |
||||
|
GAMMA = GAMA |
||||
|
GAMMA.DIST = DIST.GAMA |
||||
|
GAMMA.INV = INV.GAMA |
||||
|
GAMMALN = LNGAMA |
||||
|
GAMMALN.PRECISE = LNGAMA.PRECISO |
||||
|
GAUSS = GAUSS |
||||
|
GEOMEAN = MÉDIA.GEOMÉTRICA |
||||
|
GROWTH = CRESCIMENTO |
||||
|
HARMEAN = MÉDIA.HARMÓNICA |
||||
|
HYPGEOM.DIST = DIST.HIPGEOM |
||||
|
INTERCEPT = INTERCETAR |
||||
|
KURT = CURT |
||||
|
LARGE = MAIOR |
||||
|
LINEST = PROJ.LIN |
||||
|
LOGEST = PROJ.LOG |
||||
|
LOGNORM.DIST = DIST.NORMLOG |
||||
|
LOGNORM.INV = INV.NORMALLOG |
||||
|
MAX = MÁXIMO |
||||
|
MAXA = MÁXIMOA |
||||
|
MAXIFS = MÁXIMO.SE.S |
||||
|
MEDIAN = MED |
||||
|
MIN = MÍNIMO |
||||
|
MINA = MÍNIMOA |
||||
|
MINIFS = MÍNIMO.SE.S |
||||
|
MODE.MULT = MODO.MÚLT |
||||
|
MODE.SNGL = MODO.SIMPLES |
||||
|
NEGBINOM.DIST = DIST.BINOM.NEG |
||||
|
NORM.DIST = DIST.NORMAL |
||||
|
NORM.INV = INV.NORMAL |
||||
|
NORM.S.DIST = DIST.S.NORM |
||||
|
NORM.S.INV = INV.S.NORM |
||||
|
PEARSON = PEARSON |
||||
|
PERCENTILE.EXC = PERCENTIL.EXC |
||||
|
PERCENTILE.INC = PERCENTIL.INC |
||||
|
PERCENTRANK.EXC = ORDEM.PERCENTUAL.EXC |
||||
|
PERCENTRANK.INC = ORDEM.PERCENTUAL.INC |
||||
|
PERMUT = PERMUTAR |
||||
|
PERMUTATIONA = PERMUTAR.R |
||||
|
PHI = PHI |
||||
|
POISSON.DIST = DIST.POISSON |
||||
|
PROB = PROB |
||||
|
QUARTILE.EXC = QUARTIL.EXC |
||||
|
QUARTILE.INC = QUARTIL.INC |
||||
|
RANK.AVG = ORDEM.MÉD |
||||
|
RANK.EQ = ORDEM.EQ |
||||
|
RSQ = RQUAD |
||||
|
SKEW = DISTORÇÃO |
||||
|
SKEW.P = DISTORÇÃO.P |
||||
|
SLOPE = DECLIVE |
||||
|
SMALL = MENOR |
||||
|
STANDARDIZE = NORMALIZAR |
||||
|
STDEV.P = DESVPAD.P |
||||
|
STDEV.S = DESVPAD.S |
||||
|
STDEVA = DESVPADA |
||||
|
STDEVPA = DESVPADPA |
||||
|
STEYX = EPADYX |
||||
|
T.DIST = DIST.T |
||||
|
T.DIST.2T = DIST.T.2C |
||||
|
T.DIST.RT = DIST.T.DIR |
||||
|
T.INV = INV.T |
||||
|
T.INV.2T = INV.T.2C |
||||
|
T.TEST = TESTE.T |
||||
|
TREND = TENDÊNCIA |
||||
|
TRIMMEAN = MÉDIA.INTERNA |
||||
|
VAR.P = VAR.P |
||||
|
VAR.S = VAR.S |
||||
|
VARA = VARA |
||||
|
VARPA = VARPA |
||||
|
WEIBULL.DIST = DIST.WEIBULL |
||||
|
Z.TEST = TESTE.Z |
||||
|
|
||||
|
## |
||||
|
## Funções de texto (Text Functions) |
||||
|
## |
||||
|
BAHTTEXT = TEXTO.BAHT |
||||
|
CHAR = CARÁT |
||||
|
CLEAN = LIMPARB |
||||
|
CODE = CÓDIGO |
||||
|
CONCAT = CONCAT |
||||
|
DOLLAR = MOEDA |
||||
|
EXACT = EXATO |
||||
|
FIND = LOCALIZAR |
||||
|
FIXED = FIXA |
||||
|
ISTHAIDIGIT = É.DÍGITO.TAILANDÊS |
||||
|
LEFT = ESQUERDA |
||||
|
LEN = NÚM.CARAT |
||||
|
LOWER = MINÚSCULAS |
||||
|
MID = SEG.TEXTO |
||||
|
NUMBERSTRING = NÚMERO.CADEIA |
||||
|
NUMBERVALUE = VALOR.NÚMERO |
||||
|
PHONETIC = FONÉTICA |
||||
|
PROPER = INICIAL.MAIÚSCULA |
||||
|
REPLACE = SUBSTITUIR |
||||
|
REPT = REPETIR |
||||
|
RIGHT = DIREITA |
||||
|
SEARCH = PROCURAR |
||||
|
SUBSTITUTE = SUBST |
||||
|
T = T |
||||
|
TEXT = TEXTO |
||||
|
TEXTJOIN = UNIRTEXTO |
||||
|
THAIDIGIT = DÍGITO.TAILANDÊS |
||||
|
THAINUMSOUND = SOM.NÚM.TAILANDÊS |
||||
|
THAINUMSTRING = CADEIA.NÚM.TAILANDÊS |
||||
|
THAISTRINGLENGTH = COMP.CADEIA.TAILANDÊS |
||||
|
TRIM = COMPACTAR |
||||
|
UNICHAR = UNICARÁT |
||||
|
UNICODE = UNICODE |
||||
|
UPPER = MAIÚSCULAS |
||||
|
VALUE = VALOR |
||||
|
|
||||
|
## |
||||
|
## Funções da Web (Web Functions) |
||||
|
## |
||||
|
ENCODEURL = CODIFICAÇÃOURL |
||||
|
FILTERXML = FILTRARXML |
||||
|
WEBSERVICE = SERVIÇOWEB |
||||
|
|
||||
|
## |
||||
|
## Funções de compatibilidade (Compatibility Functions) |
||||
|
## |
||||
|
BETADIST = DISTBETA |
||||
|
BETAINV = BETA.ACUM.INV |
||||
|
BINOMDIST = DISTRBINOM |
||||
|
CEILING = ARRED.EXCESSO |
||||
|
CHIDIST = DIST.CHI |
||||
|
CHIINV = INV.CHI |
||||
|
CHITEST = TESTE.CHI |
||||
|
CONCATENATE = CONCATENAR |
||||
|
CONFIDENCE = INT.CONFIANÇA |
||||
|
COVAR = COVAR |
||||
|
CRITBINOM = CRIT.BINOM |
||||
|
EXPONDIST = DISTEXPON |
||||
|
FDIST = DISTF |
||||
|
FINV = INVF |
||||
|
FLOOR = ARRED.DEFEITO |
||||
|
FORECAST = PREVISÃO |
||||
|
FTEST = TESTEF |
||||
|
GAMMADIST = DISTGAMA |
||||
|
GAMMAINV = INVGAMA |
||||
|
HYPGEOMDIST = DIST.HIPERGEOM |
||||
|
LOGINV = INVLOG |
||||
|
LOGNORMDIST = DIST.NORMALLOG |
||||
|
MODE = MODA |
||||
|
NEGBINOMDIST = DIST.BIN.NEG |
||||
|
NORMDIST = DIST.NORM |
||||
|
NORMINV = INV.NORM |
||||
|
NORMSDIST = DIST.NORMP |
||||
|
NORMSINV = INV.NORMP |
||||
|
PERCENTILE = PERCENTIL |
||||
|
PERCENTRANK = ORDEM.PERCENTUAL |
||||
|
POISSON = POISSON |
||||
|
QUARTILE = QUARTIL |
||||
|
RANK = ORDEM |
||||
|
STDEV = DESVPAD |
||||
|
STDEVP = DESVPADP |
||||
|
TDIST = DISTT |
||||
|
TINV = INVT |
||||
|
TTEST = TESTET |
||||
|
VAR = VAR |
||||
|
VARP = VARP |
||||
|
WEIBULL = WEIBULL |
||||
|
ZTEST = TESTEZ |
||||
@ -0,0 +1,555 @@ |
|||||
|
############################################################ |
||||
|
## |
||||
|
## PhpSpreadsheet - function name translations |
||||
|
## |
||||
|
## русский язык (Russian) |
||||
|
## |
||||
|
############################################################ |
||||
|
|
||||
|
|
||||
|
## |
||||
|
## Функции кубов (Cube Functions) |
||||
|
## |
||||
|
CUBEKPIMEMBER = КУБЭЛЕМЕНТКИП |
||||
|
CUBEMEMBER = КУБЭЛЕМЕНТ |
||||
|
CUBEMEMBERPROPERTY = КУБСВОЙСТВОЭЛЕМЕНТА |
||||
|
CUBERANKEDMEMBER = КУБПОРЭЛЕМЕНТ |
||||
|
CUBESET = КУБМНОЖ |
||||
|
CUBESETCOUNT = КУБЧИСЛОЭЛМНОЖ |
||||
|
CUBEVALUE = КУБЗНАЧЕНИЕ |
||||
|
|
||||
|
## |
||||
|
## Функции для работы с базами данных (Database Functions) |
||||
|
## |
||||
|
DAVERAGE = ДСРЗНАЧ |
||||
|
DCOUNT = БСЧЁТ |
||||
|
DCOUNTA = БСЧЁТА |
||||
|
DGET = БИЗВЛЕЧЬ |
||||
|
DMAX = ДМАКС |
||||
|
DMIN = ДМИН |
||||
|
DPRODUCT = БДПРОИЗВЕД |
||||
|
DSTDEV = ДСТАНДОТКЛ |
||||
|
DSTDEVP = ДСТАНДОТКЛП |
||||
|
DSUM = БДСУММ |
||||
|
DVAR = БДДИСП |
||||
|
DVARP = БДДИСПП |
||||
|
|
||||
|
## |
||||
|
## Функции даты и времени (Date & Time Functions) |
||||
|
## |
||||
|
DATE = ДАТА |
||||
|
DATEDIF = РАЗНДАТ |
||||
|
DATESTRING = СТРОКАДАННЫХ |
||||
|
DATEVALUE = ДАТАЗНАЧ |
||||
|
DAY = ДЕНЬ |
||||
|
DAYS = ДНИ |
||||
|
DAYS360 = ДНЕЙ360 |
||||
|
EDATE = ДАТАМЕС |
||||
|
EOMONTH = КОНМЕСЯЦА |
||||
|
HOUR = ЧАС |
||||
|
ISOWEEKNUM = НОМНЕДЕЛИ.ISO |
||||
|
MINUTE = МИНУТЫ |
||||
|
MONTH = МЕСЯЦ |
||||
|
NETWORKDAYS = ЧИСТРАБДНИ |
||||
|
NETWORKDAYS.INTL = ЧИСТРАБДНИ.МЕЖД |
||||
|
NOW = ТДАТА |
||||
|
SECOND = СЕКУНДЫ |
||||
|
THAIDAYOFWEEK = ТАЙДЕНЬНЕД |
||||
|
THAIMONTHOFYEAR = ТАЙМЕСЯЦ |
||||
|
THAIYEAR = ТАЙГОД |
||||
|
TIME = ВРЕМЯ |
||||
|
TIMEVALUE = ВРЕМЗНАЧ |
||||
|
TODAY = СЕГОДНЯ |
||||
|
WEEKDAY = ДЕНЬНЕД |
||||
|
WEEKNUM = НОМНЕДЕЛИ |
||||
|
WORKDAY = РАБДЕНЬ |
||||
|
WORKDAY.INTL = РАБДЕНЬ.МЕЖД |
||||
|
YEAR = ГОД |
||||
|
YEARFRAC = ДОЛЯГОДА |
||||
|
|
||||
|
## |
||||
|
## Инженерные функции (Engineering Functions) |
||||
|
## |
||||
|
BESSELI = БЕССЕЛЬ.I |
||||
|
BESSELJ = БЕССЕЛЬ.J |
||||
|
BESSELK = БЕССЕЛЬ.K |
||||
|
BESSELY = БЕССЕЛЬ.Y |
||||
|
BIN2DEC = ДВ.В.ДЕС |
||||
|
BIN2HEX = ДВ.В.ШЕСТН |
||||
|
BIN2OCT = ДВ.В.ВОСЬМ |
||||
|
BITAND = БИТ.И |
||||
|
BITLSHIFT = БИТ.СДВИГЛ |
||||
|
BITOR = БИТ.ИЛИ |
||||
|
BITRSHIFT = БИТ.СДВИГП |
||||
|
BITXOR = БИТ.ИСКЛИЛИ |
||||
|
COMPLEX = КОМПЛЕКСН |
||||
|
CONVERT = ПРЕОБР |
||||
|
DEC2BIN = ДЕС.В.ДВ |
||||
|
DEC2HEX = ДЕС.В.ШЕСТН |
||||
|
DEC2OCT = ДЕС.В.ВОСЬМ |
||||
|
DELTA = ДЕЛЬТА |
||||
|
ERF = ФОШ |
||||
|
ERF.PRECISE = ФОШ.ТОЧН |
||||
|
ERFC = ДФОШ |
||||
|
ERFC.PRECISE = ДФОШ.ТОЧН |
||||
|
GESTEP = ПОРОГ |
||||
|
HEX2BIN = ШЕСТН.В.ДВ |
||||
|
HEX2DEC = ШЕСТН.В.ДЕС |
||||
|
HEX2OCT = ШЕСТН.В.ВОСЬМ |
||||
|
IMABS = МНИМ.ABS |
||||
|
IMAGINARY = МНИМ.ЧАСТЬ |
||||
|
IMARGUMENT = МНИМ.АРГУМЕНТ |
||||
|
IMCONJUGATE = МНИМ.СОПРЯЖ |
||||
|
IMCOS = МНИМ.COS |
||||
|
IMCOSH = МНИМ.COSH |
||||
|
IMCOT = МНИМ.COT |
||||
|
IMCSC = МНИМ.CSC |
||||
|
IMCSCH = МНИМ.CSCH |
||||
|
IMDIV = МНИМ.ДЕЛ |
||||
|
IMEXP = МНИМ.EXP |
||||
|
IMLN = МНИМ.LN |
||||
|
IMLOG10 = МНИМ.LOG10 |
||||
|
IMLOG2 = МНИМ.LOG2 |
||||
|
IMPOWER = МНИМ.СТЕПЕНЬ |
||||
|
IMPRODUCT = МНИМ.ПРОИЗВЕД |
||||
|
IMREAL = МНИМ.ВЕЩ |
||||
|
IMSEC = МНИМ.SEC |
||||
|
IMSECH = МНИМ.SECH |
||||
|
IMSIN = МНИМ.SIN |
||||
|
IMSINH = МНИМ.SINH |
||||
|
IMSQRT = МНИМ.КОРЕНЬ |
||||
|
IMSUB = МНИМ.РАЗН |
||||
|
IMSUM = МНИМ.СУММ |
||||
|
IMTAN = МНИМ.TAN |
||||
|
OCT2BIN = ВОСЬМ.В.ДВ |
||||
|
OCT2DEC = ВОСЬМ.В.ДЕС |
||||
|
OCT2HEX = ВОСЬМ.В.ШЕСТН |
||||
|
|
||||
|
## |
||||
|
## Финансовые функции (Financial Functions) |
||||
|
## |
||||
|
ACCRINT = НАКОПДОХОД |
||||
|
ACCRINTM = НАКОПДОХОДПОГАШ |
||||
|
AMORDEGRC = АМОРУМ |
||||
|
AMORLINC = АМОРУВ |
||||
|
COUPDAYBS = ДНЕЙКУПОНДО |
||||
|
COUPDAYS = ДНЕЙКУПОН |
||||
|
COUPDAYSNC = ДНЕЙКУПОНПОСЛЕ |
||||
|
COUPNCD = ДАТАКУПОНПОСЛЕ |
||||
|
COUPNUM = ЧИСЛКУПОН |
||||
|
COUPPCD = ДАТАКУПОНДО |
||||
|
CUMIPMT = ОБЩПЛАТ |
||||
|
CUMPRINC = ОБЩДОХОД |
||||
|
DB = ФУО |
||||
|
DDB = ДДОБ |
||||
|
DISC = СКИДКА |
||||
|
DOLLARDE = РУБЛЬ.ДЕС |
||||
|
DOLLARFR = РУБЛЬ.ДРОБЬ |
||||
|
DURATION = ДЛИТ |
||||
|
EFFECT = ЭФФЕКТ |
||||
|
FV = БС |
||||
|
FVSCHEDULE = БЗРАСПИС |
||||
|
INTRATE = ИНОРМА |
||||
|
IPMT = ПРПЛТ |
||||
|
IRR = ВСД |
||||
|
ISPMT = ПРОЦПЛАТ |
||||
|
MDURATION = МДЛИТ |
||||
|
MIRR = МВСД |
||||
|
NOMINAL = НОМИНАЛ |
||||
|
NPER = КПЕР |
||||
|
NPV = ЧПС |
||||
|
ODDFPRICE = ЦЕНАПЕРВНЕРЕГ |
||||
|
ODDFYIELD = ДОХОДПЕРВНЕРЕГ |
||||
|
ODDLPRICE = ЦЕНАПОСЛНЕРЕГ |
||||
|
ODDLYIELD = ДОХОДПОСЛНЕРЕГ |
||||
|
PDURATION = ПДЛИТ |
||||
|
PMT = ПЛТ |
||||
|
PPMT = ОСПЛТ |
||||
|
PRICE = ЦЕНА |
||||
|
PRICEDISC = ЦЕНАСКИДКА |
||||
|
PRICEMAT = ЦЕНАПОГАШ |
||||
|
PV = ПС |
||||
|
RATE = СТАВКА |
||||
|
RECEIVED = ПОЛУЧЕНО |
||||
|
RRI = ЭКВ.СТАВКА |
||||
|
SLN = АПЛ |
||||
|
SYD = АСЧ |
||||
|
TBILLEQ = РАВНОКЧЕК |
||||
|
TBILLPRICE = ЦЕНАКЧЕК |
||||
|
TBILLYIELD = ДОХОДКЧЕК |
||||
|
USDOLLAR = ДОЛЛСША |
||||
|
VDB = ПУО |
||||
|
XIRR = ЧИСТВНДОХ |
||||
|
XNPV = ЧИСТНЗ |
||||
|
YIELD = ДОХОД |
||||
|
YIELDDISC = ДОХОДСКИДКА |
||||
|
YIELDMAT = ДОХОДПОГАШ |
||||
|
|
||||
|
## |
||||
|
## Информационные функции (Information Functions) |
||||
|
## |
||||
|
CELL = ЯЧЕЙКА |
||||
|
ERROR.TYPE = ТИП.ОШИБКИ |
||||
|
INFO = ИНФОРМ |
||||
|
ISBLANK = ЕПУСТО |
||||
|
ISERR = ЕОШ |
||||
|
ISERROR = ЕОШИБКА |
||||
|
ISEVEN = ЕЧЁТН |
||||
|
ISFORMULA = ЕФОРМУЛА |
||||
|
ISLOGICAL = ЕЛОГИЧ |
||||
|
ISNA = ЕНД |
||||
|
ISNONTEXT = ЕНЕТЕКСТ |
||||
|
ISNUMBER = ЕЧИСЛО |
||||
|
ISODD = ЕНЕЧЁТ |
||||
|
ISREF = ЕССЫЛКА |
||||
|
ISTEXT = ЕТЕКСТ |
||||
|
N = Ч |
||||
|
NA = НД |
||||
|
SHEET = ЛИСТ |
||||
|
SHEETS = ЛИСТЫ |
||||
|
TYPE = ТИП |
||||
|
|
||||
|
## |
||||
|
## Логические функции (Logical Functions) |
||||
|
## |
||||
|
AND = И |
||||
|
FALSE = ЛОЖЬ |
||||
|
IF = ЕСЛИ |
||||
|
IFERROR = ЕСЛИОШИБКА |
||||
|
IFNA = ЕСНД |
||||
|
IFS = УСЛОВИЯ |
||||
|
NOT = НЕ |
||||
|
OR = ИЛИ |
||||
|
SWITCH = ПЕРЕКЛЮЧ |
||||
|
TRUE = ИСТИНА |
||||
|
XOR = ИСКЛИЛИ |
||||
|
|
||||
|
## |
||||
|
## Функции ссылки и поиска (Lookup & Reference Functions) |
||||
|
## |
||||
|
ADDRESS = АДРЕС |
||||
|
AREAS = ОБЛАСТИ |
||||
|
CHOOSE = ВЫБОР |
||||
|
COLUMN = СТОЛБЕЦ |
||||
|
COLUMNS = ЧИСЛСТОЛБ |
||||
|
FILTER = ФИЛЬТР |
||||
|
FORMULATEXT = Ф.ТЕКСТ |
||||
|
GETPIVOTDATA = ПОЛУЧИТЬ.ДАННЫЕ.СВОДНОЙ.ТАБЛИЦЫ |
||||
|
HLOOKUP = ГПР |
||||
|
HYPERLINK = ГИПЕРССЫЛКА |
||||
|
INDEX = ИНДЕКС |
||||
|
INDIRECT = ДВССЫЛ |
||||
|
LOOKUP = ПРОСМОТР |
||||
|
MATCH = ПОИСКПОЗ |
||||
|
OFFSET = СМЕЩ |
||||
|
ROW = СТРОКА |
||||
|
ROWS = ЧСТРОК |
||||
|
RTD = ДРВ |
||||
|
SORT = СОРТ |
||||
|
SORTBY = СОРТПО |
||||
|
TRANSPOSE = ТРАНСП |
||||
|
UNIQUE = УНИК |
||||
|
VLOOKUP = ВПР |
||||
|
XLOOKUP = ПРОСМОТРX |
||||
|
XMATCH = ПОИСКПОЗX |
||||
|
|
||||
|
## |
||||
|
## Математические и тригонометрические функции (Math & Trig Functions) |
||||
|
## |
||||
|
ABS = ABS |
||||
|
ACOS = ACOS |
||||
|
ACOSH = ACOSH |
||||
|
ACOT = ACOT |
||||
|
ACOTH = ACOTH |
||||
|
AGGREGATE = АГРЕГАТ |
||||
|
ARABIC = АРАБСКОЕ |
||||
|
ASIN = ASIN |
||||
|
ASINH = ASINH |
||||
|
ATAN = ATAN |
||||
|
ATAN2 = ATAN2 |
||||
|
ATANH = ATANH |
||||
|
BASE = ОСНОВАНИЕ |
||||
|
CEILING.MATH = ОКРВВЕРХ.МАТ |
||||
|
CEILING.PRECISE = ОКРВВЕРХ.ТОЧН |
||||
|
COMBIN = ЧИСЛКОМБ |
||||
|
COMBINA = ЧИСЛКОМБА |
||||
|
COS = COS |
||||
|
COSH = COSH |
||||
|
COT = COT |
||||
|
COTH = COTH |
||||
|
CSC = CSC |
||||
|
CSCH = CSCH |
||||
|
DECIMAL = ДЕС |
||||
|
DEGREES = ГРАДУСЫ |
||||
|
ECMA.CEILING = ECMA.ОКРВВЕРХ |
||||
|
EVEN = ЧЁТН |
||||
|
EXP = EXP |
||||
|
FACT = ФАКТР |
||||
|
FACTDOUBLE = ДВФАКТР |
||||
|
FLOOR.MATH = ОКРВНИЗ.МАТ |
||||
|
FLOOR.PRECISE = ОКРВНИЗ.ТОЧН |
||||
|
GCD = НОД |
||||
|
INT = ЦЕЛОЕ |
||||
|
ISO.CEILING = ISO.ОКРВВЕРХ |
||||
|
LCM = НОК |
||||
|
LN = LN |
||||
|
LOG = LOG |
||||
|
LOG10 = LOG10 |
||||
|
MDETERM = МОПРЕД |
||||
|
MINVERSE = МОБР |
||||
|
MMULT = МУМНОЖ |
||||
|
MOD = ОСТАТ |
||||
|
MROUND = ОКРУГЛТ |
||||
|
MULTINOMIAL = МУЛЬТИНОМ |
||||
|
MUNIT = МЕДИН |
||||
|
ODD = НЕЧЁТ |
||||
|
PI = ПИ |
||||
|
POWER = СТЕПЕНЬ |
||||
|
PRODUCT = ПРОИЗВЕД |
||||
|
QUOTIENT = ЧАСТНОЕ |
||||
|
RADIANS = РАДИАНЫ |
||||
|
RAND = СЛЧИС |
||||
|
RANDARRAY = СЛУЧМАССИВ |
||||
|
RANDBETWEEN = СЛУЧМЕЖДУ |
||||
|
ROMAN = РИМСКОЕ |
||||
|
ROUND = ОКРУГЛ |
||||
|
ROUNDBAHTDOWN = ОКРУГЛБАТВНИЗ |
||||
|
ROUNDBAHTUP = ОКРУГЛБАТВВЕРХ |
||||
|
ROUNDDOWN = ОКРУГЛВНИЗ |
||||
|
ROUNDUP = ОКРУГЛВВЕРХ |
||||
|
SEC = SEC |
||||
|
SECH = SECH |
||||
|
SERIESSUM = РЯД.СУММ |
||||
|
SEQUENCE = ПОСЛЕДОВ |
||||
|
SIGN = ЗНАК |
||||
|
SIN = SIN |
||||
|
SINH = SINH |
||||
|
SQRT = КОРЕНЬ |
||||
|
SQRTPI = КОРЕНЬПИ |
||||
|
SUBTOTAL = ПРОМЕЖУТОЧНЫЕ.ИТОГИ |
||||
|
SUM = СУММ |
||||
|
SUMIF = СУММЕСЛИ |
||||
|
SUMIFS = СУММЕСЛИМН |
||||
|
SUMPRODUCT = СУММПРОИЗВ |
||||
|
SUMSQ = СУММКВ |
||||
|
SUMX2MY2 = СУММРАЗНКВ |
||||
|
SUMX2PY2 = СУММСУММКВ |
||||
|
SUMXMY2 = СУММКВРАЗН |
||||
|
TAN = TAN |
||||
|
TANH = TANH |
||||
|
TRUNC = ОТБР |
||||
|
|
||||
|
## |
||||
|
## Статистические функции (Statistical Functions) |
||||
|
## |
||||
|
AVEDEV = СРОТКЛ |
||||
|
AVERAGE = СРЗНАЧ |
||||
|
AVERAGEA = СРЗНАЧА |
||||
|
AVERAGEIF = СРЗНАЧЕСЛИ |
||||
|
AVERAGEIFS = СРЗНАЧЕСЛИМН |
||||
|
BETA.DIST = БЕТА.РАСП |
||||
|
BETA.INV = БЕТА.ОБР |
||||
|
BINOM.DIST = БИНОМ.РАСП |
||||
|
BINOM.DIST.RANGE = БИНОМ.РАСП.ДИАП |
||||
|
BINOM.INV = БИНОМ.ОБР |
||||
|
CHISQ.DIST = ХИ2.РАСП |
||||
|
CHISQ.DIST.RT = ХИ2.РАСП.ПХ |
||||
|
CHISQ.INV = ХИ2.ОБР |
||||
|
CHISQ.INV.RT = ХИ2.ОБР.ПХ |
||||
|
CHISQ.TEST = ХИ2.ТЕСТ |
||||
|
CONFIDENCE.NORM = ДОВЕРИТ.НОРМ |
||||
|
CONFIDENCE.T = ДОВЕРИТ.СТЬЮДЕНТ |
||||
|
CORREL = КОРРЕЛ |
||||
|
COUNT = СЧЁТ |
||||
|
COUNTA = СЧЁТЗ |
||||
|
COUNTBLANK = СЧИТАТЬПУСТОТЫ |
||||
|
COUNTIF = СЧЁТЕСЛИ |
||||
|
COUNTIFS = СЧЁТЕСЛИМН |
||||
|
COVARIANCE.P = КОВАРИАЦИЯ.Г |
||||
|
COVARIANCE.S = КОВАРИАЦИЯ.В |
||||
|
DEVSQ = КВАДРОТКЛ |
||||
|
EXPON.DIST = ЭКСП.РАСП |
||||
|
F.DIST = F.РАСП |
||||
|
F.DIST.RT = F.РАСП.ПХ |
||||
|
F.INV = F.ОБР |
||||
|
F.INV.RT = F.ОБР.ПХ |
||||
|
F.TEST = F.ТЕСТ |
||||
|
FISHER = ФИШЕР |
||||
|
FISHERINV = ФИШЕРОБР |
||||
|
FORECAST.ETS = ПРЕДСКАЗ.ETS |
||||
|
FORECAST.ETS.CONFINT = ПРЕДСКАЗ.ЕTS.ДОВИНТЕРВАЛ |
||||
|
FORECAST.ETS.SEASONALITY = ПРЕДСКАЗ.ETS.СЕЗОННОСТЬ |
||||
|
FORECAST.ETS.STAT = ПРЕДСКАЗ.ETS.СТАТ |
||||
|
FORECAST.LINEAR = ПРЕДСКАЗ.ЛИНЕЙН |
||||
|
FREQUENCY = ЧАСТОТА |
||||
|
GAMMA = ГАММА |
||||
|
GAMMA.DIST = ГАММА.РАСП |
||||
|
GAMMA.INV = ГАММА.ОБР |
||||
|
GAMMALN = ГАММАНЛОГ |
||||
|
GAMMALN.PRECISE = ГАММАНЛОГ.ТОЧН |
||||
|
GAUSS = ГАУСС |
||||
|
GEOMEAN = СРГЕОМ |
||||
|
GROWTH = РОСТ |
||||
|
HARMEAN = СРГАРМ |
||||
|
HYPGEOM.DIST = ГИПЕРГЕОМ.РАСП |
||||
|
INTERCEPT = ОТРЕЗОК |
||||
|
KURT = ЭКСЦЕСС |
||||
|
LARGE = НАИБОЛЬШИЙ |
||||
|
LINEST = ЛИНЕЙН |
||||
|
LOGEST = ЛГРФПРИБЛ |
||||
|
LOGNORM.DIST = ЛОГНОРМ.РАСП |
||||
|
LOGNORM.INV = ЛОГНОРМ.ОБР |
||||
|
MAX = МАКС |
||||
|
MAXA = МАКСА |
||||
|
MAXIFS = МАКСЕСЛИ |
||||
|
MEDIAN = МЕДИАНА |
||||
|
MIN = МИН |
||||
|
MINA = МИНА |
||||
|
MINIFS = МИНЕСЛИ |
||||
|
MODE.MULT = МОДА.НСК |
||||
|
MODE.SNGL = МОДА.ОДН |
||||
|
NEGBINOM.DIST = ОТРБИНОМ.РАСП |
||||
|
NORM.DIST = НОРМ.РАСП |
||||
|
NORM.INV = НОРМ.ОБР |
||||
|
NORM.S.DIST = НОРМ.СТ.РАСП |
||||
|
NORM.S.INV = НОРМ.СТ.ОБР |
||||
|
PEARSON = PEARSON |
||||
|
PERCENTILE.EXC = ПРОЦЕНТИЛЬ.ИСКЛ |
||||
|
PERCENTILE.INC = ПРОЦЕНТИЛЬ.ВКЛ |
||||
|
PERCENTRANK.EXC = ПРОЦЕНТРАНГ.ИСКЛ |
||||
|
PERCENTRANK.INC = ПРОЦЕНТРАНГ.ВКЛ |
||||
|
PERMUT = ПЕРЕСТ |
||||
|
PERMUTATIONA = ПЕРЕСТА |
||||
|
PHI = ФИ |
||||
|
POISSON.DIST = ПУАССОН.РАСП |
||||
|
PROB = ВЕРОЯТНОСТЬ |
||||
|
QUARTILE.EXC = КВАРТИЛЬ.ИСКЛ |
||||
|
QUARTILE.INC = КВАРТИЛЬ.ВКЛ |
||||
|
RANK.AVG = РАНГ.СР |
||||
|
RANK.EQ = РАНГ.РВ |
||||
|
RSQ = КВПИРСОН |
||||
|
SKEW = СКОС |
||||
|
SKEW.P = СКОС.Г |
||||
|
SLOPE = НАКЛОН |
||||
|
SMALL = НАИМЕНЬШИЙ |
||||
|
STANDARDIZE = НОРМАЛИЗАЦИЯ |
||||
|
STDEV.P = СТАНДОТКЛОН.Г |
||||
|
STDEV.S = СТАНДОТКЛОН.В |
||||
|
STDEVA = СТАНДОТКЛОНА |
||||
|
STDEVPA = СТАНДОТКЛОНПА |
||||
|
STEYX = СТОШYX |
||||
|
T.DIST = СТЬЮДЕНТ.РАСП |
||||
|
T.DIST.2T = СТЬЮДЕНТ.РАСП.2Х |
||||
|
T.DIST.RT = СТЬЮДЕНТ.РАСП.ПХ |
||||
|
T.INV = СТЬЮДЕНТ.ОБР |
||||
|
T.INV.2T = СТЬЮДЕНТ.ОБР.2Х |
||||
|
T.TEST = СТЬЮДЕНТ.ТЕСТ |
||||
|
TREND = ТЕНДЕНЦИЯ |
||||
|
TRIMMEAN = УРЕЗСРЕДНЕЕ |
||||
|
VAR.P = ДИСП.Г |
||||
|
VAR.S = ДИСП.В |
||||
|
VARA = ДИСПА |
||||
|
VARPA = ДИСПРА |
||||
|
WEIBULL.DIST = ВЕЙБУЛЛ.РАСП |
||||
|
Z.TEST = Z.ТЕСТ |
||||
|
|
||||
|
## |
||||
|
## Текстовые функции (Text Functions) |
||||
|
## |
||||
|
ARRAYTOTEXT = МАССИВВТЕКСТ |
||||
|
BAHTTEXT = БАТТЕКСТ |
||||
|
CHAR = СИМВОЛ |
||||
|
CLEAN = ПЕЧСИМВ |
||||
|
CODE = КОДСИМВ |
||||
|
CONCAT = СЦЕП |
||||
|
DBCS = БДЦС |
||||
|
DOLLAR = РУБЛЬ |
||||
|
EXACT = СОВПАД |
||||
|
FIND = НАЙТИ |
||||
|
FINDB = НАЙТИБ |
||||
|
FIXED = ФИКСИРОВАННЫЙ |
||||
|
ISTHAIDIGIT = ЕТАЙЦИФРЫ |
||||
|
LEFT = ЛЕВСИМВ |
||||
|
LEFTB = ЛЕВБ |
||||
|
LEN = ДЛСТР |
||||
|
LENB = ДЛИНБ |
||||
|
LOWER = СТРОЧН |
||||
|
MID = ПСТР |
||||
|
MIDB = ПСТРБ |
||||
|
NUMBERSTRING = СТРОКАЧИСЕЛ |
||||
|
NUMBERVALUE = ЧЗНАЧ |
||||
|
PROPER = ПРОПНАЧ |
||||
|
REPLACE = ЗАМЕНИТЬ |
||||
|
REPLACEB = ЗАМЕНИТЬБ |
||||
|
REPT = ПОВТОР |
||||
|
RIGHT = ПРАВСИМВ |
||||
|
RIGHTB = ПРАВБ |
||||
|
SEARCH = ПОИСК |
||||
|
SEARCHB = ПОИСКБ |
||||
|
SUBSTITUTE = ПОДСТАВИТЬ |
||||
|
T = Т |
||||
|
TEXT = ТЕКСТ |
||||
|
TEXTJOIN = ОБЪЕДИНИТЬ |
||||
|
THAIDIGIT = ТАЙЦИФРА |
||||
|
THAINUMSOUND = ТАЙЧИСЛОВЗВУК |
||||
|
THAINUMSTRING = ТАЙЧИСЛОВСТРОКУ |
||||
|
THAISTRINGLENGTH = ТАЙДЛИНАСТРОКИ |
||||
|
TRIM = СЖПРОБЕЛЫ |
||||
|
UNICHAR = ЮНИСИМВ |
||||
|
UNICODE = UNICODE |
||||
|
UPPER = ПРОПИСН |
||||
|
VALUE = ЗНАЧЕН |
||||
|
VALUETOTEXT = ЗНАЧЕНИЕВТЕКСТ |
||||
|
|
||||
|
## |
||||
|
## Веб-функции (Web Functions) |
||||
|
## |
||||
|
ENCODEURL = КОДИР.URL |
||||
|
FILTERXML = ФИЛЬТР.XML |
||||
|
WEBSERVICE = ВЕБСЛУЖБА |
||||
|
|
||||
|
## |
||||
|
## Функции совместимости (Compatibility Functions) |
||||
|
## |
||||
|
BETADIST = БЕТАРАСП |
||||
|
BETAINV = БЕТАОБР |
||||
|
BINOMDIST = БИНОМРАСП |
||||
|
CEILING = ОКРВВЕРХ |
||||
|
CHIDIST = ХИ2РАСП |
||||
|
CHIINV = ХИ2ОБР |
||||
|
CHITEST = ХИ2ТЕСТ |
||||
|
CONCATENATE = СЦЕПИТЬ |
||||
|
CONFIDENCE = ДОВЕРИТ |
||||
|
COVAR = КОВАР |
||||
|
CRITBINOM = КРИТБИНОМ |
||||
|
EXPONDIST = ЭКСПРАСП |
||||
|
FDIST = FРАСП |
||||
|
FINV = FРАСПОБР |
||||
|
FLOOR = ОКРВНИЗ |
||||
|
FORECAST = ПРЕДСКАЗ |
||||
|
FTEST = ФТЕСТ |
||||
|
GAMMADIST = ГАММАРАСП |
||||
|
GAMMAINV = ГАММАОБР |
||||
|
HYPGEOMDIST = ГИПЕРГЕОМЕТ |
||||
|
LOGINV = ЛОГНОРМОБР |
||||
|
LOGNORMDIST = ЛОГНОРМРАСП |
||||
|
MODE = МОДА |
||||
|
NEGBINOMDIST = ОТРБИНОМРАСП |
||||
|
NORMDIST = НОРМРАСП |
||||
|
NORMINV = НОРМОБР |
||||
|
NORMSDIST = НОРМСТРАСП |
||||
|
NORMSINV = НОРМСТОБР |
||||
|
PERCENTILE = ПЕРСЕНТИЛЬ |
||||
|
PERCENTRANK = ПРОЦЕНТРАНГ |
||||
|
POISSON = ПУАССОН |
||||
|
QUARTILE = КВАРТИЛЬ |
||||
|
RANK = РАНГ |
||||
|
STDEV = СТАНДОТКЛОН |
||||
|
STDEVP = СТАНДОТКЛОНП |
||||
|
TDIST = СТЬЮДРАСП |
||||
|
TINV = СТЬЮДРАСПОБР |
||||
|
TTEST = ТТЕСТ |
||||
|
VAR = ДИСП |
||||
|
VARP = ДИСПР |
||||
|
WEIBULL = ВЕЙБУЛЛ |
||||
|
ZTEST = ZТЕСТ |
||||
@ -0,0 +1,532 @@ |
|||||
|
############################################################ |
||||
|
## |
||||
|
## PhpSpreadsheet - function name translations |
||||
|
## |
||||
|
## Svenska (Swedish) |
||||
|
## |
||||
|
############################################################ |
||||
|
|
||||
|
|
||||
|
## |
||||
|
## Kubfunktioner (Cube Functions) |
||||
|
## |
||||
|
CUBEKPIMEMBER = KUBKPIMEDLEM |
||||
|
CUBEMEMBER = KUBMEDLEM |
||||
|
CUBEMEMBERPROPERTY = KUBMEDLEMSEGENSKAP |
||||
|
CUBERANKEDMEMBER = KUBRANGORDNADMEDLEM |
||||
|
CUBESET = KUBUPPSÄTTNING |
||||
|
CUBESETCOUNT = KUBUPPSÄTTNINGANTAL |
||||
|
CUBEVALUE = KUBVÄRDE |
||||
|
|
||||
|
## |
||||
|
## Databasfunktioner (Database Functions) |
||||
|
## |
||||
|
DAVERAGE = DMEDEL |
||||
|
DCOUNT = DANTAL |
||||
|
DCOUNTA = DANTALV |
||||
|
DGET = DHÄMTA |
||||
|
DMAX = DMAX |
||||
|
DMIN = DMIN |
||||
|
DPRODUCT = DPRODUKT |
||||
|
DSTDEV = DSTDAV |
||||
|
DSTDEVP = DSTDAVP |
||||
|
DSUM = DSUMMA |
||||
|
DVAR = DVARIANS |
||||
|
DVARP = DVARIANSP |
||||
|
|
||||
|
## |
||||
|
## Tid- och datumfunktioner (Date & Time Functions) |
||||
|
## |
||||
|
DATE = DATUM |
||||
|
DATEVALUE = DATUMVÄRDE |
||||
|
DAY = DAG |
||||
|
DAYS = DAGAR |
||||
|
DAYS360 = DAGAR360 |
||||
|
EDATE = EDATUM |
||||
|
EOMONTH = SLUTMÅNAD |
||||
|
HOUR = TIMME |
||||
|
ISOWEEKNUM = ISOVECKONR |
||||
|
MINUTE = MINUT |
||||
|
MONTH = MÅNAD |
||||
|
NETWORKDAYS = NETTOARBETSDAGAR |
||||
|
NETWORKDAYS.INTL = NETTOARBETSDAGAR.INT |
||||
|
NOW = NU |
||||
|
SECOND = SEKUND |
||||
|
THAIDAYOFWEEK = THAIVECKODAG |
||||
|
THAIMONTHOFYEAR = THAIMÅNAD |
||||
|
THAIYEAR = THAIÅR |
||||
|
TIME = KLOCKSLAG |
||||
|
TIMEVALUE = TIDVÄRDE |
||||
|
TODAY = IDAG |
||||
|
WEEKDAY = VECKODAG |
||||
|
WEEKNUM = VECKONR |
||||
|
WORKDAY = ARBETSDAGAR |
||||
|
WORKDAY.INTL = ARBETSDAGAR.INT |
||||
|
YEAR = ÅR |
||||
|
YEARFRAC = ÅRDEL |
||||
|
|
||||
|
## |
||||
|
## Tekniska funktioner (Engineering Functions) |
||||
|
## |
||||
|
BESSELI = BESSELI |
||||
|
BESSELJ = BESSELJ |
||||
|
BESSELK = BESSELK |
||||
|
BESSELY = BESSELY |
||||
|
BIN2DEC = BIN.TILL.DEC |
||||
|
BIN2HEX = BIN.TILL.HEX |
||||
|
BIN2OCT = BIN.TILL.OKT |
||||
|
BITAND = BITOCH |
||||
|
BITLSHIFT = BITVSKIFT |
||||
|
BITOR = BITELLER |
||||
|
BITRSHIFT = BITHSKIFT |
||||
|
BITXOR = BITXELLER |
||||
|
COMPLEX = KOMPLEX |
||||
|
CONVERT = KONVERTERA |
||||
|
DEC2BIN = DEC.TILL.BIN |
||||
|
DEC2HEX = DEC.TILL.HEX |
||||
|
DEC2OCT = DEC.TILL.OKT |
||||
|
DELTA = DELTA |
||||
|
ERF = FELF |
||||
|
ERF.PRECISE = FELF.EXAKT |
||||
|
ERFC = FELFK |
||||
|
ERFC.PRECISE = FELFK.EXAKT |
||||
|
GESTEP = SLSTEG |
||||
|
HEX2BIN = HEX.TILL.BIN |
||||
|
HEX2DEC = HEX.TILL.DEC |
||||
|
HEX2OCT = HEX.TILL.OKT |
||||
|
IMABS = IMABS |
||||
|
IMAGINARY = IMAGINÄR |
||||
|
IMARGUMENT = IMARGUMENT |
||||
|
IMCONJUGATE = IMKONJUGAT |
||||
|
IMCOS = IMCOS |
||||
|
IMCOSH = IMCOSH |
||||
|
IMCOT = IMCOT |
||||
|
IMCSC = IMCSC |
||||
|
IMCSCH = IMCSCH |
||||
|
IMDIV = IMDIV |
||||
|
IMEXP = IMEUPPHÖJT |
||||
|
IMLN = IMLN |
||||
|
IMLOG10 = IMLOG10 |
||||
|
IMLOG2 = IMLOG2 |
||||
|
IMPOWER = IMUPPHÖJT |
||||
|
IMPRODUCT = IMPRODUKT |
||||
|
IMREAL = IMREAL |
||||
|
IMSEC = IMSEK |
||||
|
IMSECH = IMSEKH |
||||
|
IMSIN = IMSIN |
||||
|
IMSINH = IMSINH |
||||
|
IMSQRT = IMROT |
||||
|
IMSUB = IMDIFF |
||||
|
IMSUM = IMSUM |
||||
|
IMTAN = IMTAN |
||||
|
OCT2BIN = OKT.TILL.BIN |
||||
|
OCT2DEC = OKT.TILL.DEC |
||||
|
OCT2HEX = OKT.TILL.HEX |
||||
|
|
||||
|
## |
||||
|
## Finansiella funktioner (Financial Functions) |
||||
|
## |
||||
|
ACCRINT = UPPLRÄNTA |
||||
|
ACCRINTM = UPPLOBLRÄNTA |
||||
|
AMORDEGRC = AMORDEGRC |
||||
|
AMORLINC = AMORLINC |
||||
|
COUPDAYBS = KUPDAGBB |
||||
|
COUPDAYS = KUPDAGB |
||||
|
COUPDAYSNC = KUPDAGNK |
||||
|
COUPNCD = KUPNKD |
||||
|
COUPNUM = KUPANT |
||||
|
COUPPCD = KUPFKD |
||||
|
CUMIPMT = KUMRÄNTA |
||||
|
CUMPRINC = KUMPRIS |
||||
|
DB = DB |
||||
|
DDB = DEGAVSKR |
||||
|
DISC = DISK |
||||
|
DOLLARDE = DECTAL |
||||
|
DOLLARFR = BRÅK |
||||
|
DURATION = LÖPTID |
||||
|
EFFECT = EFFRÄNTA |
||||
|
FV = SLUTVÄRDE |
||||
|
FVSCHEDULE = FÖRRÄNTNING |
||||
|
INTRATE = ÅRSRÄNTA |
||||
|
IPMT = RBETALNING |
||||
|
IRR = IR |
||||
|
ISPMT = RALÅN |
||||
|
MDURATION = MLÖPTID |
||||
|
MIRR = MODIR |
||||
|
NOMINAL = NOMRÄNTA |
||||
|
NPER = PERIODER |
||||
|
NPV = NETNUVÄRDE |
||||
|
ODDFPRICE = UDDAFPRIS |
||||
|
ODDFYIELD = UDDAFAVKASTNING |
||||
|
ODDLPRICE = UDDASPRIS |
||||
|
ODDLYIELD = UDDASAVKASTNING |
||||
|
PDURATION = PLÖPTID |
||||
|
PMT = BETALNING |
||||
|
PPMT = AMORT |
||||
|
PRICE = PRIS |
||||
|
PRICEDISC = PRISDISK |
||||
|
PRICEMAT = PRISFÖRF |
||||
|
PV = NUVÄRDE |
||||
|
RATE = RÄNTA |
||||
|
RECEIVED = BELOPP |
||||
|
RRI = AVKPÅINVEST |
||||
|
SLN = LINAVSKR |
||||
|
SYD = ÅRSAVSKR |
||||
|
TBILLEQ = SSVXEKV |
||||
|
TBILLPRICE = SSVXPRIS |
||||
|
TBILLYIELD = SSVXRÄNTA |
||||
|
VDB = VDEGRAVSKR |
||||
|
XIRR = XIRR |
||||
|
XNPV = XNUVÄRDE |
||||
|
YIELD = NOMAVK |
||||
|
YIELDDISC = NOMAVKDISK |
||||
|
YIELDMAT = NOMAVKFÖRF |
||||
|
|
||||
|
## |
||||
|
## Informationsfunktioner (Information Functions) |
||||
|
## |
||||
|
CELL = CELL |
||||
|
ERROR.TYPE = FEL.TYP |
||||
|
INFO = INFO |
||||
|
ISBLANK = ÄRTOM |
||||
|
ISERR = ÄRF |
||||
|
ISERROR = ÄRFEL |
||||
|
ISEVEN = ÄRJÄMN |
||||
|
ISFORMULA = ÄRFORMEL |
||||
|
ISLOGICAL = ÄRLOGISK |
||||
|
ISNA = ÄRSAKNAD |
||||
|
ISNONTEXT = ÄREJTEXT |
||||
|
ISNUMBER = ÄRTAL |
||||
|
ISODD = ÄRUDDA |
||||
|
ISREF = ÄRREF |
||||
|
ISTEXT = ÄRTEXT |
||||
|
N = N |
||||
|
NA = SAKNAS |
||||
|
SHEET = BLAD |
||||
|
SHEETS = ANTALBLAD |
||||
|
TYPE = VÄRDETYP |
||||
|
|
||||
|
## |
||||
|
## Logiska funktioner (Logical Functions) |
||||
|
## |
||||
|
AND = OCH |
||||
|
FALSE = FALSKT |
||||
|
IF = OM |
||||
|
IFERROR = OMFEL |
||||
|
IFNA = OMSAKNAS |
||||
|
IFS = IFS |
||||
|
NOT = ICKE |
||||
|
OR = ELLER |
||||
|
SWITCH = VÄXLA |
||||
|
TRUE = SANT |
||||
|
XOR = XELLER |
||||
|
|
||||
|
## |
||||
|
## Sök- och referensfunktioner (Lookup & Reference Functions) |
||||
|
## |
||||
|
ADDRESS = ADRESS |
||||
|
AREAS = OMRÅDEN |
||||
|
CHOOSE = VÄLJ |
||||
|
COLUMN = KOLUMN |
||||
|
COLUMNS = KOLUMNER |
||||
|
FORMULATEXT = FORMELTEXT |
||||
|
GETPIVOTDATA = HÄMTA.PIVOTDATA |
||||
|
HLOOKUP = LETAKOLUMN |
||||
|
HYPERLINK = HYPERLÄNK |
||||
|
INDEX = INDEX |
||||
|
INDIRECT = INDIREKT |
||||
|
LOOKUP = LETAUPP |
||||
|
MATCH = PASSA |
||||
|
OFFSET = FÖRSKJUTNING |
||||
|
ROW = RAD |
||||
|
ROWS = RADER |
||||
|
RTD = RTD |
||||
|
TRANSPOSE = TRANSPONERA |
||||
|
VLOOKUP = LETARAD |
||||
|
|
||||
|
## |
||||
|
## Matematiska och trigonometriska funktioner (Math & Trig Functions) |
||||
|
## |
||||
|
ABS = ABS |
||||
|
ACOS = ARCCOS |
||||
|
ACOSH = ARCCOSH |
||||
|
ACOT = ARCCOT |
||||
|
ACOTH = ARCCOTH |
||||
|
AGGREGATE = MÄNGD |
||||
|
ARABIC = ARABISKA |
||||
|
ASIN = ARCSIN |
||||
|
ASINH = ARCSINH |
||||
|
ATAN = ARCTAN |
||||
|
ATAN2 = ARCTAN2 |
||||
|
ATANH = ARCTANH |
||||
|
BASE = BAS |
||||
|
CEILING.MATH = RUNDA.UPP.MATEMATISKT |
||||
|
CEILING.PRECISE = RUNDA.UPP.EXAKT |
||||
|
COMBIN = KOMBIN |
||||
|
COMBINA = KOMBINA |
||||
|
COS = COS |
||||
|
COSH = COSH |
||||
|
COT = COT |
||||
|
COTH = COTH |
||||
|
CSC = CSC |
||||
|
CSCH = CSCH |
||||
|
DECIMAL = DECIMAL |
||||
|
DEGREES = GRADER |
||||
|
ECMA.CEILING = ECMA.RUNDA.UPP |
||||
|
EVEN = JÄMN |
||||
|
EXP = EXP |
||||
|
FACT = FAKULTET |
||||
|
FACTDOUBLE = DUBBELFAKULTET |
||||
|
FLOOR.MATH = RUNDA.NER.MATEMATISKT |
||||
|
FLOOR.PRECISE = RUNDA.NER.EXAKT |
||||
|
GCD = SGD |
||||
|
INT = HELTAL |
||||
|
ISO.CEILING = ISO.RUNDA.UPP |
||||
|
LCM = MGM |
||||
|
LN = LN |
||||
|
LOG = LOG |
||||
|
LOG10 = LOG10 |
||||
|
MDETERM = MDETERM |
||||
|
MINVERSE = MINVERT |
||||
|
MMULT = MMULT |
||||
|
MOD = REST |
||||
|
MROUND = MAVRUNDA |
||||
|
MULTINOMIAL = MULTINOMIAL |
||||
|
MUNIT = MENHET |
||||
|
ODD = UDDA |
||||
|
PI = PI |
||||
|
POWER = UPPHÖJT.TILL |
||||
|
PRODUCT = PRODUKT |
||||
|
QUOTIENT = KVOT |
||||
|
RADIANS = RADIANER |
||||
|
RAND = SLUMP |
||||
|
RANDBETWEEN = SLUMP.MELLAN |
||||
|
ROMAN = ROMERSK |
||||
|
ROUND = AVRUNDA |
||||
|
ROUNDBAHTDOWN = AVRUNDABAHTNEDÅT |
||||
|
ROUNDBAHTUP = AVRUNDABAHTUPPÅT |
||||
|
ROUNDDOWN = AVRUNDA.NEDÅT |
||||
|
ROUNDUP = AVRUNDA.UPPÅT |
||||
|
SEC = SEK |
||||
|
SECH = SEKH |
||||
|
SERIESSUM = SERIESUMMA |
||||
|
SIGN = TECKEN |
||||
|
SIN = SIN |
||||
|
SINH = SINH |
||||
|
SQRT = ROT |
||||
|
SQRTPI = ROTPI |
||||
|
SUBTOTAL = DELSUMMA |
||||
|
SUM = SUMMA |
||||
|
SUMIF = SUMMA.OM |
||||
|
SUMIFS = SUMMA.OMF |
||||
|
SUMPRODUCT = PRODUKTSUMMA |
||||
|
SUMSQ = KVADRATSUMMA |
||||
|
SUMX2MY2 = SUMMAX2MY2 |
||||
|
SUMX2PY2 = SUMMAX2PY2 |
||||
|
SUMXMY2 = SUMMAXMY2 |
||||
|
TAN = TAN |
||||
|
TANH = TANH |
||||
|
TRUNC = AVKORTA |
||||
|
|
||||
|
## |
||||
|
## Statistiska funktioner (Statistical Functions) |
||||
|
## |
||||
|
AVEDEV = MEDELAVV |
||||
|
AVERAGE = MEDEL |
||||
|
AVERAGEA = AVERAGEA |
||||
|
AVERAGEIF = MEDEL.OM |
||||
|
AVERAGEIFS = MEDEL.OMF |
||||
|
BETA.DIST = BETA.FÖRD |
||||
|
BETA.INV = BETA.INV |
||||
|
BINOM.DIST = BINOM.FÖRD |
||||
|
BINOM.DIST.RANGE = BINOM.FÖRD.INTERVALL |
||||
|
BINOM.INV = BINOM.INV |
||||
|
CHISQ.DIST = CHI2.FÖRD |
||||
|
CHISQ.DIST.RT = CHI2.FÖRD.RT |
||||
|
CHISQ.INV = CHI2.INV |
||||
|
CHISQ.INV.RT = CHI2.INV.RT |
||||
|
CHISQ.TEST = CHI2.TEST |
||||
|
CONFIDENCE.NORM = KONFIDENS.NORM |
||||
|
CONFIDENCE.T = KONFIDENS.T |
||||
|
CORREL = KORREL |
||||
|
COUNT = ANTAL |
||||
|
COUNTA = ANTALV |
||||
|
COUNTBLANK = ANTAL.TOMMA |
||||
|
COUNTIF = ANTAL.OM |
||||
|
COUNTIFS = ANTAL.OMF |
||||
|
COVARIANCE.P = KOVARIANS.P |
||||
|
COVARIANCE.S = KOVARIANS.S |
||||
|
DEVSQ = KVADAVV |
||||
|
EXPON.DIST = EXPON.FÖRD |
||||
|
F.DIST = F.FÖRD |
||||
|
F.DIST.RT = F.FÖRD.RT |
||||
|
F.INV = F.INV |
||||
|
F.INV.RT = F.INV.RT |
||||
|
F.TEST = F.TEST |
||||
|
FISHER = FISHER |
||||
|
FISHERINV = FISHERINV |
||||
|
FORECAST.ETS = PROGNOS.ETS |
||||
|
FORECAST.ETS.CONFINT = PROGNOS.ETS.KONFINT |
||||
|
FORECAST.ETS.SEASONALITY = PROGNOS.ETS.SÄSONGSBEROENDE |
||||
|
FORECAST.ETS.STAT = PROGNOS.ETS.STAT |
||||
|
FORECAST.LINEAR = PROGNOS.LINJÄR |
||||
|
FREQUENCY = FREKVENS |
||||
|
GAMMA = GAMMA |
||||
|
GAMMA.DIST = GAMMA.FÖRD |
||||
|
GAMMA.INV = GAMMA.INV |
||||
|
GAMMALN = GAMMALN |
||||
|
GAMMALN.PRECISE = GAMMALN.EXAKT |
||||
|
GAUSS = GAUSS |
||||
|
GEOMEAN = GEOMEDEL |
||||
|
GROWTH = EXPTREND |
||||
|
HARMEAN = HARMMEDEL |
||||
|
HYPGEOM.DIST = HYPGEOM.FÖRD |
||||
|
INTERCEPT = SKÄRNINGSPUNKT |
||||
|
KURT = TOPPIGHET |
||||
|
LARGE = STÖRSTA |
||||
|
LINEST = REGR |
||||
|
LOGEST = EXPREGR |
||||
|
LOGNORM.DIST = LOGNORM.FÖRD |
||||
|
LOGNORM.INV = LOGNORM.INV |
||||
|
MAX = MAX |
||||
|
MAXA = MAXA |
||||
|
MAXIFS = MAXIFS |
||||
|
MEDIAN = MEDIAN |
||||
|
MIN = MIN |
||||
|
MINA = MINA |
||||
|
MINIFS = MINIFS |
||||
|
MODE.MULT = TYPVÄRDE.FLERA |
||||
|
MODE.SNGL = TYPVÄRDE.ETT |
||||
|
NEGBINOM.DIST = NEGBINOM.FÖRD |
||||
|
NORM.DIST = NORM.FÖRD |
||||
|
NORM.INV = NORM.INV |
||||
|
NORM.S.DIST = NORM.S.FÖRD |
||||
|
NORM.S.INV = NORM.S.INV |
||||
|
PEARSON = PEARSON |
||||
|
PERCENTILE.EXC = PERCENTIL.EXK |
||||
|
PERCENTILE.INC = PERCENTIL.INK |
||||
|
PERCENTRANK.EXC = PROCENTRANG.EXK |
||||
|
PERCENTRANK.INC = PROCENTRANG.INK |
||||
|
PERMUT = PERMUT |
||||
|
PERMUTATIONA = PERMUTATIONA |
||||
|
PHI = PHI |
||||
|
POISSON.DIST = POISSON.FÖRD |
||||
|
PROB = SANNOLIKHET |
||||
|
QUARTILE.EXC = KVARTIL.EXK |
||||
|
QUARTILE.INC = KVARTIL.INK |
||||
|
RANK.AVG = RANG.MED |
||||
|
RANK.EQ = RANG.EKV |
||||
|
RSQ = RKV |
||||
|
SKEW = SNEDHET |
||||
|
SKEW.P = SNEDHET.P |
||||
|
SLOPE = LUTNING |
||||
|
SMALL = MINSTA |
||||
|
STANDARDIZE = STANDARDISERA |
||||
|
STDEV.P = STDAV.P |
||||
|
STDEV.S = STDAV.S |
||||
|
STDEVA = STDEVA |
||||
|
STDEVPA = STDEVPA |
||||
|
STEYX = STDFELYX |
||||
|
T.DIST = T.FÖRD |
||||
|
T.DIST.2T = T.FÖRD.2T |
||||
|
T.DIST.RT = T.FÖRD.RT |
||||
|
T.INV = T.INV |
||||
|
T.INV.2T = T.INV.2T |
||||
|
T.TEST = T.TEST |
||||
|
TREND = TREND |
||||
|
TRIMMEAN = TRIMMEDEL |
||||
|
VAR.P = VARIANS.P |
||||
|
VAR.S = VARIANS.S |
||||
|
VARA = VARA |
||||
|
VARPA = VARPA |
||||
|
WEIBULL.DIST = WEIBULL.FÖRD |
||||
|
Z.TEST = Z.TEST |
||||
|
|
||||
|
## |
||||
|
## Textfunktioner (Text Functions) |
||||
|
## |
||||
|
BAHTTEXT = BAHTTEXT |
||||
|
CHAR = TECKENKOD |
||||
|
CLEAN = STÄDA |
||||
|
CODE = KOD |
||||
|
CONCAT = SAMMAN |
||||
|
DOLLAR = VALUTA |
||||
|
EXACT = EXAKT |
||||
|
FIND = HITTA |
||||
|
FIXED = FASTTAL |
||||
|
LEFT = VÄNSTER |
||||
|
LEN = LÄNGD |
||||
|
LOWER = GEMENER |
||||
|
MID = EXTEXT |
||||
|
NUMBERVALUE = TALVÄRDE |
||||
|
PROPER = INITIAL |
||||
|
REPLACE = ERSÄTT |
||||
|
REPT = REP |
||||
|
RIGHT = HÖGER |
||||
|
SEARCH = SÖK |
||||
|
SUBSTITUTE = BYT.UT |
||||
|
T = T |
||||
|
TEXT = TEXT |
||||
|
TEXTJOIN = TEXTJOIN |
||||
|
THAIDIGIT = THAISIFFRA |
||||
|
THAINUMSOUND = THAITALLJUD |
||||
|
THAINUMSTRING = THAITALSTRÄNG |
||||
|
THAISTRINGLENGTH = THAISTRÄNGLÄNGD |
||||
|
TRIM = RENSA |
||||
|
UNICHAR = UNITECKENKOD |
||||
|
UNICODE = UNICODE |
||||
|
UPPER = VERSALER |
||||
|
VALUE = TEXTNUM |
||||
|
|
||||
|
## |
||||
|
## Webbfunktioner (Web Functions) |
||||
|
## |
||||
|
ENCODEURL = KODAWEBBADRESS |
||||
|
FILTERXML = FILTRERAXML |
||||
|
WEBSERVICE = WEBBTJÄNST |
||||
|
|
||||
|
## |
||||
|
## Kompatibilitetsfunktioner (Compatibility Functions) |
||||
|
## |
||||
|
BETADIST = BETAFÖRD |
||||
|
BETAINV = BETAINV |
||||
|
BINOMDIST = BINOMFÖRD |
||||
|
CEILING = RUNDA.UPP |
||||
|
CHIDIST = CHI2FÖRD |
||||
|
CHIINV = CHI2INV |
||||
|
CHITEST = CHI2TEST |
||||
|
CONCATENATE = SAMMANFOGA |
||||
|
CONFIDENCE = KONFIDENS |
||||
|
COVAR = KOVAR |
||||
|
CRITBINOM = KRITBINOM |
||||
|
EXPONDIST = EXPONFÖRD |
||||
|
FDIST = FFÖRD |
||||
|
FINV = FINV |
||||
|
FLOOR = RUNDA.NER |
||||
|
FORECAST = PREDIKTION |
||||
|
FTEST = FTEST |
||||
|
GAMMADIST = GAMMAFÖRD |
||||
|
GAMMAINV = GAMMAINV |
||||
|
HYPGEOMDIST = HYPGEOMFÖRD |
||||
|
LOGINV = LOGINV |
||||
|
LOGNORMDIST = LOGNORMFÖRD |
||||
|
MODE = TYPVÄRDE |
||||
|
NEGBINOMDIST = NEGBINOMFÖRD |
||||
|
NORMDIST = NORMFÖRD |
||||
|
NORMINV = NORMINV |
||||
|
NORMSDIST = NORMSFÖRD |
||||
|
NORMSINV = NORMSINV |
||||
|
PERCENTILE = PERCENTIL |
||||
|
PERCENTRANK = PROCENTRANG |
||||
|
POISSON = POISSON |
||||
|
QUARTILE = KVARTIL |
||||
|
RANK = RANG |
||||
|
STDEV = STDAV |
||||
|
STDEVP = STDAVP |
||||
|
TDIST = TFÖRD |
||||
|
TINV = TINV |
||||
|
TTEST = TTEST |
||||
|
VAR = VARIANS |
||||
|
VARP = VARIANSP |
||||
|
WEIBULL = WEIBULL |
||||
|
ZTEST = ZTEST |
||||
@ -0,0 +1,537 @@ |
|||||
|
############################################################ |
||||
|
## |
||||
|
## PhpSpreadsheet - function name translations |
||||
|
## |
||||
|
## Türkçe (Turkish) |
||||
|
## |
||||
|
############################################################ |
||||
|
|
||||
|
|
||||
|
## |
||||
|
## Küp işlevleri (Cube Functions) |
||||
|
## |
||||
|
CUBEKPIMEMBER = KÜPKPIÜYESİ |
||||
|
CUBEMEMBER = KÜPÜYESİ |
||||
|
CUBEMEMBERPROPERTY = KÜPÜYEÖZELLİĞİ |
||||
|
CUBERANKEDMEMBER = DERECELİKÜPÜYESİ |
||||
|
CUBESET = KÜPKÜMESİ |
||||
|
CUBESETCOUNT = KÜPKÜMESAYISI |
||||
|
CUBEVALUE = KÜPDEĞERİ |
||||
|
|
||||
|
## |
||||
|
## Veritabanı işlevleri (Database Functions) |
||||
|
## |
||||
|
DAVERAGE = VSEÇORT |
||||
|
DCOUNT = VSEÇSAY |
||||
|
DCOUNTA = VSEÇSAYDOLU |
||||
|
DGET = VAL |
||||
|
DMAX = VSEÇMAK |
||||
|
DMIN = VSEÇMİN |
||||
|
DPRODUCT = VSEÇÇARP |
||||
|
DSTDEV = VSEÇSTDSAPMA |
||||
|
DSTDEVP = VSEÇSTDSAPMAS |
||||
|
DSUM = VSEÇTOPLA |
||||
|
DVAR = VSEÇVAR |
||||
|
DVARP = VSEÇVARS |
||||
|
|
||||
|
## |
||||
|
## Tarih ve saat işlevleri (Date & Time Functions) |
||||
|
## |
||||
|
DATE = TARİH |
||||
|
DATEDIF = ETARİHLİ |
||||
|
DATESTRING = TARİHDİZİ |
||||
|
DATEVALUE = TARİHSAYISI |
||||
|
DAY = GÜN |
||||
|
DAYS = GÜNSAY |
||||
|
DAYS360 = GÜN360 |
||||
|
EDATE = SERİTARİH |
||||
|
EOMONTH = SERİAY |
||||
|
HOUR = SAAT |
||||
|
ISOWEEKNUM = ISOHAFTASAY |
||||
|
MINUTE = DAKİKA |
||||
|
MONTH = AY |
||||
|
NETWORKDAYS = TAMİŞGÜNÜ |
||||
|
NETWORKDAYS.INTL = TAMİŞGÜNÜ.ULUSL |
||||
|
NOW = ŞİMDİ |
||||
|
SECOND = SANİYE |
||||
|
THAIDAYOFWEEK = TAYHAFTANINGÜNÜ |
||||
|
THAIMONTHOFYEAR = TAYYILINAYI |
||||
|
THAIYEAR = TAYYILI |
||||
|
TIME = ZAMAN |
||||
|
TIMEVALUE = ZAMANSAYISI |
||||
|
TODAY = BUGÜN |
||||
|
WEEKDAY = HAFTANINGÜNÜ |
||||
|
WEEKNUM = HAFTASAY |
||||
|
WORKDAY = İŞGÜNÜ |
||||
|
WORKDAY.INTL = İŞGÜNÜ.ULUSL |
||||
|
YEAR = YIL |
||||
|
YEARFRAC = YILORAN |
||||
|
|
||||
|
## |
||||
|
## Mühendislik işlevleri (Engineering Functions) |
||||
|
## |
||||
|
BESSELI = BESSELI |
||||
|
BESSELJ = BESSELJ |
||||
|
BESSELK = BESSELK |
||||
|
BESSELY = BESSELY |
||||
|
BIN2DEC = BIN2DEC |
||||
|
BIN2HEX = BIN2HEX |
||||
|
BIN2OCT = BIN2OCT |
||||
|
BITAND = BİTVE |
||||
|
BITLSHIFT = BİTSOLAKAYDIR |
||||
|
BITOR = BİTVEYA |
||||
|
BITRSHIFT = BİTSAĞAKAYDIR |
||||
|
BITXOR = BİTÖZELVEYA |
||||
|
COMPLEX = KARMAŞIK |
||||
|
CONVERT = ÇEVİR |
||||
|
DEC2BIN = DEC2BIN |
||||
|
DEC2HEX = DEC2HEX |
||||
|
DEC2OCT = DEC2OCT |
||||
|
DELTA = DELTA |
||||
|
ERF = HATAİŞLEV |
||||
|
ERF.PRECISE = HATAİŞLEV.DUYARLI |
||||
|
ERFC = TÜMHATAİŞLEV |
||||
|
ERFC.PRECISE = TÜMHATAİŞLEV.DUYARLI |
||||
|
GESTEP = BESINIR |
||||
|
HEX2BIN = HEX2BIN |
||||
|
HEX2DEC = HEX2DEC |
||||
|
HEX2OCT = HEX2OCT |
||||
|
IMABS = SANMUTLAK |
||||
|
IMAGINARY = SANAL |
||||
|
IMARGUMENT = SANBAĞ_DEĞİŞKEN |
||||
|
IMCONJUGATE = SANEŞLENEK |
||||
|
IMCOS = SANCOS |
||||
|
IMCOSH = SANCOSH |
||||
|
IMCOT = SANCOT |
||||
|
IMCSC = SANCSC |
||||
|
IMCSCH = SANCSCH |
||||
|
IMDIV = SANBÖL |
||||
|
IMEXP = SANÜS |
||||
|
IMLN = SANLN |
||||
|
IMLOG10 = SANLOG10 |
||||
|
IMLOG2 = SANLOG2 |
||||
|
IMPOWER = SANKUVVET |
||||
|
IMPRODUCT = SANÇARP |
||||
|
IMREAL = SANGERÇEK |
||||
|
IMSEC = SANSEC |
||||
|
IMSECH = SANSECH |
||||
|
IMSIN = SANSIN |
||||
|
IMSINH = SANSINH |
||||
|
IMSQRT = SANKAREKÖK |
||||
|
IMSUB = SANTOPLA |
||||
|
IMSUM = SANÇIKAR |
||||
|
IMTAN = SANTAN |
||||
|
OCT2BIN = OCT2BIN |
||||
|
OCT2DEC = OCT2DEC |
||||
|
OCT2HEX = OCT2HEX |
||||
|
|
||||
|
## |
||||
|
## Finansal işlevler (Financial Functions) |
||||
|
## |
||||
|
ACCRINT = GERÇEKFAİZ |
||||
|
ACCRINTM = GERÇEKFAİZV |
||||
|
AMORDEGRC = AMORDEGRC |
||||
|
AMORLINC = AMORLINC |
||||
|
COUPDAYBS = KUPONGÜNBD |
||||
|
COUPDAYS = KUPONGÜN |
||||
|
COUPDAYSNC = KUPONGÜNDSK |
||||
|
COUPNCD = KUPONGÜNSKT |
||||
|
COUPNUM = KUPONSAYI |
||||
|
COUPPCD = KUPONGÜNÖKT |
||||
|
CUMIPMT = TOPÖDENENFAİZ |
||||
|
CUMPRINC = TOPANAPARA |
||||
|
DB = AZALANBAKİYE |
||||
|
DDB = ÇİFTAZALANBAKİYE |
||||
|
DISC = İNDİRİM |
||||
|
DOLLARDE = LİRAON |
||||
|
DOLLARFR = LİRAKES |
||||
|
DURATION = SÜRE |
||||
|
EFFECT = ETKİN |
||||
|
FV = GD |
||||
|
FVSCHEDULE = GDPROGRAM |
||||
|
INTRATE = FAİZORANI |
||||
|
IPMT = FAİZTUTARI |
||||
|
IRR = İÇ_VERİM_ORANI |
||||
|
ISPMT = ISPMT |
||||
|
MDURATION = MSÜRE |
||||
|
MIRR = D_İÇ_VERİM_ORANI |
||||
|
NOMINAL = NOMİNAL |
||||
|
NPER = TAKSİT_SAYISI |
||||
|
NPV = NBD |
||||
|
ODDFPRICE = TEKYDEĞER |
||||
|
ODDFYIELD = TEKYÖDEME |
||||
|
ODDLPRICE = TEKSDEĞER |
||||
|
ODDLYIELD = TEKSÖDEME |
||||
|
PDURATION = PSÜRE |
||||
|
PMT = DEVRESEL_ÖDEME |
||||
|
PPMT = ANA_PARA_ÖDEMESİ |
||||
|
PRICE = DEĞER |
||||
|
PRICEDISC = DEĞERİND |
||||
|
PRICEMAT = DEĞERVADE |
||||
|
PV = BD |
||||
|
RATE = FAİZ_ORANI |
||||
|
RECEIVED = GETİRİ |
||||
|
RRI = GERÇEKLEŞENYATIRIMGETİRİSİ |
||||
|
SLN = DA |
||||
|
SYD = YAT |
||||
|
TBILLEQ = HTAHEŞ |
||||
|
TBILLPRICE = HTAHDEĞER |
||||
|
TBILLYIELD = HTAHÖDEME |
||||
|
VDB = DAB |
||||
|
XIRR = AİÇVERİMORANI |
||||
|
XNPV = ANBD |
||||
|
YIELD = ÖDEME |
||||
|
YIELDDISC = ÖDEMEİND |
||||
|
YIELDMAT = ÖDEMEVADE |
||||
|
|
||||
|
## |
||||
|
## Bilgi işlevleri (Information Functions) |
||||
|
## |
||||
|
CELL = HÜCRE |
||||
|
ERROR.TYPE = HATA.TİPİ |
||||
|
INFO = BİLGİ |
||||
|
ISBLANK = EBOŞSA |
||||
|
ISERR = EHATA |
||||
|
ISERROR = EHATALIYSA |
||||
|
ISEVEN = ÇİFTMİ |
||||
|
ISFORMULA = EFORMÜLSE |
||||
|
ISLOGICAL = EMANTIKSALSA |
||||
|
ISNA = EYOKSA |
||||
|
ISNONTEXT = EMETİNDEĞİLSE |
||||
|
ISNUMBER = ESAYIYSA |
||||
|
ISODD = TEKMİ |
||||
|
ISREF = EREFSE |
||||
|
ISTEXT = EMETİNSE |
||||
|
N = S |
||||
|
NA = YOKSAY |
||||
|
SHEET = SAYFA |
||||
|
SHEETS = SAYFALAR |
||||
|
TYPE = TÜR |
||||
|
|
||||
|
## |
||||
|
## Mantıksal işlevler (Logical Functions) |
||||
|
## |
||||
|
AND = VE |
||||
|
FALSE = YANLIŞ |
||||
|
IF = EĞER |
||||
|
IFERROR = EĞERHATA |
||||
|
IFNA = EĞERYOKSA |
||||
|
IFS = ÇOKEĞER |
||||
|
NOT = DEĞİL |
||||
|
OR = YADA |
||||
|
SWITCH = İLKEŞLEŞEN |
||||
|
TRUE = DOĞRU |
||||
|
XOR = ÖZELVEYA |
||||
|
|
||||
|
## |
||||
|
## Arama ve başvuru işlevleri (Lookup & Reference Functions) |
||||
|
## |
||||
|
ADDRESS = ADRES |
||||
|
AREAS = ALANSAY |
||||
|
CHOOSE = ELEMAN |
||||
|
COLUMN = SÜTUN |
||||
|
COLUMNS = SÜTUNSAY |
||||
|
FORMULATEXT = FORMÜLMETNİ |
||||
|
GETPIVOTDATA = ÖZETVERİAL |
||||
|
HLOOKUP = YATAYARA |
||||
|
HYPERLINK = KÖPRÜ |
||||
|
INDEX = İNDİS |
||||
|
INDIRECT = DOLAYLI |
||||
|
LOOKUP = ARA |
||||
|
MATCH = KAÇINCI |
||||
|
OFFSET = KAYDIR |
||||
|
ROW = SATIR |
||||
|
ROWS = SATIRSAY |
||||
|
RTD = GZV |
||||
|
TRANSPOSE = DEVRİK_DÖNÜŞÜM |
||||
|
VLOOKUP = DÜŞEYARA |
||||
|
|
||||
|
## |
||||
|
## Matematik ve trigonometri işlevleri (Math & Trig Functions) |
||||
|
## |
||||
|
ABS = MUTLAK |
||||
|
ACOS = ACOS |
||||
|
ACOSH = ACOSH |
||||
|
ACOT = ACOT |
||||
|
ACOTH = ACOTH |
||||
|
AGGREGATE = TOPLAMA |
||||
|
ARABIC = ARAP |
||||
|
ASIN = ASİN |
||||
|
ASINH = ASİNH |
||||
|
ATAN = ATAN |
||||
|
ATAN2 = ATAN2 |
||||
|
ATANH = ATANH |
||||
|
BASE = TABAN |
||||
|
CEILING.MATH = TAVANAYUVARLA.MATEMATİK |
||||
|
CEILING.PRECISE = TAVANAYUVARLA.DUYARLI |
||||
|
COMBIN = KOMBİNASYON |
||||
|
COMBINA = KOMBİNASYONA |
||||
|
COS = COS |
||||
|
COSH = COSH |
||||
|
COT = COT |
||||
|
COTH = COTH |
||||
|
CSC = CSC |
||||
|
CSCH = CSCH |
||||
|
DECIMAL = ONDALIK |
||||
|
DEGREES = DERECE |
||||
|
ECMA.CEILING = ECMA.TAVAN |
||||
|
EVEN = ÇİFT |
||||
|
EXP = ÜS |
||||
|
FACT = ÇARPINIM |
||||
|
FACTDOUBLE = ÇİFTFAKTÖR |
||||
|
FLOOR.MATH = TABANAYUVARLA.MATEMATİK |
||||
|
FLOOR.PRECISE = TABANAYUVARLA.DUYARLI |
||||
|
GCD = OBEB |
||||
|
INT = TAMSAYI |
||||
|
ISO.CEILING = ISO.TAVAN |
||||
|
LCM = OKEK |
||||
|
LN = LN |
||||
|
LOG = LOG |
||||
|
LOG10 = LOG10 |
||||
|
MDETERM = DETERMİNANT |
||||
|
MINVERSE = DİZEY_TERS |
||||
|
MMULT = DÇARP |
||||
|
MOD = MOD |
||||
|
MROUND = KYUVARLA |
||||
|
MULTINOMIAL = ÇOKTERİMLİ |
||||
|
MUNIT = BİRİMMATRİS |
||||
|
ODD = TEK |
||||
|
PI = Pİ |
||||
|
POWER = KUVVET |
||||
|
PRODUCT = ÇARPIM |
||||
|
QUOTIENT = BÖLÜM |
||||
|
RADIANS = RADYAN |
||||
|
RAND = S_SAYI_ÜRET |
||||
|
RANDBETWEEN = RASTGELEARADA |
||||
|
ROMAN = ROMEN |
||||
|
ROUND = YUVARLA |
||||
|
ROUNDBAHTDOWN = BAHTAŞAĞIYUVARLA |
||||
|
ROUNDBAHTUP = BAHTYUKARIYUVARLA |
||||
|
ROUNDDOWN = AŞAĞIYUVARLA |
||||
|
ROUNDUP = YUKARIYUVARLA |
||||
|
SEC = SEC |
||||
|
SECH = SECH |
||||
|
SERIESSUM = SERİTOPLA |
||||
|
SIGN = İŞARET |
||||
|
SIN = SİN |
||||
|
SINH = SİNH |
||||
|
SQRT = KAREKÖK |
||||
|
SQRTPI = KAREKÖKPİ |
||||
|
SUBTOTAL = ALTTOPLAM |
||||
|
SUM = TOPLA |
||||
|
SUMIF = ETOPLA |
||||
|
SUMIFS = ÇOKETOPLA |
||||
|
SUMPRODUCT = TOPLA.ÇARPIM |
||||
|
SUMSQ = TOPKARE |
||||
|
SUMX2MY2 = TOPX2EY2 |
||||
|
SUMX2PY2 = TOPX2AY2 |
||||
|
SUMXMY2 = TOPXEY2 |
||||
|
TAN = TAN |
||||
|
TANH = TANH |
||||
|
TRUNC = NSAT |
||||
|
|
||||
|
## |
||||
|
## İstatistik işlevleri (Statistical Functions) |
||||
|
## |
||||
|
AVEDEV = ORTSAP |
||||
|
AVERAGE = ORTALAMA |
||||
|
AVERAGEA = ORTALAMAA |
||||
|
AVERAGEIF = EĞERORTALAMA |
||||
|
AVERAGEIFS = ÇOKEĞERORTALAMA |
||||
|
BETA.DIST = BETA.DAĞ |
||||
|
BETA.INV = BETA.TERS |
||||
|
BINOM.DIST = BİNOM.DAĞ |
||||
|
BINOM.DIST.RANGE = BİNOM.DAĞ.ARALIK |
||||
|
BINOM.INV = BİNOM.TERS |
||||
|
CHISQ.DIST = KİKARE.DAĞ |
||||
|
CHISQ.DIST.RT = KİKARE.DAĞ.SAĞK |
||||
|
CHISQ.INV = KİKARE.TERS |
||||
|
CHISQ.INV.RT = KİKARE.TERS.SAĞK |
||||
|
CHISQ.TEST = KİKARE.TEST |
||||
|
CONFIDENCE.NORM = GÜVENİLİRLİK.NORM |
||||
|
CONFIDENCE.T = GÜVENİLİRLİK.T |
||||
|
CORREL = KORELASYON |
||||
|
COUNT = BAĞ_DEĞ_SAY |
||||
|
COUNTA = BAĞ_DEĞ_DOLU_SAY |
||||
|
COUNTBLANK = BOŞLUKSAY |
||||
|
COUNTIF = EĞERSAY |
||||
|
COUNTIFS = ÇOKEĞERSAY |
||||
|
COVARIANCE.P = KOVARYANS.P |
||||
|
COVARIANCE.S = KOVARYANS.S |
||||
|
DEVSQ = SAPKARE |
||||
|
EXPON.DIST = ÜSTEL.DAĞ |
||||
|
F.DIST = F.DAĞ |
||||
|
F.DIST.RT = F.DAĞ.SAĞK |
||||
|
F.INV = F.TERS |
||||
|
F.INV.RT = F.TERS.SAĞK |
||||
|
F.TEST = F.TEST |
||||
|
FISHER = FISHER |
||||
|
FISHERINV = FISHERTERS |
||||
|
FORECAST.ETS = TAHMİN.ETS |
||||
|
FORECAST.ETS.CONFINT = TAHMİN.ETS.GVNARAL |
||||
|
FORECAST.ETS.SEASONALITY = TAHMİN.ETS.MEVSİMSELLİK |
||||
|
FORECAST.ETS.STAT = TAHMİN.ETS.İSTAT |
||||
|
FORECAST.LINEAR = TAHMİN.DOĞRUSAL |
||||
|
FREQUENCY = SIKLIK |
||||
|
GAMMA = GAMA |
||||
|
GAMMA.DIST = GAMA.DAĞ |
||||
|
GAMMA.INV = GAMA.TERS |
||||
|
GAMMALN = GAMALN |
||||
|
GAMMALN.PRECISE = GAMALN.DUYARLI |
||||
|
GAUSS = GAUSS |
||||
|
GEOMEAN = GEOORT |
||||
|
GROWTH = BÜYÜME |
||||
|
HARMEAN = HARORT |
||||
|
HYPGEOM.DIST = HİPERGEOM.DAĞ |
||||
|
INTERCEPT = KESMENOKTASI |
||||
|
KURT = BASIKLIK |
||||
|
LARGE = BÜYÜK |
||||
|
LINEST = DOT |
||||
|
LOGEST = LOT |
||||
|
LOGNORM.DIST = LOGNORM.DAĞ |
||||
|
LOGNORM.INV = LOGNORM.TERS |
||||
|
MAX = MAK |
||||
|
MAXA = MAKA |
||||
|
MAXIFS = ÇOKEĞERMAK |
||||
|
MEDIAN = ORTANCA |
||||
|
MIN = MİN |
||||
|
MINA = MİNA |
||||
|
MINIFS = ÇOKEĞERMİN |
||||
|
MODE.MULT = ENÇOK_OLAN.ÇOK |
||||
|
MODE.SNGL = ENÇOK_OLAN.TEK |
||||
|
NEGBINOM.DIST = NEGBİNOM.DAĞ |
||||
|
NORM.DIST = NORM.DAĞ |
||||
|
NORM.INV = NORM.TERS |
||||
|
NORM.S.DIST = NORM.S.DAĞ |
||||
|
NORM.S.INV = NORM.S.TERS |
||||
|
PEARSON = PEARSON |
||||
|
PERCENTILE.EXC = YÜZDEBİRLİK.HRC |
||||
|
PERCENTILE.INC = YÜZDEBİRLİK.DHL |
||||
|
PERCENTRANK.EXC = YÜZDERANK.HRC |
||||
|
PERCENTRANK.INC = YÜZDERANK.DHL |
||||
|
PERMUT = PERMÜTASYON |
||||
|
PERMUTATIONA = PERMÜTASYONA |
||||
|
PHI = PHI |
||||
|
POISSON.DIST = POISSON.DAĞ |
||||
|
PROB = OLASILIK |
||||
|
QUARTILE.EXC = DÖRTTEBİRLİK.HRC |
||||
|
QUARTILE.INC = DÖRTTEBİRLİK.DHL |
||||
|
RANK.AVG = RANK.ORT |
||||
|
RANK.EQ = RANK.EŞİT |
||||
|
RSQ = RKARE |
||||
|
SKEW = ÇARPIKLIK |
||||
|
SKEW.P = ÇARPIKLIK.P |
||||
|
SLOPE = EĞİM |
||||
|
SMALL = KÜÇÜK |
||||
|
STANDARDIZE = STANDARTLAŞTIRMA |
||||
|
STDEV.P = STDSAPMA.P |
||||
|
STDEV.S = STDSAPMA.S |
||||
|
STDEVA = STDSAPMAA |
||||
|
STDEVPA = STDSAPMASA |
||||
|
STEYX = STHYX |
||||
|
T.DIST = T.DAĞ |
||||
|
T.DIST.2T = T.DAĞ.2K |
||||
|
T.DIST.RT = T.DAĞ.SAĞK |
||||
|
T.INV = T.TERS |
||||
|
T.INV.2T = T.TERS.2K |
||||
|
T.TEST = T.TEST |
||||
|
TREND = EĞİLİM |
||||
|
TRIMMEAN = KIRPORTALAMA |
||||
|
VAR.P = VAR.P |
||||
|
VAR.S = VAR.S |
||||
|
VARA = VARA |
||||
|
VARPA = VARSA |
||||
|
WEIBULL.DIST = WEIBULL.DAĞ |
||||
|
Z.TEST = Z.TEST |
||||
|
|
||||
|
## |
||||
|
## Metin işlevleri (Text Functions) |
||||
|
## |
||||
|
BAHTTEXT = BAHTMETİN |
||||
|
CHAR = DAMGA |
||||
|
CLEAN = TEMİZ |
||||
|
CODE = KOD |
||||
|
CONCAT = ARALIKBİRLEŞTİR |
||||
|
DOLLAR = LİRA |
||||
|
EXACT = ÖZDEŞ |
||||
|
FIND = BUL |
||||
|
FIXED = SAYIDÜZENLE |
||||
|
ISTHAIDIGIT = TAYRAKAMIYSA |
||||
|
LEFT = SOLDAN |
||||
|
LEN = UZUNLUK |
||||
|
LOWER = KÜÇÜKHARF |
||||
|
MID = PARÇAAL |
||||
|
NUMBERSTRING = SAYIDİZİ |
||||
|
NUMBERVALUE = SAYIDEĞERİ |
||||
|
PHONETIC = SES |
||||
|
PROPER = YAZIM.DÜZENİ |
||||
|
REPLACE = DEĞİŞTİR |
||||
|
REPT = YİNELE |
||||
|
RIGHT = SAĞDAN |
||||
|
SEARCH = MBUL |
||||
|
SUBSTITUTE = YERİNEKOY |
||||
|
T = M |
||||
|
TEXT = METNEÇEVİR |
||||
|
TEXTJOIN = METİNBİRLEŞTİR |
||||
|
THAIDIGIT = TAYRAKAM |
||||
|
THAINUMSOUND = TAYSAYISES |
||||
|
THAINUMSTRING = TAYSAYIDİZE |
||||
|
THAISTRINGLENGTH = TAYDİZEUZUNLUĞU |
||||
|
TRIM = KIRP |
||||
|
UNICHAR = UNICODEKARAKTERİ |
||||
|
UNICODE = UNICODE |
||||
|
UPPER = BÜYÜKHARF |
||||
|
VALUE = SAYIYAÇEVİR |
||||
|
|
||||
|
## |
||||
|
## Metin işlevleri (Web Functions) |
||||
|
## |
||||
|
ENCODEURL = URLKODLA |
||||
|
FILTERXML = XMLFİLTRELE |
||||
|
WEBSERVICE = WEBHİZMETİ |
||||
|
|
||||
|
## |
||||
|
## Uyumluluk işlevleri (Compatibility Functions) |
||||
|
## |
||||
|
BETADIST = BETADAĞ |
||||
|
BETAINV = BETATERS |
||||
|
BINOMDIST = BİNOMDAĞ |
||||
|
CEILING = TAVANAYUVARLA |
||||
|
CHIDIST = KİKAREDAĞ |
||||
|
CHIINV = KİKARETERS |
||||
|
CHITEST = KİKARETEST |
||||
|
CONCATENATE = BİRLEŞTİR |
||||
|
CONFIDENCE = GÜVENİRLİK |
||||
|
COVAR = KOVARYANS |
||||
|
CRITBINOM = KRİTİKBİNOM |
||||
|
EXPONDIST = ÜSTELDAĞ |
||||
|
FDIST = FDAĞ |
||||
|
FINV = FTERS |
||||
|
FLOOR = TABANAYUVARLA |
||||
|
FORECAST = TAHMİN |
||||
|
FTEST = FTEST |
||||
|
GAMMADIST = GAMADAĞ |
||||
|
GAMMAINV = GAMATERS |
||||
|
HYPGEOMDIST = HİPERGEOMDAĞ |
||||
|
LOGINV = LOGTERS |
||||
|
LOGNORMDIST = LOGNORMDAĞ |
||||
|
MODE = ENÇOK_OLAN |
||||
|
NEGBINOMDIST = NEGBİNOMDAĞ |
||||
|
NORMDIST = NORMDAĞ |
||||
|
NORMINV = NORMTERS |
||||
|
NORMSDIST = NORMSDAĞ |
||||
|
NORMSINV = NORMSTERS |
||||
|
PERCENTILE = YÜZDEBİRLİK |
||||
|
PERCENTRANK = YÜZDERANK |
||||
|
POISSON = POISSON |
||||
|
QUARTILE = DÖRTTEBİRLİK |
||||
|
RANK = RANK |
||||
|
STDEV = STDSAPMA |
||||
|
STDEVP = STDSAPMAS |
||||
|
TDIST = TDAĞ |
||||
|
TINV = TTERS |
||||
|
TTEST = TTEST |
||||
|
VAR = VAR |
||||
|
VARP = VARS |
||||
|
WEIBULL = WEIBULL |
||||
|
ZTEST = ZTEST |
||||
@ -0,0 +1,113 @@ |
|||||
|
<?php |
||||
|
|
||||
|
namespace PhpOffice\PhpSpreadsheet\Cell; |
||||
|
|
||||
|
class Hyperlink |
||||
|
{ |
||||
|
/** |
||||
|
* URL to link the cell to. |
||||
|
* |
||||
|
* @var string |
||||
|
*/ |
||||
|
private $url; |
||||
|
|
||||
|
/** |
||||
|
* Tooltip to display on the hyperlink. |
||||
|
* |
||||
|
* @var string |
||||
|
*/ |
||||
|
private $tooltip; |
||||
|
|
||||
|
/** |
||||
|
* Create a new Hyperlink. |
||||
|
* |
||||
|
* @param string $url Url to link the cell to |
||||
|
* @param string $tooltip Tooltip to display on the hyperlink |
||||
|
*/ |
||||
|
public function __construct($url = '', $tooltip = '') |
||||
|
{ |
||||
|
// Initialise member variables |
||||
|
$this->url = $url; |
||||
|
$this->tooltip = $tooltip; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* Get URL. |
||||
|
* |
||||
|
* @return string |
||||
|
*/ |
||||
|
public function getUrl() |
||||
|
{ |
||||
|
return $this->url; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* Set URL. |
||||
|
* |
||||
|
* @param string $url |
||||
|
* |
||||
|
* @return $this |
||||
|
*/ |
||||
|
public function setUrl($url) |
||||
|
{ |
||||
|
$this->url = $url; |
||||
|
|
||||
|
return $this; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* Get tooltip. |
||||
|
* |
||||
|
* @return string |
||||
|
*/ |
||||
|
public function getTooltip() |
||||
|
{ |
||||
|
return $this->tooltip; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* Set tooltip. |
||||
|
* |
||||
|
* @param string $tooltip |
||||
|
* |
||||
|
* @return $this |
||||
|
*/ |
||||
|
public function setTooltip($tooltip) |
||||
|
{ |
||||
|
$this->tooltip = $tooltip; |
||||
|
|
||||
|
return $this; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* Is this hyperlink internal? (to another worksheet). |
||||
|
* |
||||
|
* @return bool |
||||
|
*/ |
||||
|
public function isInternal() |
||||
|
{ |
||||
|
return strpos($this->url, 'sheet://') !== false; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* @return string |
||||
|
*/ |
||||
|
public function getTypeHyperlink() |
||||
|
{ |
||||
|
return $this->isInternal() ? '' : 'External'; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* Get hash code. |
||||
|
* |
||||
|
* @return string Hash code |
||||
|
*/ |
||||
|
public function getHashCode() |
||||
|
{ |
||||
|
return md5( |
||||
|
$this->url . |
||||
|
$this->tooltip . |
||||
|
__CLASS__ |
||||
|
); |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,16 @@ |
|||||
|
<?php |
||||
|
|
||||
|
namespace PhpOffice\PhpSpreadsheet\Cell; |
||||
|
|
||||
|
interface IValueBinder |
||||
|
{ |
||||
|
/** |
||||
|
* Bind value to a cell. |
||||
|
* |
||||
|
* @param Cell $cell Cell to bind value to |
||||
|
* @param mixed $value Value to bind in cell |
||||
|
* |
||||
|
* @return bool |
||||
|
*/ |
||||
|
public function bindValue(Cell $cell, $value); |
||||
|
} |
||||
@ -0,0 +1,9 @@ |
|||||
|
<?php |
||||
|
|
||||
|
namespace PhpOffice\PhpSpreadsheet\Chart; |
||||
|
|
||||
|
use PhpOffice\PhpSpreadsheet\Exception as PhpSpreadsheetException; |
||||
|
|
||||
|
class Exception extends PhpSpreadsheetException |
||||
|
{ |
||||
|
} |
||||
@ -0,0 +1,454 @@ |
|||||
|
<?php |
||||
|
|
||||
|
namespace PhpOffice\PhpSpreadsheet\Chart; |
||||
|
|
||||
|
/** |
||||
|
* Created by PhpStorm. |
||||
|
* User: Wiktor Trzonkowski |
||||
|
* Date: 7/2/14 |
||||
|
* Time: 2:36 PM. |
||||
|
*/ |
||||
|
class GridLines extends Properties |
||||
|
{ |
||||
|
/** |
||||
|
* Properties of Class: |
||||
|
* Object State (State for Minor Tick Mark) @var bool |
||||
|
* Line Properties @var array of mixed |
||||
|
* Shadow Properties @var array of mixed |
||||
|
* Glow Properties @var array of mixed |
||||
|
* Soft Properties @var array of mixed. |
||||
|
*/ |
||||
|
private $objectState = false; |
||||
|
|
||||
|
private $lineProperties = [ |
||||
|
'color' => [ |
||||
|
'type' => self::EXCEL_COLOR_TYPE_STANDARD, |
||||
|
'value' => null, |
||||
|
'alpha' => 0, |
||||
|
], |
||||
|
'style' => [ |
||||
|
'width' => '9525', |
||||
|
'compound' => self::LINE_STYLE_COMPOUND_SIMPLE, |
||||
|
'dash' => self::LINE_STYLE_DASH_SOLID, |
||||
|
'cap' => self::LINE_STYLE_CAP_FLAT, |
||||
|
'join' => self::LINE_STYLE_JOIN_BEVEL, |
||||
|
'arrow' => [ |
||||
|
'head' => [ |
||||
|
'type' => self::LINE_STYLE_ARROW_TYPE_NOARROW, |
||||
|
'size' => self::LINE_STYLE_ARROW_SIZE_5, |
||||
|
], |
||||
|
'end' => [ |
||||
|
'type' => self::LINE_STYLE_ARROW_TYPE_NOARROW, |
||||
|
'size' => self::LINE_STYLE_ARROW_SIZE_8, |
||||
|
], |
||||
|
], |
||||
|
], |
||||
|
]; |
||||
|
|
||||
|
private $shadowProperties = [ |
||||
|
'presets' => self::SHADOW_PRESETS_NOSHADOW, |
||||
|
'effect' => null, |
||||
|
'color' => [ |
||||
|
'type' => self::EXCEL_COLOR_TYPE_STANDARD, |
||||
|
'value' => 'black', |
||||
|
'alpha' => 85, |
||||
|
], |
||||
|
'size' => [ |
||||
|
'sx' => null, |
||||
|
'sy' => null, |
||||
|
'kx' => null, |
||||
|
], |
||||
|
'blur' => null, |
||||
|
'direction' => null, |
||||
|
'distance' => null, |
||||
|
'algn' => null, |
||||
|
'rotWithShape' => null, |
||||
|
]; |
||||
|
|
||||
|
private $glowProperties = [ |
||||
|
'size' => null, |
||||
|
'color' => [ |
||||
|
'type' => self::EXCEL_COLOR_TYPE_STANDARD, |
||||
|
'value' => 'black', |
||||
|
'alpha' => 40, |
||||
|
], |
||||
|
]; |
||||
|
|
||||
|
private $softEdges = [ |
||||
|
'size' => null, |
||||
|
]; |
||||
|
|
||||
|
/** |
||||
|
* Get Object State. |
||||
|
* |
||||
|
* @return bool |
||||
|
*/ |
||||
|
public function getObjectState() |
||||
|
{ |
||||
|
return $this->objectState; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* Change Object State to True. |
||||
|
* |
||||
|
* @return $this |
||||
|
*/ |
||||
|
private function activateObject() |
||||
|
{ |
||||
|
$this->objectState = true; |
||||
|
|
||||
|
return $this; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* Set Line Color Properties. |
||||
|
* |
||||
|
* @param string $value |
||||
|
* @param int $alpha |
||||
|
* @param string $colorType |
||||
|
*/ |
||||
|
public function setLineColorProperties($value, $alpha = 0, $colorType = self::EXCEL_COLOR_TYPE_STANDARD): void |
||||
|
{ |
||||
|
$this->activateObject() |
||||
|
->lineProperties['color'] = $this->setColorProperties( |
||||
|
$value, |
||||
|
$alpha, |
||||
|
$colorType |
||||
|
); |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* Set Line Color Properties. |
||||
|
* |
||||
|
* @param float $lineWidth |
||||
|
* @param string $compoundType |
||||
|
* @param string $dashType |
||||
|
* @param string $capType |
||||
|
* @param string $joinType |
||||
|
* @param string $headArrowType |
||||
|
* @param string $headArrowSize |
||||
|
* @param string $endArrowType |
||||
|
* @param string $endArrowSize |
||||
|
*/ |
||||
|
public function setLineStyleProperties($lineWidth = null, $compoundType = null, $dashType = null, $capType = null, $joinType = null, $headArrowType = null, $headArrowSize = null, $endArrowType = null, $endArrowSize = null): void |
||||
|
{ |
||||
|
$this->activateObject(); |
||||
|
($lineWidth !== null) |
||||
|
? $this->lineProperties['style']['width'] = $this->getExcelPointsWidth((float) $lineWidth) |
||||
|
: null; |
||||
|
($compoundType !== null) |
||||
|
? $this->lineProperties['style']['compound'] = (string) $compoundType |
||||
|
: null; |
||||
|
($dashType !== null) |
||||
|
? $this->lineProperties['style']['dash'] = (string) $dashType |
||||
|
: null; |
||||
|
($capType !== null) |
||||
|
? $this->lineProperties['style']['cap'] = (string) $capType |
||||
|
: null; |
||||
|
($joinType !== null) |
||||
|
? $this->lineProperties['style']['join'] = (string) $joinType |
||||
|
: null; |
||||
|
($headArrowType !== null) |
||||
|
? $this->lineProperties['style']['arrow']['head']['type'] = (string) $headArrowType |
||||
|
: null; |
||||
|
($headArrowSize !== null) |
||||
|
? $this->lineProperties['style']['arrow']['head']['size'] = (string) $headArrowSize |
||||
|
: null; |
||||
|
($endArrowType !== null) |
||||
|
? $this->lineProperties['style']['arrow']['end']['type'] = (string) $endArrowType |
||||
|
: null; |
||||
|
($endArrowSize !== null) |
||||
|
? $this->lineProperties['style']['arrow']['end']['size'] = (string) $endArrowSize |
||||
|
: null; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* Get Line Color Property. |
||||
|
* |
||||
|
* @param string $propertyName |
||||
|
* |
||||
|
* @return string |
||||
|
*/ |
||||
|
public function getLineColorProperty($propertyName) |
||||
|
{ |
||||
|
return $this->lineProperties['color'][$propertyName]; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* Get Line Style Property. |
||||
|
* |
||||
|
* @param array|string $elements |
||||
|
* |
||||
|
* @return string |
||||
|
*/ |
||||
|
public function getLineStyleProperty($elements) |
||||
|
{ |
||||
|
return $this->getArrayElementsValue($this->lineProperties['style'], $elements); |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* Set Glow Properties. |
||||
|
* |
||||
|
* @param float $size |
||||
|
* @param string $colorValue |
||||
|
* @param int $colorAlpha |
||||
|
* @param string $colorType |
||||
|
*/ |
||||
|
public function setGlowProperties($size, $colorValue = null, $colorAlpha = null, $colorType = null): void |
||||
|
{ |
||||
|
$this |
||||
|
->activateObject() |
||||
|
->setGlowSize($size) |
||||
|
->setGlowColor($colorValue, $colorAlpha, $colorType); |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* Get Glow Color Property. |
||||
|
* |
||||
|
* @param string $propertyName |
||||
|
* |
||||
|
* @return string |
||||
|
*/ |
||||
|
public function getGlowColor($propertyName) |
||||
|
{ |
||||
|
return $this->glowProperties['color'][$propertyName]; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* Get Glow Size. |
||||
|
* |
||||
|
* @return string |
||||
|
*/ |
||||
|
public function getGlowSize() |
||||
|
{ |
||||
|
return $this->glowProperties['size']; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* Set Glow Size. |
||||
|
* |
||||
|
* @param float $size |
||||
|
* |
||||
|
* @return $this |
||||
|
*/ |
||||
|
private function setGlowSize($size) |
||||
|
{ |
||||
|
$this->glowProperties['size'] = $this->getExcelPointsWidth((float) $size); |
||||
|
|
||||
|
return $this; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* Set Glow Color. |
||||
|
* |
||||
|
* @param string $color |
||||
|
* @param int $alpha |
||||
|
* @param string $colorType |
||||
|
* |
||||
|
* @return $this |
||||
|
*/ |
||||
|
private function setGlowColor($color, $alpha, $colorType) |
||||
|
{ |
||||
|
if ($color !== null) { |
||||
|
$this->glowProperties['color']['value'] = (string) $color; |
||||
|
} |
||||
|
if ($alpha !== null) { |
||||
|
$this->glowProperties['color']['alpha'] = $this->getTrueAlpha((int) $alpha); |
||||
|
} |
||||
|
if ($colorType !== null) { |
||||
|
$this->glowProperties['color']['type'] = (string) $colorType; |
||||
|
} |
||||
|
|
||||
|
return $this; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* Get Line Style Arrow Parameters. |
||||
|
* |
||||
|
* @param string $arrowSelector |
||||
|
* @param string $propertySelector |
||||
|
* |
||||
|
* @return string |
||||
|
*/ |
||||
|
public function getLineStyleArrowParameters($arrowSelector, $propertySelector) |
||||
|
{ |
||||
|
return $this->getLineStyleArrowSize($this->lineProperties['style']['arrow'][$arrowSelector]['size'], $propertySelector); |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* Set Shadow Properties. |
||||
|
* |
||||
|
* @param int $presets |
||||
|
* @param string $colorValue |
||||
|
* @param string $colorType |
||||
|
* @param string $colorAlpha |
||||
|
* @param string $blur |
||||
|
* @param int $angle |
||||
|
* @param float $distance |
||||
|
*/ |
||||
|
public function setShadowProperties($presets, $colorValue = null, $colorType = null, $colorAlpha = null, $blur = null, $angle = null, $distance = null): void |
||||
|
{ |
||||
|
$this->activateObject() |
||||
|
->setShadowPresetsProperties((int) $presets) |
||||
|
->setShadowColor( |
||||
|
$colorValue ?? $this->shadowProperties['color']['value'], |
||||
|
$colorAlpha === null ? (int) $this->shadowProperties['color']['alpha'] : $this->getTrueAlpha($colorAlpha), |
||||
|
$colorType ?? $this->shadowProperties['color']['type'] |
||||
|
) |
||||
|
->setShadowBlur((float) $blur) |
||||
|
->setShadowAngle($angle) |
||||
|
->setShadowDistance($distance); |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* Set Shadow Presets Properties. |
||||
|
* |
||||
|
* @param int $presets |
||||
|
* |
||||
|
* @return $this |
||||
|
*/ |
||||
|
private function setShadowPresetsProperties($presets) |
||||
|
{ |
||||
|
$this->shadowProperties['presets'] = $presets; |
||||
|
$this->setShadowPropertiesMapValues($this->getShadowPresetsMap($presets)); |
||||
|
|
||||
|
return $this; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* Set Shadow Properties Values. |
||||
|
* |
||||
|
* @param mixed $reference |
||||
|
* |
||||
|
* @return $this |
||||
|
*/ |
||||
|
private function setShadowPropertiesMapValues(array $propertiesMap, &$reference = null) |
||||
|
{ |
||||
|
$base_reference = $reference; |
||||
|
foreach ($propertiesMap as $property_key => $property_val) { |
||||
|
if (is_array($property_val)) { |
||||
|
if ($reference === null) { |
||||
|
$reference = &$this->shadowProperties[$property_key]; |
||||
|
} else { |
||||
|
$reference = &$reference[$property_key]; |
||||
|
} |
||||
|
$this->setShadowPropertiesMapValues($property_val, $reference); |
||||
|
} else { |
||||
|
if ($base_reference === null) { |
||||
|
$this->shadowProperties[$property_key] = $property_val; |
||||
|
} else { |
||||
|
$reference[$property_key] = $property_val; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
return $this; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* Set Shadow Color. |
||||
|
* |
||||
|
* @param string $color |
||||
|
* @param int $alpha |
||||
|
* @param string $colorType |
||||
|
* |
||||
|
* @return $this |
||||
|
*/ |
||||
|
private function setShadowColor($color, $alpha, $colorType) |
||||
|
{ |
||||
|
if ($color !== null) { |
||||
|
$this->shadowProperties['color']['value'] = (string) $color; |
||||
|
} |
||||
|
if ($alpha !== null) { |
||||
|
$this->shadowProperties['color']['alpha'] = $this->getTrueAlpha((int) $alpha); |
||||
|
} |
||||
|
if ($colorType !== null) { |
||||
|
$this->shadowProperties['color']['type'] = (string) $colorType; |
||||
|
} |
||||
|
|
||||
|
return $this; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* Set Shadow Blur. |
||||
|
* |
||||
|
* @param float $blur |
||||
|
* |
||||
|
* @return $this |
||||
|
*/ |
||||
|
private function setShadowBlur($blur) |
||||
|
{ |
||||
|
if ($blur !== null) { |
||||
|
$this->shadowProperties['blur'] = (string) $this->getExcelPointsWidth($blur); |
||||
|
} |
||||
|
|
||||
|
return $this; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* Set Shadow Angle. |
||||
|
* |
||||
|
* @param int $angle |
||||
|
* |
||||
|
* @return $this |
||||
|
*/ |
||||
|
private function setShadowAngle($angle) |
||||
|
{ |
||||
|
if ($angle !== null) { |
||||
|
$this->shadowProperties['direction'] = (string) $this->getExcelPointsAngle($angle); |
||||
|
} |
||||
|
|
||||
|
return $this; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* Set Shadow Distance. |
||||
|
* |
||||
|
* @param float $distance |
||||
|
* |
||||
|
* @return $this |
||||
|
*/ |
||||
|
private function setShadowDistance($distance) |
||||
|
{ |
||||
|
if ($distance !== null) { |
||||
|
$this->shadowProperties['distance'] = (string) $this->getExcelPointsWidth($distance); |
||||
|
} |
||||
|
|
||||
|
return $this; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* Get Shadow Property. |
||||
|
* |
||||
|
* @param string|string[] $elements |
||||
|
* |
||||
|
* @return string |
||||
|
*/ |
||||
|
public function getShadowProperty($elements) |
||||
|
{ |
||||
|
return $this->getArrayElementsValue($this->shadowProperties, $elements); |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* Set Soft Edges Size. |
||||
|
* |
||||
|
* @param float $size |
||||
|
*/ |
||||
|
public function setSoftEdgesSize($size): void |
||||
|
{ |
||||
|
if ($size !== null) { |
||||
|
$this->activateObject(); |
||||
|
$this->softEdges['size'] = (string) $this->getExcelPointsWidth($size); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* Get Soft Edges Size. |
||||
|
* |
||||
|
* @return string |
||||
|
*/ |
||||
|
public function getSoftEdgesSize() |
||||
|
{ |
||||
|
return $this->softEdges['size']; |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,481 @@ |
|||||
|
<?php |
||||
|
|
||||
|
namespace PhpOffice\PhpSpreadsheet\Chart; |
||||
|
|
||||
|
class Layout |
||||
|
{ |
||||
|
/** |
||||
|
* layoutTarget. |
||||
|
* |
||||
|
* @var string |
||||
|
*/ |
||||
|
private $layoutTarget; |
||||
|
|
||||
|
/** |
||||
|
* X Mode. |
||||
|
* |
||||
|
* @var string |
||||
|
*/ |
||||
|
private $xMode; |
||||
|
|
||||
|
/** |
||||
|
* Y Mode. |
||||
|
* |
||||
|
* @var string |
||||
|
*/ |
||||
|
private $yMode; |
||||
|
|
||||
|
/** |
||||
|
* X-Position. |
||||
|
* |
||||
|
* @var float |
||||
|
*/ |
||||
|
private $xPos; |
||||
|
|
||||
|
/** |
||||
|
* Y-Position. |
||||
|
* |
||||
|
* @var float |
||||
|
*/ |
||||
|
private $yPos; |
||||
|
|
||||
|
/** |
||||
|
* width. |
||||
|
* |
||||
|
* @var float |
||||
|
*/ |
||||
|
private $width; |
||||
|
|
||||
|
/** |
||||
|
* height. |
||||
|
* |
||||
|
* @var float |
||||
|
*/ |
||||
|
private $height; |
||||
|
|
||||
|
/** |
||||
|
* show legend key |
||||
|
* Specifies that legend keys should be shown in data labels. |
||||
|
* |
||||
|
* @var bool |
||||
|
*/ |
||||
|
private $showLegendKey; |
||||
|
|
||||
|
/** |
||||
|
* show value |
||||
|
* Specifies that the value should be shown in a data label. |
||||
|
* |
||||
|
* @var bool |
||||
|
*/ |
||||
|
private $showVal; |
||||
|
|
||||
|
/** |
||||
|
* show category name |
||||
|
* Specifies that the category name should be shown in the data label. |
||||
|
* |
||||
|
* @var bool |
||||
|
*/ |
||||
|
private $showCatName; |
||||
|
|
||||
|
/** |
||||
|
* show data series name |
||||
|
* Specifies that the series name should be shown in the data label. |
||||
|
* |
||||
|
* @var bool |
||||
|
*/ |
||||
|
private $showSerName; |
||||
|
|
||||
|
/** |
||||
|
* show percentage |
||||
|
* Specifies that the percentage should be shown in the data label. |
||||
|
* |
||||
|
* @var bool |
||||
|
*/ |
||||
|
private $showPercent; |
||||
|
|
||||
|
/** |
||||
|
* show bubble size. |
||||
|
* |
||||
|
* @var bool |
||||
|
*/ |
||||
|
private $showBubbleSize; |
||||
|
|
||||
|
/** |
||||
|
* show leader lines |
||||
|
* Specifies that leader lines should be shown for the data label. |
||||
|
* |
||||
|
* @var bool |
||||
|
*/ |
||||
|
private $showLeaderLines; |
||||
|
|
||||
|
/** |
||||
|
* Create a new Layout. |
||||
|
*/ |
||||
|
public function __construct(array $layout = []) |
||||
|
{ |
||||
|
if (isset($layout['layoutTarget'])) { |
||||
|
$this->layoutTarget = $layout['layoutTarget']; |
||||
|
} |
||||
|
if (isset($layout['xMode'])) { |
||||
|
$this->xMode = $layout['xMode']; |
||||
|
} |
||||
|
if (isset($layout['yMode'])) { |
||||
|
$this->yMode = $layout['yMode']; |
||||
|
} |
||||
|
if (isset($layout['x'])) { |
||||
|
$this->xPos = (float) $layout['x']; |
||||
|
} |
||||
|
if (isset($layout['y'])) { |
||||
|
$this->yPos = (float) $layout['y']; |
||||
|
} |
||||
|
if (isset($layout['w'])) { |
||||
|
$this->width = (float) $layout['w']; |
||||
|
} |
||||
|
if (isset($layout['h'])) { |
||||
|
$this->height = (float) $layout['h']; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* Get Layout Target. |
||||
|
* |
||||
|
* @return string |
||||
|
*/ |
||||
|
public function getLayoutTarget() |
||||
|
{ |
||||
|
return $this->layoutTarget; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* Set Layout Target. |
||||
|
* |
||||
|
* @param string $target |
||||
|
* |
||||
|
* @return $this |
||||
|
*/ |
||||
|
public function setLayoutTarget($target) |
||||
|
{ |
||||
|
$this->layoutTarget = $target; |
||||
|
|
||||
|
return $this; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* Get X-Mode. |
||||
|
* |
||||
|
* @return string |
||||
|
*/ |
||||
|
public function getXMode() |
||||
|
{ |
||||
|
return $this->xMode; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* Set X-Mode. |
||||
|
* |
||||
|
* @param string $mode |
||||
|
* |
||||
|
* @return $this |
||||
|
*/ |
||||
|
public function setXMode($mode) |
||||
|
{ |
||||
|
$this->xMode = (string) $mode; |
||||
|
|
||||
|
return $this; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* Get Y-Mode. |
||||
|
* |
||||
|
* @return string |
||||
|
*/ |
||||
|
public function getYMode() |
||||
|
{ |
||||
|
return $this->yMode; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* Set Y-Mode. |
||||
|
* |
||||
|
* @param string $mode |
||||
|
* |
||||
|
* @return $this |
||||
|
*/ |
||||
|
public function setYMode($mode) |
||||
|
{ |
||||
|
$this->yMode = (string) $mode; |
||||
|
|
||||
|
return $this; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* Get X-Position. |
||||
|
* |
||||
|
* @return number |
||||
|
*/ |
||||
|
public function getXPosition() |
||||
|
{ |
||||
|
return $this->xPos; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* Set X-Position. |
||||
|
* |
||||
|
* @param float $position |
||||
|
* |
||||
|
* @return $this |
||||
|
*/ |
||||
|
public function setXPosition($position) |
||||
|
{ |
||||
|
$this->xPos = (float) $position; |
||||
|
|
||||
|
return $this; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* Get Y-Position. |
||||
|
* |
||||
|
* @return number |
||||
|
*/ |
||||
|
public function getYPosition() |
||||
|
{ |
||||
|
return $this->yPos; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* Set Y-Position. |
||||
|
* |
||||
|
* @param float $position |
||||
|
* |
||||
|
* @return $this |
||||
|
*/ |
||||
|
public function setYPosition($position) |
||||
|
{ |
||||
|
$this->yPos = (float) $position; |
||||
|
|
||||
|
return $this; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* Get Width. |
||||
|
* |
||||
|
* @return number |
||||
|
*/ |
||||
|
public function getWidth() |
||||
|
{ |
||||
|
return $this->width; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* Set Width. |
||||
|
* |
||||
|
* @param float $width |
||||
|
* |
||||
|
* @return $this |
||||
|
*/ |
||||
|
public function setWidth($width) |
||||
|
{ |
||||
|
$this->width = $width; |
||||
|
|
||||
|
return $this; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* Get Height. |
||||
|
* |
||||
|
* @return number |
||||
|
*/ |
||||
|
public function getHeight() |
||||
|
{ |
||||
|
return $this->height; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* Set Height. |
||||
|
* |
||||
|
* @param float $height |
||||
|
* |
||||
|
* @return $this |
||||
|
*/ |
||||
|
public function setHeight($height) |
||||
|
{ |
||||
|
$this->height = $height; |
||||
|
|
||||
|
return $this; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* Get show legend key. |
||||
|
* |
||||
|
* @return bool |
||||
|
*/ |
||||
|
public function getShowLegendKey() |
||||
|
{ |
||||
|
return $this->showLegendKey; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* Set show legend key |
||||
|
* Specifies that legend keys should be shown in data labels. |
||||
|
* |
||||
|
* @param bool $showLegendKey Show legend key |
||||
|
* |
||||
|
* @return $this |
||||
|
*/ |
||||
|
public function setShowLegendKey($showLegendKey) |
||||
|
{ |
||||
|
$this->showLegendKey = $showLegendKey; |
||||
|
|
||||
|
return $this; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* Get show value. |
||||
|
* |
||||
|
* @return bool |
||||
|
*/ |
||||
|
public function getShowVal() |
||||
|
{ |
||||
|
return $this->showVal; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* Set show val |
||||
|
* Specifies that the value should be shown in data labels. |
||||
|
* |
||||
|
* @param bool $showDataLabelValues Show val |
||||
|
* |
||||
|
* @return $this |
||||
|
*/ |
||||
|
public function setShowVal($showDataLabelValues) |
||||
|
{ |
||||
|
$this->showVal = $showDataLabelValues; |
||||
|
|
||||
|
return $this; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* Get show category name. |
||||
|
* |
||||
|
* @return bool |
||||
|
*/ |
||||
|
public function getShowCatName() |
||||
|
{ |
||||
|
return $this->showCatName; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* Set show cat name |
||||
|
* Specifies that the category name should be shown in data labels. |
||||
|
* |
||||
|
* @param bool $showCategoryName Show cat name |
||||
|
* |
||||
|
* @return $this |
||||
|
*/ |
||||
|
public function setShowCatName($showCategoryName) |
||||
|
{ |
||||
|
$this->showCatName = $showCategoryName; |
||||
|
|
||||
|
return $this; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* Get show data series name. |
||||
|
* |
||||
|
* @return bool |
||||
|
*/ |
||||
|
public function getShowSerName() |
||||
|
{ |
||||
|
return $this->showSerName; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* Set show ser name |
||||
|
* Specifies that the series name should be shown in data labels. |
||||
|
* |
||||
|
* @param bool $showSeriesName Show series name |
||||
|
* |
||||
|
* @return $this |
||||
|
*/ |
||||
|
public function setShowSerName($showSeriesName) |
||||
|
{ |
||||
|
$this->showSerName = $showSeriesName; |
||||
|
|
||||
|
return $this; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* Get show percentage. |
||||
|
* |
||||
|
* @return bool |
||||
|
*/ |
||||
|
public function getShowPercent() |
||||
|
{ |
||||
|
return $this->showPercent; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* Set show percentage |
||||
|
* Specifies that the percentage should be shown in data labels. |
||||
|
* |
||||
|
* @param bool $showPercentage Show percentage |
||||
|
* |
||||
|
* @return $this |
||||
|
*/ |
||||
|
public function setShowPercent($showPercentage) |
||||
|
{ |
||||
|
$this->showPercent = $showPercentage; |
||||
|
|
||||
|
return $this; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* Get show bubble size. |
||||
|
* |
||||
|
* @return bool |
||||
|
*/ |
||||
|
public function getShowBubbleSize() |
||||
|
{ |
||||
|
return $this->showBubbleSize; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* Set show bubble size |
||||
|
* Specifies that the bubble size should be shown in data labels. |
||||
|
* |
||||
|
* @param bool $showBubbleSize Show bubble size |
||||
|
* |
||||
|
* @return $this |
||||
|
*/ |
||||
|
public function setShowBubbleSize($showBubbleSize) |
||||
|
{ |
||||
|
$this->showBubbleSize = $showBubbleSize; |
||||
|
|
||||
|
return $this; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* Get show leader lines. |
||||
|
* |
||||
|
* @return bool |
||||
|
*/ |
||||
|
public function getShowLeaderLines() |
||||
|
{ |
||||
|
return $this->showLeaderLines; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* Set show leader lines |
||||
|
* Specifies that leader lines should be shown in data labels. |
||||
|
* |
||||
|
* @param bool $showLeaderLines Show leader lines |
||||
|
* |
||||
|
* @return $this |
||||
|
*/ |
||||
|
public function setShowLeaderLines($showLeaderLines) |
||||
|
{ |
||||
|
$this->showLeaderLines = $showLeaderLines; |
||||
|
|
||||
|
return $this; |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,149 @@ |
|||||
|
<?php |
||||
|
|
||||
|
namespace PhpOffice\PhpSpreadsheet\Chart; |
||||
|
|
||||
|
class Legend |
||||
|
{ |
||||
|
/** Legend positions */ |
||||
|
const XL_LEGEND_POSITION_BOTTOM = -4107; // Below the chart. |
||||
|
const XL_LEGEND_POSITION_CORNER = 2; // In the upper right-hand corner of the chart border. |
||||
|
const XL_LEGEND_POSITION_CUSTOM = -4161; // A custom position. |
||||
|
const XL_LEGEND_POSITION_LEFT = -4131; // Left of the chart. |
||||
|
const XL_LEGEND_POSITION_RIGHT = -4152; // Right of the chart. |
||||
|
const XL_LEGEND_POSITION_TOP = -4160; // Above the chart. |
||||
|
|
||||
|
const POSITION_RIGHT = 'r'; |
||||
|
const POSITION_LEFT = 'l'; |
||||
|
const POSITION_BOTTOM = 'b'; |
||||
|
const POSITION_TOP = 't'; |
||||
|
const POSITION_TOPRIGHT = 'tr'; |
||||
|
|
||||
|
private static $positionXLref = [ |
||||
|
self::XL_LEGEND_POSITION_BOTTOM => self::POSITION_BOTTOM, |
||||
|
self::XL_LEGEND_POSITION_CORNER => self::POSITION_TOPRIGHT, |
||||
|
self::XL_LEGEND_POSITION_CUSTOM => '??', |
||||
|
self::XL_LEGEND_POSITION_LEFT => self::POSITION_LEFT, |
||||
|
self::XL_LEGEND_POSITION_RIGHT => self::POSITION_RIGHT, |
||||
|
self::XL_LEGEND_POSITION_TOP => self::POSITION_TOP, |
||||
|
]; |
||||
|
|
||||
|
/** |
||||
|
* Legend position. |
||||
|
* |
||||
|
* @var string |
||||
|
*/ |
||||
|
private $position = self::POSITION_RIGHT; |
||||
|
|
||||
|
/** |
||||
|
* Allow overlay of other elements? |
||||
|
* |
||||
|
* @var bool |
||||
|
*/ |
||||
|
private $overlay = true; |
||||
|
|
||||
|
/** |
||||
|
* Legend Layout. |
||||
|
* |
||||
|
* @var Layout |
||||
|
*/ |
||||
|
private $layout; |
||||
|
|
||||
|
/** |
||||
|
* Create a new Legend. |
||||
|
* |
||||
|
* @param string $position |
||||
|
* @param bool $overlay |
||||
|
*/ |
||||
|
public function __construct($position = self::POSITION_RIGHT, ?Layout $layout = null, $overlay = false) |
||||
|
{ |
||||
|
$this->setPosition($position); |
||||
|
$this->layout = $layout; |
||||
|
$this->setOverlay($overlay); |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* Get legend position as an excel string value. |
||||
|
* |
||||
|
* @return string |
||||
|
*/ |
||||
|
public function getPosition() |
||||
|
{ |
||||
|
return $this->position; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* Get legend position using an excel string value. |
||||
|
* |
||||
|
* @param string $position see self::POSITION_* |
||||
|
* |
||||
|
* @return bool |
||||
|
*/ |
||||
|
public function setPosition($position) |
||||
|
{ |
||||
|
if (!in_array($position, self::$positionXLref)) { |
||||
|
return false; |
||||
|
} |
||||
|
|
||||
|
$this->position = $position; |
||||
|
|
||||
|
return true; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* Get legend position as an Excel internal numeric value. |
||||
|
* |
||||
|
* @return int |
||||
|
*/ |
||||
|
public function getPositionXL() |
||||
|
{ |
||||
|
return array_search($this->position, self::$positionXLref); |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* Set legend position using an Excel internal numeric value. |
||||
|
* |
||||
|
* @param int $positionXL see self::XL_LEGEND_POSITION_* |
||||
|
* |
||||
|
* @return bool |
||||
|
*/ |
||||
|
public function setPositionXL($positionXL) |
||||
|
{ |
||||
|
if (!isset(self::$positionXLref[$positionXL])) { |
||||
|
return false; |
||||
|
} |
||||
|
|
||||
|
$this->position = self::$positionXLref[$positionXL]; |
||||
|
|
||||
|
return true; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* Get allow overlay of other elements? |
||||
|
* |
||||
|
* @return bool |
||||
|
*/ |
||||
|
public function getOverlay() |
||||
|
{ |
||||
|
return $this->overlay; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* Set allow overlay of other elements? |
||||
|
* |
||||
|
* @param bool $overlay |
||||
|
*/ |
||||
|
public function setOverlay($overlay): void |
||||
|
{ |
||||
|
$this->overlay = $overlay; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* Get Layout. |
||||
|
* |
||||
|
* @return Layout |
||||
|
*/ |
||||
|
public function getLayout() |
||||
|
{ |
||||
|
return $this->layout; |
||||
|
} |
||||
|
} |
||||
Some files were not shown because too many files changed in this diff
Loading…
Reference in new issue