Berechnet das Ergebnis des angegebenen Ausdrucks
Der integrierte Evaluator unterstützt Arithmetik, Zell- und Bereichsreferenzen, definierte Namensbereiche sowie folgende Funktionsgruppen:
Textfunktionen (
TRIM,
PROPER,
CLEAN,
CHAR,
CODE,
T,
EXACT,
REPT,
FIND,
SEARCH,
SUBSTITUTE,
REPLACE,
EDATE,
EOMONTH,
DATEDIF),
Datumsfunktionen (
YEARFRAC,
DAYS,
WEEKNUM,
ISOWEEKNUM,
WORKDAY,
NETWORKDAYS,
DEC2BIN,
DEC2HEX,
DEC2OCT,
BIN2DEC,
BIN2HEX,
BIN2OCT,
OCT2DEC),
Mathematikfunktionen (
OCT2BIN,
OCT2HEX,
HEX2DEC,
HEX2BIN,
HEX2OCT,
BASE,
DECIMAL,
ARABIC,
BITAND,
BITOR,
BITXOR,
BITLSHIFT,
BITRSHIFT,
VAR,
VARP,
STDEV,
STDEVP,
MODE,
VARA,
VARPA,
STDEVA)
STDEVPA);
aggregate functions (
PRODUCT,
SUMSQ);
math functions (
GCD,
LCM,
MROUND,
QUOTIENT,
MULTINOMIAL)
Benutzerdefinierte oder nicht unterstützte Arbeitsblattfunktionen lassen sich weiterhin auflösen über
OnUserFunction / OnUserFunctionExSyntax
functionCalculate(Expression: WideString):Variant;
| Expression | WideString. Ein String, der einen Ausdruck angibt, der berechnet werden soll |
Beispiel
Dieses Beispiel berechnet den einfachen Ausdruck
Val := Workbook.Calculate('100/2*3');
Dieses Beispiel berechnet einen Textausdruck
Val := Workbook.Calculate('SUBSTITUTE("a-b-c";"-";"+")');
Dieses Beispiel ermittelt den kleinsten Wert in einem Bereich A1:F10 auf dem aktiven Tabellenblatt
TXLSWorkbook und TXLSXWorkbook können gespeicherte Formelergebnisse mit frisch berechneten Ergebnissen vergleichen, ohne den gespeicherten Cache zu ersetzen
function CalculateAndVerify: Integer; overload;
function CalculateAndVerify(out Mismatches: TArray<TXLSVerifyMismatch>): Integer; overload;
Der Rückgabewert ist die Anzahl der Abweichungen. Jeder Datensatz enthält SheetIndex, SheetName, die einsbasierten Row und Col, Expected, Actualund Formula. Flüchtige Formeln, Zellen von Datentabellen, Formeln ohne gespeichertes Ergebnis und Formeln, die nicht ausgewertet werden können, werden übersprungen
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);