Documentação HotXLS

Seleção de áreas do INDEX e identidade de referência

Documentação do HotXLS · Fidelidade de cálculo e conversão

A versão 2.384.101 estende o INDEX(source,row_num,column_num,area_num) para aceitar o quarto argumento em matrizes calculadas e para compor referências reais de várias áreas suportadas através de nomes definidos e LET; os seletores de linha, coluna e área podem difundir-se em conjunto

Uma matriz calculada ou várias áreas de referência

Uma constante ou matriz calculada é uma única área de origem, pelo que INDEX(SEQUENCE(2,2),2,2,1) devolve 4; omitir completamente o quarto argumento também seleciona a área 1, enquanto um quarto argumento explicitamente vazio é um seletor de área inválido

Uma união de referências pode conter várias áreas reais de folha de cálculo na mesma folha; o area_num seleciona a área pela ordem da união, e os números de linha e coluna aplicam-se dentro dessa área selecionada

Nos exemplos abaixo, Source!A1:B2 contém {1,2;3,4} e Source!D1:E2 contém {10,20;30,40}; Other!A1:B2 contém {100,200;300,400}

FórmulaResultado
INDEX((Source!A1:B2,Source!D1:E2),2,2,2)40, mantendo um resultado de referência escalar
SUM(INDEX((Source!A1:B2,Source!D1:E2),0,0,2))100, somando a segunda área completa
INDEX(SEQUENCE(2,2),0,0,1){1,2;3,4}, uma matriz de valores calculados
INDEX(SEQUENCE(2,2),2,2,2)#REF!, porque uma matriz calculada não tem segunda área

Nomes definidos, LET e CHOOSE

Um nome definido local suportado cuja expressão é (Source!$A$1:$B$2,Source!$D$1:$E$2) mantém ambas as áreas; os nomes aninhados mantêm essa identidade, e AREAS(NamedAreas) devolve 2

O INDEX(NamedAreas,2,2,2) devolve 40, enquanto ISREF(INDEX(NamedAreas,0,0,2)) devolve TRUE; ROW, COLUMN, ROWS, COLUMNS e os consumidores agregadores continuam a usar as coordenadas de referência selecionadas

Os nomes de referências relativas resolvem-se em cada posição de consumo, e um nome local da folha de cálculo tem precedência sobre um nome de âmbito de livro com a mesma grafia; preservar a identidade de referência não congela um nome relativo na primeira posição de avaliação

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

Estas expressões devolvem 40 e TRUE respetivamente; um binding a SEQUENCE(2,2) mantém-se como matriz de valores calculados e não adquire identidade de referência

Um CHOOSE escalar que seleciona uma referência real mantém essa referência selecionada, incluindo uma escolha noutra folha: INDEX(CHOOSE(2,Source!A1:B2,Other!A1:B2),2,2) devolve 400 e o resultado de referência escalar correspondente passa no ISREF

Um CHOOSE com seletor de matriz combina valores pela orientação do seletor em vez de construir uma união de áreas de referência; CHOOSE({1,2},Source!A1:B2,Source!D1:E2) devolve {1,20;3,40}, e um seletor de área adicional de 2 no INDEX continua a devolver #REF!

Três matrizes de seletores

Os seletores de linha, coluna e área aceitam valores escalares ou matrizes; as dimensões singleton difundem-se, orientações opostas de linha e coluna formam um produto cruzado, e orientações iguais emparelham posições; as posições sem par em formas desiguais contêm erros #N/A individuais

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

A primeira expressão devolve {2,20;4,40} e a segunda devolve {40;4}; os valores selecionados mantêm as representações de cadeia, Boolean, numérica e de erro com tipo

Se algum seletor for uma matriz, o resultado é uma matriz de valores em vez de uma referência; uma linha ou coluna zero, ou um seletor de linha ou coluna omitido, seleciona o primeiro membro desse eixo em cada posição do resultado

