Dokumentacja HotXLS

Metoda Calculate

Oblicza wynik określonego wyrażenia
Wbudowany ewaluator obsługuje działania arytmetyczne, odwołania do komórek i zakresów, zakresy nazw zdefiniowanych oraz następujące grupy funkcji: funkcje tekstowe (TRIM, PROPER, CLEAN, CHAR, CODE, T, EXACT, REPT, FIND, SEARCH, SUBSTITUTE, REPLACE); funkcje daty (EDATE, EOMONTH, DATEDIF, YEARFRAC, DAYS, WEEKNUM, ISOWEEKNUM); funkcje dni roboczych (WORKDAY, NETWORKDAYS); funkcje inżynieryjne/konwersji podstawy (DEC2BIN, DEC2HEX, DEC2OCT, BIN2DEC, BIN2HEX, BIN2OCT, OCT2DEC, OCT2BIN, OCT2HEX, HEX2DEC, HEX2BIN, HEX2OCT, BASE, DECIMAL, ARABIC); funkcje bitowe (BITAND, BITOR, BITXOR, BITLSHIFT, BITRSHIFT); funkcje statystyczne (VAR, VARP, STDEV, STDEVP, MODE, VARA, VARPA, STDEVA, STDEVPA); funkcje agregujące (PRODUCT, SUMSQ); funkcje matematyczne (GCD, LCM, MROUND, QUOTIENT, MULTINOMIAL) Niestandardowe lub nieobsługiwane funkcje arkusza można nadal rozwiązywać za pomocą OnUserFunction / OnUserFunctionEx

Składnia

function Calculate(Expression: WideString):Variant;
Expression WideString. Łańcuch określający wyrażenie do obliczenia

Opis

Ten przykład oblicza proste wyrażenie

Val := Workbook.Calculate('100/2*3');
Ten przykład oblicza wyrażenie tekstowe

Val := Workbook.Calculate('SUBSTITUTE("a-b-c";"-";"+")');
Ten przykład wyznacza najmniejszą wartość w zakresie A1:F10 na aktywnym arkuszu

Val := Workbook.Calculate('MIN(A1:F10)');
Ten przykład jest taki sam jak poprzedni

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

Weryfikacja zapisanych wyników

TXLSWorkbook i TXLSXWorkbook potrafią porównać zapisane wyniki formuł ze świeżo obliczonymi, nie nadpisując zapisanej pamięci podręcznej
function CalculateAndVerify: Integer; overload;
function CalculateAndVerify(out Mismatches: TArray<TXLSVerifyMismatch>): Integer; overload;
Wartością zwrotną jest liczba niezgodności. Każdy rekord zawiera SheetIndex, SheetName, numerowane od 1 Row i Col, Expected, Actual oraz Formula. Formuły ulotne, komórki tabel danych, formuły bez zapisanego wyniku i formuł, których nie da się obliczyć, pomija się
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);

Zobacz też

Wywołanie zwrotne OnUserFunction
Metoda TXLSWorksheet.Calculate