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}
| Formula | Risultato |
|---|---|
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