Calcule le résultat de l'expression indiquée
L'évaluateur intégré prend en charge l'arithmétique, les références de cellules et de plages, les plages de noms définis, ainsi que ces groupes de fonctions :
fonctions de texte (
TRIM,
PROPER,
CLEAN,
CHAR,
CODE,
T,
EXACT,
REPT,
FIND,
SEARCH,
SUBSTITUTE,
REPLACE) ;
fonctions de date (
EDATE,
EOMONTH,
DATEDIF,
YEARFRAC,
DAYS,
WEEKNUM,
ISOWEEKNUM) ;
fonctions de jours ouvrés (
WORKDAY,
NETWORKDAYS) ;
fonctions d'ingénierie et de conversion de bases (
DEC2BIN,
DEC2HEX,
DEC2OCT,
BIN2DEC,
BIN2HEX,
BIN2OCT,
OCT2DEC,
OCT2BIN,
OCT2HEX,
HEX2DEC,
HEX2BIN,
HEX2OCT,
BASE,
DECIMAL,
ARABIC) ;
fonctions bit à bit (
BITAND,
BITOR,
BITXOR,
BITLSHIFT,
BITRSHIFT) ;
fonctions statistiques (
VAR,
VARP,
STDEV,
STDEVP,
MODE,
VARA,
VARPA,
STDEVA,
STDEVPA) ;
fonctions d'agrégat (
PRODUCT,
SUMSQ) ;
fonctions mathématiques (
GCD,
LCM,
MROUND,
QUOTIENT,
MULTINOMIAL)
Les fonctions de feuille de calcul personnalisées ou non prises en charge peuvent toujours être résolues via
OnUserFunction / OnUserFunctionEx
Syntaxe
function Calculate(Expression: WideString):Variant;
| Expression |
WideString. Chaîne qui spécifie l'expression à calculer |
Exemple
Cet exemple calcule l'expression simple
Val := Workbook.Calculate('100/2*3');
Cet exemple calcule une expression texte
Val := Workbook.Calculate('SUBSTITUTE("a-b-c";"-";"+")');
Cet exemple détermine la plus petite valeur dans la plage A1:F10 de la feuille de calcul active
TXLSWorkbook et TXLSXWorkbook peuvent comparer les résultats de formules stockés aux résultats fraîchement évalués, sans remplacer le cache stocké
function CalculateAndVerify: Integer; overload;
function CalculateAndVerify(out Mismatches: TArray<TXLSVerifyMismatch>): Integer; overload;
La valeur renvoyée est le nombre de divergences. Chaque enregistrement contient SheetIndex, SheetName, Row et Col en base un, Expected, Actual et Formula. Les formules volatiles, les cellules de tables de données, les formules sans résultat stocké et les formules non évaluables sont ignorées
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);