Документация HotXLS

Метод Calculate

Вычисляет результат указанного выражения
Встроенный вычислитель поддерживает арифметику, ссылки на ячейки и диапазоны, диапазоны определённых имён и следующие группы функций: текстовые функции (TRIM, PROPER, CLEAN, CHAR, CODE, T, EXACT, REPT, FIND, SEARCH, SUBSTITUTE, REPLACE); date functions (EDATE, EOMONTH, DATEDIF, YEARFRAC, DAYS, WEEKNUM, ISOWEEKNUM); workday functions (WORKDAY, NETWORKDAYS); инженерные функции и функции преобразования систем счисления (DEC2BIN, DEC2HEX, DEC2OCT, BIN2DEC, BIN2HEX, BIN2OCT, OCT2DEC, OCT2BIN, OCT2HEX, HEX2DEC, HEX2BIN, HEX2OCT, BASE, DECIMAL, ARABIC); bitwise functions (BITAND, BITOR, BITXOR, BITLSHIFT, BITRSHIFT); statistical functions (VAR, VARP, STDEV, STDEVP, MODE, VARA, VARPA, STDEVA, STDEVPA); aggregate functions (PRODUCT, SUMSQ); math functions (GCD, LCM, MROUND, QUOTIENT, MULTINOMIALВстроенный вычислитель поддерживает арифметику, ссылки на ячейки и диапазоны, именованные диапазоны и группы функций: текстовые, даты, рабочих дней, преобразования систем счисления, побитовые, статистические, агрегирующие, математические. Пользовательские функции обрабатываются через OnUserFunction / OnUserFunctionEx

Синтаксис

functionCalculate(Expression: WideString):Variant;
ExpressionWideString. Строка, задающая выражение для вычисления

Пример

Вычисляет простое выражение

Val := Workbook.Calculate('100/2*3');
Вычисляет текстовое выражение

Val := Workbook.Calculate('SUBSTITUTE("a-b-c";"-";"+")');
Определяет наименьшее значение в диапазоне A1:F10 на активном листе

Val := Workbook.Calculate('MIN(A1:F10)');
Аналогичен предыдущему

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

См. также

TXLSWorkbook and TXLSXWorkbook может сравнивать сохранённые результаты формул со свежевычисленными, не заменяя сохранённый кэш
function CalculateAndVerify: Integer; overload;
function CalculateAndVerify(out Mismatches: TArray<TXLSVerifyMismatch>): Integer; overload;
Возвращаемое значение — количество несовпадений. Каждая запись содержит SheetIndex, SheetName, one-based Row and Col, Expected, Actual, and Formula. Волатильные формулы, ячейки таблиц данных, формулы без сохранённого результата и формулы, которые невозможно вычислить, пропускаются
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);

See also

Обратный вызов OnUserFunction
Метод TXLSWorksheet.Calculate