Beregner resultatet af et angivet udtryk
Den indbyggede evaluator understøtter aritmetik, celle- og områdereferencer, områder med definerede navne og disse funktionsgrupper: tekstfunktioner (
TRIM,
PROPER,
CLEAN,
CHAR,
CODE,
T,
EXACT,
REPT,
FIND,
SEARCH,
SUBSTITUTE,
REPLACE); datofunktioner (
EDATE,
EOMONTH,
DATEDIF,
YEARFRAC,
DAYS,
WEEKNUM,
ISOWEEKNUM); arbejdsdagsfunktioner (
WORKDAY,
NETWORKDAYS); ingeniør-/basekonverteringsfunktioner (
DEC2BIN,
DEC2HEX,
DEC2OCT,
BIN2DEC,
BIN2HEX,
BIN2OCT,
OCT2DEC,
OCT2BIN,
OCT2HEX,
HEX2DEC,
HEX2BIN,
HEX2OCT,
BASE,
DECIMAL,
ARABIC); bitwise-funktioner (
BITAND,
BITOR,
BITXOR,
BITLSHIFT,
BITRSHIFT); statistikfunktioner (
VAR,
VARP,
STDEV,
STDEVP,
MODE,
VARA,
VARPA,
STDEVA,
STDEVPA); aggregatfunktioner (
PRODUCT,
SUMSQ); matematiske funktioner (
GCD,
LCM,
MROUND,
QUOTIENT,
MULTINOMIAL). Brugerdefinerede eller ikke-understøttede regnearksfunktioner kan stadig opløses via
OnUserFunction / OnUserFunctionEx
Syntaks
function Calculate(Expression: WideString):Variant;
| Expression |
WideString. En streng, der angiver det udtryk, der skal beregnes |
Eksempel
Dette eksempel beregner det simple udtryk
Val := Workbook.Calculate('100/2*3');
Dette eksempel beregner et tekstudtryk
Val := Workbook.Calculate('SUBSTITUTE("a-b-c";"-";"+")');
Dette eksempel finder den mindste værdi i området A1:F10 på det aktive regneark
TXLSWorkbook og TXLSXWorkbook kan sammenligne gemte formelresultater med frisk beregnede resultater uden at erstatte den gemte cache
function CalculateAndVerify: Integer; overload;
function CalculateAndVerify(out Mismatches: TArray<TXLSVerifyMismatch>): Integer; overload;
Returværdien er antallet af uoverensstemmelser. Hver post indeholder SheetIndex, SheetName, 1-baseret Row og Col, Expected, Actual og Formula. Volatile formler, datatabelceller, formler uden gemt resultat og formler, der ikke kan evalueres, springes over
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);