Documentazione HotXLS

Selezione di aree con INDEX e identità dei riferimenti

Documentazione HotXLS · Fedeltà di calcolo e conversione

La versione 2.384.101 estende INDEX(source,row_num,column_num,area_num) per accettare il quarto argomento sugli array calcolati e per comporre riferimenti reali multi-area supportati tramite nomi definiti e LET; i selettori di riga, colonna e area possono andare insieme in broadcasting

Un array calcolato o più aree di riferimento

Una costante o un array calcolato è un'unica area sorgente, quindi INDEX(SEQUENCE(2,2),2,2,1) restituisce 4; omettere del tutto il quarto argomento seleziona comunque l'area 1, mentre un quarto argomento esplicitamente vuoto è un selettore di area non valido

Un'unione di riferimenti può contenere più aree reali del foglio di lavoro sullo stesso foglio; area_num seleziona l'area in ordine di unione, e i numeri di riga e colonna si applicano dentro l'area selezionata

Per gli esempi seguenti, Source!A1:B2 contiene {1,2;3,4} e Source!D1:E2 contiene {10,20;30,40}; Other!A1:B2 contiene {100,200;300,400}

FormulaRisultato
INDEX((Source!A1:B2,Source!D1:E2),2,2,2)40, conservando un risultato scalare per riferimento
SUM(INDEX((Source!A1:B2,Source!D1:E2),0,0,2))100, sommando l'intera seconda area
INDEX(SEQUENCE(2,2),0,0,1){1,2;3,4}, un array di valori calcolato
INDEX(SEQUENCE(2,2),2,2,2)#REF!, perché un array calcolato non ha una seconda area

Nomi definiti, LET e CHOOSE

Un nome definito locale supportato la cui espressione è (Source!$A$1:$B$2,Source!$D$1:$E$2) conserva entrambe le aree; i nomi annidati conservano quella identità, e AREAS(NamedAreas) restituisce 2

INDEX(NamedAreas,2,2,2) restituisce 40, mentre ISREF(INDEX(NamedAreas,0,0,2)) restituisce TRUE; ROW, COLUMN, ROWS, COLUMNS e i consumatori aggregati continuano a usare le coordinate del riferimento selezionato

I nomi con riferimenti relativi si risolvono in ogni posizione di consumo, e un nome locale del foglio di lavoro ha precedenza su un nome con ambito workbook della stessa ortografia; preservare l'identità del riferimento non blocca un nome relativo alla sua prima posizione di valutazione

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)))

Queste espressioni restituiscono rispettivamente 40 e TRUE; un binding a SEQUENCE(2,2) resta un array di valori calcolato e non acquisisce identità di riferimento

Uno CHOOSE scalare che seleziona un riferimento reale conserva quel riferimento selezionato, compresa una scelta su un altro foglio: INDEX(CHOOSE(2,Source!A1:B2,Other!A1:B2),2,2) restituisce 400 e il corrispondente risultato scalare per riferimento passa ISREF

Un CHOOSE con selettore ad array combina i valori secondo l'orientamento del selettore invece di costruire un'unione di aree di riferimento; CHOOSE({1,2},Source!A1:B2,Source!D1:E2) restituisce {1,20;3,40}, e un ulteriore selettore di area INDEX pari a 2 restituisce comunque #REF!

Tre array di selettori

I selettori di riga, colonna e area accettano valori scalari o array; le dimensioni singleton vanno in broadcasting, gli orientamenti di riga e colonna opposti formano un prodotto incrociato, e gli orientamenti corrispondenti accoppiano le posizioni; le posizioni senza corrispondenza in forme disuguali contengono singoli errori #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})

La prima espressione restituisce {2,20;4,40} e la seconda restituisce {40;4}; i valori selezionati conservano le loro rappresentazioni stringa, Boolean, numerica e di errore tipizzato

Se uno dei selettori è un array, il risultato è un array di valori, non un riferimento; una riga o colonna zero, o un selettore di riga o colonna omesso, seleziona il primo membro di quell'asse in ogni posizione del risultato

