Dokumentacija HotXLS

Pogon za izračune programa Excel

Pregled

HotXLS uključuje ugrađeni pogon za raščlanjivanje i izračun formula; taj pogon programski vrednuje formule ćelija unutar vašeg procesa, eliminirajući potrebu za pozivanjem programa Excel ili vanjskih OLE kontrolera radi razrješavanja izračunatih vrijednosti radne knjige

Izvršavanje izračuna

Prije spremanja ili izvoza pokrenite potpuno ponovno izračunavanje radne knjige pomoću glavnog sučelja radne knjige

procedure Calculate;

Pogon podržava standardne matematičke, datumne, logičke, znakovne i statističke obitelji funkcija; on uzastopno razrješuje ovisnosti ćelija i prati lance referenci kako bi spriječio kružne reference

Kontekstualno izračunavanje formula

TXLSWorksheet i TXLSXWorksheet izlažu EvaluateFormulaAt za izračun teksta formule u odabranom retku i stupcu s indeksiranjem od 1, bez zapisivanja privremene ćelije i bez mijenjanja stanja izračuna radne knjige

A1 i R1C1 referentni stilovi, lokalni nazivi, strukturirane reference, ovisnosti formula, korijeni polja, tipizirane Excel vrijednosti pogrešaka, volatile status, izričita autorizacija vanjskih referenci, otkazivanje i stabilne kategorije neuspjeha dijele uobičajeni evaluator radne knjige

CreateFormulaEvaluationTemplate jednom kompilira nepromjenjivu sidrenu točku i ponovno je koristi za više ciljanih ćelija; A1 strukturirane reference osjetljive na ciljni redak razrješuju se za svaki ciljni kontekst, a ograničenja po pozivu vežu duljinu formule, broj koraka sintaksnih elemenata, dubinu rekurzije i obujam generiranog polja u bajtovima

Za vrste rezultata, zadana ograničenja, pravila životnog vijeka i primjere za Delphi i C++Builder pogledajte Kontekstualno izračunavanje formula

Operatori nad poljima

Operatori za aritmetiku, usporedbu, konkatenaciju, unarnu negaciju i postotak prihvaćaju izračunata polja kao i skalarne vrijednosti

Skalarna vrijednost propagira se na svaki element, a polje s jednim retkom ili jednim stupcem propagira se po kompatibilnoj dimenziji; nekompatibilni oblici vraćaju #VALUE!

Pogreške zadržavaju se u svojim pojedinačnim rezultujućim ćelijama, pa jedno dijeljenje s nulom ili jedan nevažeći element ne odbacuje vrijednosti izračunate za preostale ćelije

COMBINA i PERMUTATIONA imaju istu semantiku za skalare i za polja koja se propagiraju, s odrezanim nenegativnim cjelobrojnim argumentima i kontroliranim preljevom, dok MUNIT vraća kompaktnu dvodimenzionalnu jediničnu matricu tipa Double

FormulaArrayMemoryLimit po defaultu iznosi 64 MiB i ograničava podatke generiranih matrica; MUNIT uz to validira preostali prostor na radnom listu za spill umjesto da nameće fiksnu gornju granicu dimenzija

Provjera prisutnosti formule

ISFORMULA(reference) provjerava posjeduje li ćelija formulu, a da je pri tome ne izračunava, pa formula ostaje vidljiva provjeri i kada je njezin cacheirani rezultat pogreška ili prazan znakovni niz

Pravokutni raspon vraća Booleovo polje istog oblika; članovi zajedničkih formula te klasičnih i XLSX formula polja vraćaju true, a samo je sidrena točka dinamičkog spilla ćelija s formulom

Izravne vrijednosti i skalarni definirani nazivi vraćaju #VALUE!, nevažeće reference čuvaju #REF!, a generirana Booleova polja ograničena su s FormulaArrayMemoryLimit

XLSX zapisuje _xlfn.ISFORMULA i pri otvaranju vraća ime bez prefiksa, ODS koristi standardnu sintaksu of:=ISFORMULA, a izlaz u klasični XLS odbacuje nepodržanu buduću funkciju prije upisa podataka

Moderne tekstualne funkcije

UNICHAR odrezuje numeričke ulaze prema nuli i pretvara valjane Unicode skalare u UTF-16, uključujući surrogate parove za dodatne Unicode ravnine i sve raspone za privatnu upotrebu

Nula i ulazi izvan raspona vraćaju #VALUE!, dok izolirane surrogate kodne točke i Unicode noncharacters vraćaju #N/A; ulazi u obliku raspona i generiranih polja čuvaju te pogreške po element

BAHTTEXT pretvara konačne brojeve u tekst u tajlandskim bahtima i satangima, zaokružuje midpoint vrijednosti od nule na dvije decimale, zadržava negativni predznak kada zaokružena veličina postane nula i razvija znanstvenu notaciju u puni zapis, bez sužavanja preko cjelobrojnog tipa