Isto difere da extração apenas escalar: dois zeros escalares de linha e coluna devolvem a área selecionada inteira, mas INDEX((Source!A1:B2,Source!D1:E2),0,0,{1,2}) devolve {1,10}, e não duas matrizes de duas por duas aninhadas; a soma é 11

Coerção de áreas e erros

Os seletores de área truncam valores numéricos fracionários em direção a zero e aceitam texto numérico e valores Boolean; 1.9, "1" e TRUE selecionam a área 1

A área zero, FALSE, um quarto argumento explicitamente vazio, valores negativos e frações que truncam para zero devolvem #VALUE!; texto não numérico também devolve #VALUE!, enquanto uma área positiva além da contagem de áreas disponíveis devolve #REF!

Os erros de seletores com tipo propagam-se com os respetivos códigos de erro existentes; num seletor de matriz, uma área inválida produz um erro apenas na posição de resultado correspondente, pelo que INDEX(SEQUENCE(2,2),2,2,{1,2}) devolve {4,#REF!}

Os erros existentes não são substituídos por verificações de limites posteriores: INDEX(#N/A,1,1,2) devolve #N/A, e INDEX(SEQUENCE(2,2),#N/A,1,#DIV/0!) mantém o #N/A do seletor de linha

Uma referência inválida qualificada por uma folha de cálculo local existente mantém-se #REF!, incluindo Source!#REF! e 'Plan! O''Brien'!#REF!; um nome definido que contenha esse erro de referência local também mantém #REF! quando passado ao INDEX ou ao ISFORMULA

O token de erro local pode ser usado com operadores de percentagem ou de interseção implícita, e espaço em branco após o separador de folha é aceite; espaço em branco entre o nome da folha de cálculo e o respetivo separador fica fora da sintaxe aceite

Cadeias de fórmulas entre aspas como "Source!#REF!" mantêm-se texto; um token de referência qualificado por folha de cálculo dentro de uma constante de matriz fica fora da gramática de origens suportada

Os seletores de linha e coluna mantêm as respetivas regras existentes de extração zero e de validação de valores negativos; a área zero nunca significa extração da origem inteira

Armazenamento, dependências e limites

O cálculo automático de spill em XLSX pode crescer ou encolher resultados de seletores de matriz e liberta as seguidoras obsoletas detidas pela âncora; as expressões suportadas também avaliam dentro de um destino CSE explícito fixo e sobrevivem à gravação e reabertura em XLSX

Um seletor nomeado pode exigir armazenamento dinâmico conservador mesmo quando o resultado avaliado é escalar; um marcador dinâmico de uma célula não muda o valor nem a identidade de um resultado de referência suportado

As referências de origem selecionadas e os nomes aninhados participam no rastreio de dependências, pelo que edições posteriores da origem são observadas após o recálculo; o percurso de seletores e os payloads de matrizes gerados consomem os orçamentos existentes de passos de avaliação e de memória de matrizes

Limites

Uma união direta cujas áreas pertencem a folhas diferentes devolve #VALUE!, mesmo quando o número de área pedido selecionaria apenas uma delas; um CHOOSE escalar que seleciona uma referência mantém-se como a alternativa entre folhas suportada

Uma união de matrizes calculadas, constantes ou expressões de valores não é uma referência real de várias áreas; as uniões de matrizes calculadas vinculadas por LET devolvem #VALUE!, e a sintaxe direta de união de matriz de matrizes não é aceite como forma de origem

Este contrato cobre as formas testadas de referências locais e de matrizes calculadas; não implica suporte para todos os grafos de referências externas, todas as funções que produzem referências ou contentores arbitrários de matrizes aninhadas

Um qualificador de folha de cálculo desconhecido não é normalizado como erro de referência local conhecido; o Excel pode criar um grafo de ligações externas para uma fórmula como NoSuchSheet!#REF!, e reproduzir esse grafo fica fora deste contrato de cálculo local