HotXLS dokumentacija

Excel skaičiavimo variklis

Apžvalga

HotXLS apima integruotą variklį formulėms analizuoti ir skaičiuoti; šis variklis programiškai įvertina langelių formules jūsų procese, taip pašalindamas poreikį kviesti Excel ar išorinius OLE valdiklius darbo knygos apskaičiuotoms reikšmėms gauti

Skaičiavimo vykdymas

Prieš išsaugant ar eksportuojant, suaktyvinkite visą darbo knygos perskaičiavimą naudodami pagrindinę darbo knygos sąsają

procedure Calculate;

Variklis palaiko standartines matematinių, datų, loginių, eilučių ir statistinių funkcijų šeimas; jis nuosekliai sprendžia langelių priklausomybes ir seka nuorodų grandines, kad išvengtų ciklinių nuorodų

Kontekstinis formulių vertinimas

TXLSWorksheet ir TXLSXWorksheet atskleidžia EvaluateFormulaAt, skirtą apskaičiuoti formulės tekstą pasirinktoje eilutėje ir stulpelyje, numeruojamuose nuo 1, nerašant laikinojo langelio ir nekeičiant darbo knygos skaičiavimo būsenos

A1 ir R1C1 adresavimo stiliai, vietiniai vardai, struktūrinės nuorodos, formulių priklausomybės, masyvinių formulių šaknys, tipizuotos Excel klaidų reikšmės, nepastoviųjų funkcijų būsena, aiškus išorinių nuorodų įgalinimas, atšaukimas ir stabilios gedimų kategorijos naudoja įprastąjį darbo knygos vertintuvą

CreateFormulaEvaluationTemplate vieną kartą sukompiliuoja nekeičiamą inkarą ir naudoja jį pakartotinai su keliais tiksliniais langeliais; nuo tikslinės eilutės priklausomos A1 struktūrinės nuorodos išspręndžiamos kiekvienam tiksliniam kontekstui atskirai, o vienam iškvietimui skirti apribojimai riboja formulės ilgį, sintaksės elementų žingsnius, rekursijos gylį ir sugeneruoto masyvo baitų kiekį

Dėl rezultatų tipų, numatytųjų limitų, naudojimo trukmės taisyklių ir Delphi arba C++Builder pavyzdžių žr. kontekstinį formulių vertinimą

Masyvų operatoriai

Aritmetikos, palyginimo, sujungimo, unarinio neigimo ir procento operatoriai priima ne tik skaliarines reikšmes, bet ir apskaičiuotus masyvus

Skaliarinė reikšmė platinama visiems elementams, o vienos eilutės ar vieno stulpelio masyvas – per suderinamąjį matmenį; nesuderintos formos grąžina #VALUE!

Klaidos lieka atskiruose rezultatų langeliuose, todėl viena dalyba iš nulio arba vienas netinkamas elementas neišmeta kitų langelių apskaičiuotų reikšmių

COMBINA ir PERMUTATIONA skaliarams ir išplečiamiems masyvams taiko vienodą semantiką – argumentai apkarpojami iki neneigiamų sveikųjų skaičių, o perpildymas tikrinamas; MUNIT grąžina kompaktišką dvimatę Double tipo vienetinę matricą

FormulaArrayMemoryLimit pagal numatytuosius nustatymus lygus 64 MiB ir riboja sugeneruotų matricų duomenų apimtį; MUNIT taip pat patikrina likusią darbalapio spill sritį, o ne taiko fiksuotas matmenų lubas

Formulių buvimo tikrinimas

ISFORMULA(reference) nustato, ar nurodytasis langelis turi formulę, jo nesuskaičiavęs, todėl formulė lieka aptinkama net tada, kai jos podėlio rezultatas yra klaida arba tuščia eilutė

Stačiakampis diapazonas grąžina tokios pat formos Boolean masyvą; bendrosios formulės ir klasikinių ar XLSX masyvinių formulių nariai grąžina true, o dinaminio spill atveju formulės langeliu laikomas tik jos inkaras

Tiesioginės reikšmės ir skaliariniai apibrėžtieji vardai grąžina #VALUE!, netinkamos nuorodos išlaiko #REF!, o sugeneruoti Boolean masyvai ribojami FormulaArrayMemoryLimit

XLSX rašo _xlfn.ISFORMULA ir atvėręs failą atkuria paprastąjį pavadinimą, ODS naudoja standartinę of:=ISFORMULA sintaksę, o Classic XLS išvestis atmeta nepalaikomą būsimąją funkciją dar prieš įrašydama duomenis

Šiuolaikinės teksto funkcijos

UNICHAR skaitines įvestis apkarpo link nulio ir tinkamas Unicode skaliarines reikšmes konvertuoja į UTF-16, įskaitant pakaitinių porų (surrogate pairs) išvestį papildomiesiems plokštumams ir visiems privataus naudojimo diapazonams

Nulis ir už diapazono ribų esančios įvestys grąžina #VALUE!, o pavienės pakaitinės kodo reikšmės (surrogate code points) ir Unicode noncharacters grąžina #N/A; diapazonų ir sugeneruotų masyvų įvestys šias klaidas išlaiko atskirai kiekvienam elementui

