Dokumentace HotXLS

Výběr oblasti v INDEX a identita odkazů

Dokumentace HotXLS · Věrnost výpočtů a konverzí

Verze 2.384.101 rozšiřuje INDEX(source,row_num,column_num,area_num) tak, že čtvrtý argument přijme i pro vypočtená pole a umí kombinovat podporované skutečné víceoblastové odkazy skrze definované názvy a LET; selektory řádku, sloupce a oblasti se můžou šířit společně

Jedno vypočtené pole nebo více referenčních oblastí

Konstanta nebo vypočtené pole je jedna zdrojová oblast, takže INDEX(SEQUENCE(2,2),2,2,1) vrátí 4; úplně vynechaný čtvrtý argument také vybere oblast 1, zatímco výslovně prázdný čtvrtý argument je neplatný selektor oblasti

Spojení odkazů může obsahovat více skutečných oblastí listu na stejném listu; area_num vybere oblast v pořadí spojení a čísla řádku a sloupce se aplikují uvnitř vybrané oblasti

Pro příklady níže obsahuje Source!A1:B2 hodnoty {1,2;3,4}, Source!D1:E2 obsahuje {10,20;30,40} a Other!A1:B2 obsahuje {100,200;300,400}

VzorecVýsledek
INDEX((Source!A1:B2,Source!D1:E2),2,2,2)40, se zachováním skalárního referenčního výsledku
SUM(INDEX((Source!A1:B2,Source!D1:E2),0,0,2))100, sečte kompletní druhou oblast
INDEX(SEQUENCE(2,2),0,0,1){1,2;3,4}, hodnotové pole z výpočtu
INDEX(SEQUENCE(2,2),2,2,2)#REF!, protože vypočtené pole nemá druhou oblast

Definované názvy, LET a CHOOSE

Podporovaný lokální definovaný název, jehož výrazem je (Source!$A$1:$B$2,Source!$D$1:$E$2), si zachová obě oblasti; vnořené názvy si tuto identitu ponechají a AREAS(NamedAreas) vrátí 2

INDEX(NamedAreas,2,2,2) vrátí 40, zatímco ISREF(INDEX(NamedAreas,0,0,2)) vrátí TRUE; ROW, COLUMN, ROWS, COLUMNS i agregující spotřebitelé dál používají souřadnice vybraného odkazu

Relativní referenční názvy se resolvují na pozici každého spotřebitele a název lokální pro list má přednost před názvem v rozsahu sešitu se stejným pravopisem; zachování referenční identity nezamrazí relativní název na pozici jeho prvního vyhodnocení

LET(areas,(Source!A1:B2,Source!D1:E2),INDEX(areas,2,2,2))
LET(areas,(Source!A1:B2,Source!D1:E2),ISREF(INDEX(areas,0,0,2)))

Tyto výrazy vrátí 40 a TRUE; vazba na SEQUENCE(2,2) zůstává hodnotovým polem z výpočtu a referenční identitu nezíská

Skalární CHOOSE vybírající skutečný odkaz si tento vybraný odkaz zachová, včetně volby na jiném listu: INDEX(CHOOSE(2,Source!A1:B2,Other!A1:B2),2,2) vrátí 400 a odpovídající skalární referenční výsledek projde ISREF

CHOOSE s polem selektorů kombinuje hodnoty podle orientace selektoru, místo aby stavil spojení referenčních oblastí; CHOOSE({1,2},Source!A1:B2,Source!D1:E2) vrátí {1,20;3,40} a dodatečný selektor oblasti 2 v INDEX stále vrátí #REF!

Tři pole selektorů

Selektory řádku, sloupce a oblasti přijímají skalární hodnoty nebo pole; singleton dimenze se rozšíří, protilehlé orientace řádku a sloupce vytvoří kartézský součin a shodné orientace spárují pozice; nespárované pozice v různých tvarech obsahují jednotlivé chyby #N/A

INDEX((Source!A1:B2,Source!D1:E2),{1;2},2,{1,2})
INDEX((Source!A1:B2,Source!D1:E2),2,2,{2;1})

První výraz vrátí {2,20;4,40} a druhý vrátí {40;4}; vybrané hodnoty si zachovají svou reprezentaci řetězce, logické hodnoty, čísla i typované chyby

