NAME
Spreadsheet::Engine::Functions - Spreadsheet functions (SUM, MAX, etc)
SYNOPSIS
my $ok = calculate_function($fname, \@operand, \$errortext, \%typelookup, \%sheetdata);
DESCRIPTION
This provides all the spreadsheet functions (SUM, MAX, IRR, ISNULL, etc).
EXTENDING
register
Spreadsheet::Engine->register(SUM => 'Spreadsheet::Engine::Function::SUM');
If you wish to make a new function available you should register it here. A series of base classes are provided that do all the argument checking etc., allowing you to concentrate on the calculations. Have a look at how the existing functions are implemented for details (it should hopefully be mostly self-explanatory!)
information on how many arguments should be passed:
EXPORTS
calculate_function
my $ok = calculate_function($fname, \@operand, \$errortext, \%typelookup, \%sheetdata);
FUNCTION providers
series_functions
- AVERAGE(v1,c1:c2,...) - See <Spreadsheet::Engine::Function::AVERAGE>
- COUNT(v1,c1:c2,...) - See <Spreadsheet::Engine::Function::COUNT>
- COUNTA(v1,c1:c2,...) - See <Spreadsheet::Engine::Function::COUNTA>
- COUNTBLANK(v1,c1:c2,...) - See <Spreadsheet::Engine::Function::COUNTBLANK>
- MAX(v1,c1:c2,...) - See Spreadsheet::Engine::Function::MAX
- MIN(v1,c1:c2,...) - See Spreadsheet::Engine::Function::MIN
- PRODUCT(v1,c1:c2,...) - See Spreadsheet::Engine::Function::PRODUCT
- STDEV(v1,c1:c2,...) - See Spreadsheet::Engine::Function::STDEV
- STDEVP(v1,c1:c2,...) - See Spreadsheet::Engine::Function::STDEVP
- SUM(v1,c1:c2,...) - See Spreadsheet::Engine::Function::SUM
- VAR(v1,c1:c2,...) - See Spreadsheet::Engine::Function::VAR
- VARP(v1,c1:c2,...) - See Spreadsheet::Engine::Function::VARP
dseries_functions
- DAVERAGE(databaserange, fieldname, criteriarange)
- DCOUNT(databaserange, fieldname, criteriarange)
- DCOUNTA(databaserange, fieldname, criteriarange)
- DGET(databaserange, fieldname, criteriarange)
- DMAX(databaserange, fieldname, criteriarange)
- DMIN(databaserange, fieldname, criteriarange)
- DPRODUCT(databaserange, fieldname, criteriarange)
- DSTDEV(databaserange, fieldname, criteriarange)
- DSTDEVP(databaserange, fieldname, criteriarange)
- DSUM(databaserange, fieldname, criteriarange)
- DVAR(databaserange, fieldname, criteriarange)
- DVARP(databaserange, fieldname, criteriarange)
lookup_functions
- HLOOKUP(value, range, row, [rangelookup])
- VLOOKUP(value, range, col, [rangelookup])
- MATCH(value, range, [rangelookup])
index_function
countif_sumif_functions
if_function
date_function
time_function
dmy_function
hms_function
exact_function
string_functions
- FIND(key,string,[start])
- LEFT(string,[length])
- MID(string,start,length)
- PROPER(string)
- REPLACE(string,start,length,new)
- REPT(string,count)
- RIGHT(string,[length])
- SUBSTITUTE(string,old,new,[which])
- TRIM(string)
- UPPER(string) - see Spreadsheet::Engine::Function::UPPER
- LOWER(string) - see Spreadsheet::Engine::Function::LOWER
- LEN(string) - see Spreadsheet::Engine::Function::LEN
is_functions
- ISBLANK(value)
- ISERR(value)
- ISERROR(value)
- ISLOGICAL(value)
- ISNA(value)
- ISNONTEXT(value)
- ISNUMBER(value)
- ISTEXT(value)
ntv_functions
math1_function
- ABS(value)
- ACOS(value)
- ASIN(value)
- ATAN(value)
- COS(value)
- DEGREES(value)
- EVEN(value)
- EXP(value)
- FACT(value)
- INT(value)
- LN(value)
- LOG10(value)
- ODD(value)
- RADIANS(value)
- SIN(value)
- TAN(value)
math2_function
log_function
round_function
and_or_function
not_function
choose_function
columns_rows_function
zeroarg_functions
ddb_function
Depreciation, method defaults to 2 for double-declining balance.
See: http://en.wikipedia.org/wiki/Depreciation
sln_function
Depreciation for each period by straight-line method
See: http://en.wikipedia.org/wiki/Depreciation
syd_function
Depreciation by Sum of Year's Digits method
interest_functions
- FV(rate, n, payment, [pv, [paytype]])
- NPER(rate, payment, pv, [fv, [paytype]])
- PMT(rate, n, pv, [fv, [paytype]])
- PV(rate, n, payment, [fv, [paytype]])
- RATE(n, payment, pv, [fv, [paytype, [guess]]])
Following www.openformula.org and ODF formula specification:
PV = - Fv - (Payment * Nper) [if rate equals 0]
Pv*(1+Rate)^Nper + Payment * (1 + Rate*PaymentType) * ( (1+Rate)^nper -1)/Rate + Fv = 0
For each function, the formulas are solved for the appropriate value (transformed using basic algebra).
npv_function
irr_function
text_function
- PLAINTEXT
html_function
- HTML
HELPERS
field_to_colnum
$colnum = field_to_colnum(\@sheetdata, $col1num, $ncols, $row1num, $fieldname, $fieldtype)
If fieldname is a number, uses it, otherwise looks up string in cells in row to find field number
If not found, returns 0.
HISTORY
This is a Modified Version of SocialCalc::Functions from SocialCalc 1.1.0
COPYRIGHT
Portions (c) Copyright 2005, 2006, 2007 Software Garden, Inc. All Rights Reserved.
Portions (c) Copyright 2007 Socialtext, Inc. All Rights Reserved.
Portions (c) Copyright 2007 Tony Bowden
LICENSE
The contents of this file are subject to the Artistic License 2.0; you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.perlfoundation.org/artistic_license_2_0