Questo differisce dall'estrazione solo scalare: due zero scalari di riga e colonna restituiscono l'intera area selezionata, ma INDEX((Source!A1:B2,Source!D1:E2),0,0,{1,2}) restituisce {1,10}, non due array due-per-due annidati; la sua somma è 11

Coercizione delle aree ed errori

I selettori di area troncano i valori numerici frazionari verso zero e accettano testo numerico e valori Boolean; 1.9, "1" e TRUE selezionano l'area 1

L'area zero, FALSE, un quarto argomento esplicitamente vuoto, i valori negativi e le frazioni che troncano a zero restituiscono #VALUE!; anche il testo non numerico restituisce #VALUE!, mentre un'area positiva oltre il numero di aree disponibili restituisce #REF!

Gli errori tipizzati dei selettori si propagano con i loro codici di errore esistenti; per un selettore ad array, un'area non valida produce un errore solo nella corrispondente posizione del risultato, quindi INDEX(SEQUENCE(2,2),2,2,{1,2}) restituisce {4,#REF!}

Gli errori esistenti non vengono sostituiti dai controlli successivi sui confini: INDEX(#N/A,1,1,2) restituisce #N/A, e INDEX(SEQUENCE(2,2),#N/A,1,#DIV/0!) conserva il #N/A del selettore di riga

Un riferimento non valido qualificato da un foglio locale esistente resta #REF!, inclusi Source!#REF! e 'Plan! O''Brien'!#REF!; anche un nome definito contenente quell'errore di riferimento locale conserva #REF! quando viene passato a INDEX o ISFORMULA

Il token di errore locale può essere usato con gli operatori percentuale o intersezione implicita, e gli spazi dopo il separatore di foglio sono accettati; gli spazi tra il nome del foglio di lavoro e il suo separatore sono fuori dalla sintassi accettata

Le stringhe di formula tra virgolette come "Source!#REF!" restano testo; un token di riferimento qualificato da foglio dentro una costante di array è fuori dalla grammatica di sorgente supportata

I selettori di riga e colonna conservano le loro regole esistenti di estrazione con zero e di validazione dei valori negativi; l'area zero non significa mai estrazione dell'intera sorgente

Archiviazione, dipendenze e limiti

Il calcolo spill automatico XLSX può ingrandire o ridurre i risultati dei selettori ad array e rilascia i follower obsoleti di proprietà dell'ancoraggio; le espressioni supportate valutano anche dentro una destinazione CSE fissa esplicita e sopravvivono al salvataggio e alla riapertura XLSX

Un selettore denominato può richiedere archiviazione dinamica conservativa anche quando il suo risultato valutato è scalare; un marcatore dinamico a cella singola non cambia il valore né l'identità di un risultato per riferimento supportato

I riferimenti di sorgente selezionati e i nomi annidati partecipano al tracciamento delle dipendenze, quindi le modifiche successive della sorgente vengono osservate dopo il ricalcolo; l'attraversamento dei selettori e i payload di matrice generati consumano i budget esistenti di step di valutazione e memoria per array

Confini

Un'unione diretta le cui aree appartengono a fogli diversi restituisce #VALUE!, anche quando il numero di area richiesto ne selezionerebbe una sola; lo CHOOSE scalare che seleziona un riferimento resta l'alternativa supportata tra fogli

Un'unione di array calcolati, costanti o espressioni di valore non è un vero riferimento multi-area; le unioni di array calcolati legate con LET restituiscono #VALUE!, e la sintassi diretta di unione di array di array non è accettata come forma di sorgente

Questo contratto copre le forme locali testate di riferimenti e array calcolati; non implica supporto per ogni grafo di riferimenti esterni, per ogni funzione che produce riferimenti o per contenitori di array annidati arbitrari

Un qualificatore di foglio di lavoro sconosciuto non viene normalizzato come errore di riferimento locale noto; Excel può creare un grafo di collegamenti esterni per una formula come NoSuchSheet!#REF!, e replicare quel grafo è fuori da questo contratto di calcolo locale