Je-li některý selektor pole, výsledkem je hodnotové pole, nikoli odkaz; nulový řádek nebo sloupec, resp. vynechaný selektor řádku či sloupce, vybere na každé pozici výsledku prvního člena dané osy

To se liší od extrakce jen se skaláry: dva skalární nulové selektory řádku a sloupce vrátí celou vybranou oblast, ale INDEX((Source!A1:B2,Source!D1:E2),0,0,{1,2}) vrátí {1,10}, nikoli dvě vnořená pole dvakrát dva; jeho součet je 11

Koerce oblasti a chyby

Selektory oblasti ořezávají zlomkové numerické hodnoty směrem k nule a přijímají numerický text a logické hodnoty; 1.9, "1" a TRUE vyberou oblast 1

Nulová oblast, FALSE, výslovně prázdný čtvrtý argument, záporné hodnoty i zlomky ořezané na nulu vrátí #VALUE!; ne numerický text také vrátí #VALUE!, zatímco kladná oblast za počtem dostupných oblastí vrátí #REF!

Typované chyby selektorů se propagují se svými stávajícími kódy; u pole selektorů vyprodukuje neplatná oblast chybu jen na své odpovídající pozici výsledku, takže INDEX(SEQUENCE(2,2),2,2,{1,2}) vrátí {4,#REF!}

Stávající chyby se nepřepíšou pozdějšími kontrolami mezí: INDEX(#N/A,1,1,2) vrátí #N/A a INDEX(SEQUENCE(2,2),#N/A,1,#DIV/0!) si ponechá #N/A selektoru řádku

Neplatný odkaz kvalifikovaný existujícím lokálním listem zůstává #REF!, včetně Source!#REF! a 'Plan! O''Brien'!#REF!; definovaný název obsahující tuto lokální referenční chybu si také zachová #REF!, když se předá INDEX nebo ISFORMULA

Token lokální chyby lze použít s operátory procenta a implicitního průniku a bílé znaky za oddělovačem listu se přijímají; bílé znaky mezi názvem listu a jeho oddělovačem jsou mimo přijímanou syntaxi

Vzorce v uvozovkách, jako je "Source!#REF!", zůstávají textem; token odkazu kvalifikovaný listem uvnitř konstanty pole leží mimo podporovaný zdrojový gramatický rámec

Selektory řádku a sloupce si ponechají svá stávající pravidla pro extrakci nulou a validaci záporných hodnot; nulová oblast nikdy neznamená extrakci celého zdroje

Ukládání, závislosti a limity

Automatický spill výpočet v XLSX umí výsledky pole selektorů zvětšit nebo zmenšit a uvolní zastaralé follower buňky vlastněné kotvou; podporované výrazy se vyhodnotí i uvnitř explicitního fixního CSE cíle a přežijí uložení do XLSX a opětovné otevření

Pojmenovaný selektor může vyžadovat konzervativní dynamické úložiště, i když jeho vyhodnocený výsledek je skalár; dynamický marker o jedné buňce nezmění hodnotu ani identitu podporovaného referenčního výsledku

Vybrané zdrojové odkazy a vnořené názvy se účastní sledování závislostí, takže následné úpravy zdroje se po přepočtu zaznamenají; průchod selektory a generované maticové payloady požírají stávající rozpočty kroků vyhodnocování a paměti polí

Hranice

Přímé spojení, jehož oblasti patří na různé listy, vrátí #VALUE!, i když by požadované číslo oblasti vybralo jen jednu z nich; skalární CHOOSE vybírající jeden odkaz zůstává podporovanou cross-sheet alternativou

Spojení vypočtených polí, konstant či hodnotových výrazů není skutečný víceoblastový odkaz; spojení vypočtených polí vázaná v LET vrátí #VALUE! a přímá syntaxe spojení pole polí se jako zdrojová forma nepřijímá

Tento kontrakt pokrývá otestované lokální referenční formy a vypočtená pole; neznamená podporu pro každý externí referenční graf, každou funkci produkující odkazy ani libovolné vnořené kontejnery polí

Neznámý kvalifikátor listu se nenormalizuje na známou lokální referenční chybu; Excel může pro vzorec jako NoSuchSheet!#REF! vytvořit externí odkazový graf a jeho napodobení leží mimo tento kontrakt lokálního výpočtu