Beräknar resultatet av ett angivet uttryck
Den inbyggda utvärderaren stödjer aritmetik, cell- och områdesreferenser, områden via definierade namn samt dessa funktionsgrupper:
textfunktioner (
TRIM,
PROPER,
CLEAN,
CHAR,
CODE,
T,
EXACT,
REPT,
FIND,
SEARCH,
SUBSTITUTE,
REPLACE);
datumfunktioner (
EDATE,
EOMONTH,
DATEDIF,
YEARFRAC,
DAYS,
WEEKNUM,
ISOWEEKNUM);
arbetsdagsfunktioner (
WORKDAY,
NETWORKDAYS);
teknik- och talkonverteringsfunktioner (
DEC2BIN,
DEC2HEX,
DEC2OCT,
BIN2DEC,
BIN2HEX,
BIN2OCT,
OCT2DEC,
OCT2BIN,
OCT2HEX,
HEX2DEC,
HEX2BIN,
HEX2OCT,
BASE,
DECIMAL,
ARABIC);
bitvisa funktioner (
BITAND,
BITOR,
BITXOR,
BITLSHIFT,
BITRSHIFT);
statistiska funktioner (
VAR,
VARP,
STDEV,
STDEVP,
MODE,
VARA,
VARPA,
STDEVA,
STDEVPA);
aggregerande funktioner (
PRODUCT,
SUMSQ);
matematiska funktioner (
GCD,
LCM,
MROUND,
QUOTIENT,
MULTINOMIAL)
Egna kalkylbladsfunktioner, eller sådana som inte stöds, kan ändå lösas upp via
OnUserFunction / OnUserFunctionEx
Syntax
function Calculate(Expression: WideString):Variant;
| Expression |
WideString. En sträng som anger ett uttryck som ska beräknas |
Exempel
Detta exempel beräknar det enkla uttrycket
Val := Workbook.Calculate('100/2*3');
Detta exempel beräknar ett textuttryck
Val := Workbook.Calculate('SUBSTITUTE("a-b-c";"-";"+")');
Detta exempel tar fram det minsta värdet i området A1:F10 på det aktiva kalkylbladet
TXLSWorkbook och TXLSXWorkbook kan jämföra lagrade formelresultat med färskt utvärderade resultat utan att ersätta det lagrade cachet
function CalculateAndVerify: Integer; overload;
function CalculateAndVerify(out Mismatches: TArray<TXLSVerifyMismatch>): Integer; overload;
Returvärdet är antalet avvikelser. Varje post innehåller SheetIndex, SheetName, ettbaserade Row och Col, Expected, Actual och Formula. Volatila formler, datatabellceller, formler utan lagrat resultat och formler som inte går att utvärdera hoppas över
MismatchCount := Workbook.CalculateAndVerify(Mismatches);
for I := 0 to MismatchCount - 1 do
Log(Mismatches[I].SheetName, Mismatches[I].Row,
Mismatches[I].Col, Mismatches[I].Expected, Mismatches[I].Actual);