Belirtilen ifadenin sonucunu hesaplar
Yerleşik değerlendirici; aritmetiği, hücre ve aralık başvurularını, tanımlı adlı aralıkları ve şu işlev gruplarını destekler:
metin işlevleri (
TRIM,
PROPER,
CLEAN,
CHAR,
CODE,
T,
EXACT,
REPT,
FIND,
SEARCH,
SUBSTITUTE,
REPLACE);
tarih işlevleri (
EDATE,
EOMONTH,
DATEDIF,
YEARFRAC,
DAYS,
WEEKNUM,
ISOWEEKNUM);
iş günü işlevleri (
WORKDAY,
NETWORKDAYS);
mühendislik/taban dönüştürme işlevleri (
DEC2BIN,
DEC2HEX,
DEC2OCT,
BIN2DEC,
BIN2HEX,
BIN2OCT,
OCT2DEC,
OCT2BIN,
OCT2HEX,
HEX2DEC,
HEX2BIN,
HEX2OCT,
BASE,
DECIMAL,
ARABIC);
bit düzeyi işlevler (
BITAND,
BITOR,
BITXOR,
BITLSHIFT,
BITRSHIFT);
istatistiksel işlevler (
VAR,
VARP,
STDEV,
STDEVP,
MODE,
VARA,
VARPA,
STDEVA,
STDEVPA);
toplama işlevleri (
PRODUCT,
SUMSQ);
matematik işlevleri (
GCD,
LCM,
MROUND,
QUOTIENT,
MULTINOMIAL)
Özel veya desteklenmeyen çalışma sayfası işlevleri yine de
OnUserFunction / OnUserFunctionEx
üzerinden çözümlenebilir
Sözdizimi
function Calculate(Expression: WideString):Variant;
| Expression |
WideString. Hesaplanacak ifadeyi belirten bir dize |
Örnek
Bu örnek basit bir ifadeyi hesaplar
Val := Workbook.Calculate('100/2*3');
Bu örnek bir metin ifadesini hesaplar
Val := Workbook.Calculate('SUBSTITUTE("a-b-c";"-";"+")');
Bu örnek, etkin çalışma sayfasındaki A1:F10 aralığındaki en küçük değeri bulur
TXLSWorkbook ve TXLSXWorkbook, saklanan formül sonuçlarını yerini değiştirmeden, taze hesaplanan sonuçlarla karşılaştırabilir
function CalculateAndVerify: Integer; overload;
function CalculateAndVerify(out Mismatches: TArray<TXLSVerifyMismatch>): Integer; overload;
Dönüş değeri uyuşmazlık sayısıdır. Her kayıt SheetIndex, SheetName, 1 tabanlı Row ve Col, Expected, Actual ve Formula alanlarını içerir. Volatil formüller, veri tablosu hücreleri, saklanmış sonucu olmayan formüller ve değerlendirilemeyen formüller atlanır
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);