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}
| Vzorec | Vý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