Dokumentace HotXLS

Metoda Calculate

Vypočítá výsledek zadaného výrazu
Vestavěný vyhodnocovač podporuje aritmetické operace, odkazy na buňky a rozsahy, pojmenované rozsahy a tyto skupiny funkcí: textové funkce (TRIM, PROPER, CLEAN, CHAR, CODE, T, EXACT, REPT, FIND, SEARCH, SUBSTITUTE, REPLACE); datumové funkce (EDATE, EOMONTH, DATEDIF, YEARFRAC, DAYS, WEEKNUM, ISOWEEKNUM); funkce pracovních dnů (WORKDAY, NETWORKDAYS); technické funkce pro převod základů (DEC2BIN, DEC2HEX, DEC2OCT, BIN2DEC, BIN2HEX, BIN2OCT, OCT2DEC, OCT2BIN, OCT2HEX, HEX2DEC, HEX2BIN, HEX2OCT, BASE, DECIMAL, ARABIC); bitové funkce (BITAND, BITOR, BITXOR, BITLSHIFT, BITRSHIFT); statistické funkce (VAR, VARP, STDEV, STDEVP, MODE, VARA, VARPA, STDEVA, STDEVPA); agregační funkce (PRODUCT, SUMSQ); matematické funkce (GCD, LCM, MROUND, QUOTIENT, MULTINOMIAL) Vlastní nebo nepodporované funkce listu lze stále zpracovat prostřednictvím OnUserFunction / OnUserFunctionEx

Syntaxe

function Calculate(Expression: WideString):Variant;
Expression WideString. Řetězec určující výraz, který se má vypočítat

Příklad

Tento příklad vypočítá jednoduchý výraz

Val := Workbook.Calculate('100/2*3');
Tento příklad vypočítá textový výraz

Val := Workbook.Calculate('SUBSTITUTE("a-b-c";"-";"+")');
Tento příklad určí nejmenší hodnotu v rozsahu A1:F10 na aktivním listu

Val := Workbook.Calculate('MIN(A1:F10)');
Tento příklad je stejný jako předchozí

Val := Workbook.ActiveSheet.Calculate('MIN(A1:F10)');

Ověření uložených výsledků

TXLSWorkbook a TXLSXWorkbook umí porovnat uložené výsledky vzorců s čerstvě vyhodnocenými výsledky, aniž by nahradily uloženou mezipaměť
function CalculateAndVerify: Integer; overload;
function CalculateAndVerify(out Mismatches: TArray<TXLSVerifyMismatch>): Integer; overload;
Návratová hodnota je počet neshod. Každý záznam obsahuje SheetIndex, SheetName, řádek a sloupec Row a Col číslované od 1, Expected, Actual a Formula. Volatilní vzorce, buňky datových tabulek, vzorce bez uloženého výsledku a vzorce, které nelze vyhodnotit, se přeskočí
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);

Viz také

Zpětné volání OnUserFunction
Metoda TXLSWorksheet.Calculate