計算指定運算式的結果
內建求值器支援算術運算、儲存格與範圍參照、已定義名稱範圍,以及下列幾組函式:
文字函式(
TRIM、
PROPER、
CLEAN、
CHAR、
CODE、
T、
EXACT、
REPT、
FIND、
SEARCH、
SUBSTITUTE、
REPLACE);
日期函式(
EDATE、
EOMONTH、
DATEDIF、
YEARFRAC、
DAYS、
WEEKNUM、
ISOWEEKNUM);
工作日函式(
WORKDAY、
NETWORKDAYS);
工程/進制轉換函式(
DEC2BIN、
DEC2HEX、
DEC2OCT、
BIN2DEC、
BIN2HEX、
BIN2OCT、
OCT2DEC、
OCT2BIN、
OCT2HEX、
HEX2DEC、
HEX2BIN、
HEX2OCT、
BASE、
DECIMAL、
ARABIC);
位元運算函式(
BITAND、
BITOR、
BITXOR、
BITLSHIFT、
BITRSHIFT);
統計函式(
VAR、
VARP、
STDEV、
STDEVP、
MODE、
VARA、
VARPA、
STDEVA、
STDEVPA);
彙總函式(
PRODUCT、
SUMSQ);
數學函式(
GCD、
LCM、
MROUND、
QUOTIENT、
MULTINOMIAL)。
自訂或不支援的工作表函式仍可透過
OnUserFunction / OnUserFunctionEx 解析
語法
function Calculate(Expression: WideString):Variant;
| Expression |
WideString。指定要計算運算式的字串 |
範例
Val := Workbook.Calculate('100/2*3');
此範例計算文字運算式
Val := Workbook.Calculate('SUBSTITUTE("a-b-c";"-";"+")');
此範例判斷作用中工作表 A1:F10 範圍內的最小值
TXLSWorkbook 與 TXLSXWorkbook 可以比較已儲存的公式結果與重新求值的結果,而且不會取代已儲存的快取
function CalculateAndVerify: Integer; overload;
function CalculateAndVerify(out Mismatches: TArray<TXLSVerifyMismatch>): Integer; overload;
傳回值是不相符的筆數。每一筆記錄包含 SheetIndex、SheetName、1 起始的 Row 與 Col、Expected、Actual 與 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);