XLSX sprema UNICHAR kao _xlfn.UNICHAR i pri ponovnom otvaranju vraća ime bez prefiksa; BAHTTEXT zadržava svoj standardni identitet funkcije i u formulama XLS i XLSX ostaje bez prefiksa

Regresija i predviđanje

LINEST i LOGEST prihvaćaju jedan ili više prediktorskih stupaca ili redaka i vraćaju koeficijente u Excel redoslijedu, a iza njih neobavezni intercept

Kada je argument za statistiku true, obje funkcije vraćaju potpuni rezultat od pet redaka, s pogreškama koeficijenata, statistikama pristajanja, F statistikom, stupnjevima slobode, regresijskim zbrojem kvadrata i rezidualnim zbrojem kvadrata

TREND i GROWTH koriste isti viševarijablinski model i zadržavaju oblik retka ili stupca novih prediktorskih vrijednosti

Ponovno izračunavanje ovisnosti u klasičnom XLS-u

TXLSWorkbook.Recalculate pri prvom pozivu gradi graf ovisnosti formula i vrednuje formule tako da prvo dolaze prethodnici (precedents), a ne fizički redoslijed ćelija

Kasniji pozivi ponovno koriste graf i preračunavaju samo tranzitivne ovisnike promijenjenih vrijednosti uz volatile formule; izmjene formula, nazivi, struktura radnog lista i prepisivanje referenci sigurno poništavaju graf i ponovno ga izgrađuju

Kružne reference koriste klasične postavke radne knjige EnableIteration, MaxIterations i MaxIterationChange, dok UseFullPrecision=False primjenjuje prikazanu preciznost brojeva na cacheirane rezultate i njihove nizvodne izračune

Ovisnosti definiranih naziva

Inkrementalni izračun prati nazive u domeni radne knjige i nazive u domeni radnog lista kroz ugniježđene formule i reference na više područja

Aciklične formule naziva daju točne ovisnosti o ćelijama, dok rekurzivni ciklusi naziva imaju siguran Fallback na volatile ponovno izračunavanje

What-If tablice podataka

I klasični XLS i moderni XLSX radni listovi mogu stvarati, izračunavati, čitati, pisati, kopirati i strukturno prilagođavati What-If tablice podataka s jednom ili s dvije varijable

function AddDataTable(
  const AResultRange, ARowInputCell, AColumnInputCell: WideString
): TXLSDataTable;

Raspon rezultata sadrži samo izračunate izlazne ćelije, dok formule i probne vrijednosti koriste okolne ćelije, u istom rasporedu kao u Excelu

  • Tablica s ulazom po stupcu — ostavite ARowInputCell praznom, postavite izvornu formulu iznad svakog stupca rezultata, a probne vrijednosti stavite lijevo od redaka rezultata
  • Tablica s ulazom po retku — ostavite AColumnInputCell praznom, postavite izvornu formulu lijevo od svakog retka rezultata, a probne vrijednosti stavite iznad stupaca rezultata
  • Tablica s dvije varijable — navedite obje ulazne ćelije, postavite izvornu formulu iznad i lijevo od raspona rezultata, probne vrijednosti za ulaz po retku iznad rezultata, a probne vrijednosti za ulaz po stupcu lijevo
Sheet.Range['B1', 'B1'].Value := 0;
Sheet.Range['D1', 'D1'].Formula := '=B1*2+1';
Sheet.Range['C2', 'C2'].Value := 1;
Sheet.Range['C3', 'C3'].Value := 2;
Sheet.Range['C4', 'C4'].Value := 3;

Table := Sheet.AddDataTable('D2:D4', '', 'B1');
Workbook.Recalculate;

Ovaj primjer s ulazom po stupcu izračunava 3, 5 i 7 u D2:D4; svaka probna vrijednost primjenjuje se kroz izolirani kontekst izračuna, pa se formule koje do B1 dolaze posredno, preko drugih ćelija s formulama, ispravno preračunavaju

AddDataTable vraća nil za nevažeći raspon, nevažeću ulaznu referencu ili kada su obje ulazne reference prazne; kolekcija DataTables radnog lista izlaže dobivenu definiciju i njezine zastavice obrisanih ulaza

Brisanje referencirane ulazne ćelije čuva definiciju tablice i vraća #REF! za njezine izlaze, u skladu sa semantikom pohranjene radne knjige

Korisnički definirane funkcije

Proširite pogon formula prilagođenom poslovnom logikom; registrirajte svoje funkcije pomoću događaja u nastavku

Opasna vanjska i makro-stilska imena odbijaju se prije nego što se argumenti ili obrađivači uopće izvrše, osim ako radna knjiga ili pojedinačno kontekstualno izračunavanje izričito ne omogući AllowUnsafeFormulaCallbacks