BAHTTEXT baigtinius skaičius konvertuoja į tailandės batų ir satangų tekstą, vidurio reikšmes apvalina nuo nulio iki dviejų dešimtainių skaitmenų, išlaiko minuso ženklą, kai apvalintoji reikšmė tampa nuliu, ir išplečia mokslinį užrašą, nesusiaurindamas reikšmės per sveikąjį tipą

XLSX išsaugo UNICHAR kaip _xlfn.UNICHAR ir pakartotinai atvėręs atkuria paprastąjį pavadinimą; BAHTTEXT naudoja standartinę funkcijos tapatybę ir XLS bei XLSX formulėse lieka be priešdėlio

Regresija ir prognozavimas

LINEST ir LOGEST priima vieną ar kelis prognozuotojų stulpelius arba eilutes ir grąžina koeficientus Excel tvarka, o po jų – pasirinktinąjį laisvąjį narį

Kai statistics argumentas yra true, abi funkcijos grąžina pilną penkių eilučių rezultatą, kuriame yra koeficientų klaidos, atitikimo statistika, F statistika, laisvės laipsniai, regresijos kvadratų suma ir liekanų kvadratų suma

TREND ir GROWTH naudoja tą patį daugiakintamį modelį ir išlaiko pateiktų naujųjų prognozuotojų reikšmių eilutės arba stulpelio formą

Klasikinio XLS priklausomybių perskaičiavimas

TXLSWorkbook.Recalculate pirmojo kvietimo metu sukuria formulių priklausomybių grafą ir formules vertina precedentų pirmumo tvarka, o ne fizine langelių tvarka

Vėlesni kvietimai naudoja tą patį grafą ir perskaičiuoja tik pakeistų reikšmių netiesioginius priklausomuosius bei nepastoviąsias formules; formulės redagavimai, vardai, darbalapio struktūra ir perrašytos nuorodos saugiai suardo grafą ir jį perkuria

Ciklinės nuorodos naudoja klasikinės darbo knygos EnableIteration, MaxIterations ir MaxIterationChange parametrus, o UseFullPrecision=False podėlio rezultatams ir jų tolesniems skaičiavimams taiko rodomąjį skaičių tikslumą

Apibrėžtųjų vardų priklausomybės

Inkrementinis skaičiavimas seka darbo knygos ir darbalapio aprėptyje apibrėžtus vardus per įdėtines formules ir kelių sričių nuorodas

Aciklinių vardų formulės pateikia tikslias savo langelių priklausomybes, o rekursyvūs vardų ciklai saugiai grįžta prie nepastoviųjų formulių perskaičiavimo

„What-if“ duomenų lentelės

Tiek klasikinio XLS, tiek naujojo XLSX darbalapiai gali kurti, skaičiuoti, skaityti, rašyti, kopijuoti ir struktūriškai koreguoti vieno arba dviejų kintamųjų „What-if“ duomenų lenteles

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

Rezultatų diapazone yra tik apskaičiuotieji išvesties langeliai, o formulės ir bandomosios reikšmės naudoja gretimus langelius ta pačia tvarka, kaip Excel

  • Lentelė su įvestimi stulpelyje — palikite ARowInputCell tuščią, virš kiekvieno rezultatų stulpelio įrašykite šaltinio formulę, o bandomąsias reikšmes – kairiau rezultatų eilučių
  • Lentelė su įvestimi eilutėje — palikite AColumnInputCell tuščią, kairiau kiekvienos rezultatų eilutės įrašykite šaltinio formulę, o bandomąsias reikšmes – virš rezultatų stulpelių
  • Lentelė su dviem kintamaisiais — nurodykite abu įvesties langelius, šaltinio formulę įrašykite virš ir kairiau rezultatų diapazono, eilutės įvesties bandomąsias reikšmes – virš rezultatų, o stulpelio įvesties – kairiau jų
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;

Šis stulpelio įvesties pavyzdys apskaičiuoja 3, 5 ir 7 langeliuose D2:D4; kiekviena bandomoji reikšmė taikoma per atskirą skaičiavimo kontekstą, todėl teisingai perskaičiuojamos ir tos formulės, kurios iki B1 pasiekia netiesiogiai per kitus formulės langelius

AddDataTable grąžina nil, kai diapazonas arba įvesties nuoroda netinkami, arba kai abi įvesties nuorodos tuščios; darbalapio kolekcija DataTables atskleidžia gautąją apibrėžtį ir žymes, nurodančias pašalintąsias įvestis

Pašalinus nurodytąjį įvesties langelį, lentelės apibrėžtis išlieka, o jos išvestys grąžina #REF! – taip, kaip numato saugomoje darbo knygoje įrašyta semantika

Naudotojo apibrėžtos funkcijos

Papildykite formulių variklį pasirinktine verslo logika; savo funkcijas registruokite naudodami toliau esančius įvykius

Pavojingi išoriniai ir makro stiliaus vardai atmetami dar prieš vykstant argumentams ar dorokliams, nebent darbo knyga arba atskiras kontekstinis vertinimas aiškiai įgalina AllowUnsafeFormulaCallbacks