Selección de áreas de INDEX e identidad de referencia
Documentación de HotXLS · Fidelidad de cálculo y conversión
La versión 2.384.101 extiende INDEX(source,row_num,column_num,area_num) para aceptar el cuarto argumento con arreglos calculados y para componer referencias reales de varias áreas admitidas a través de nombres definidos y LET; los selectores de fila, columna y área pueden difundirse juntos
Un arreglo calculado o varias áreas de referencia
Una constante o un arreglo calculado es una sola área de fuente, de modo que INDEX(SEQUENCE(2,2),2,2,1) devuelve 4; omitir por completo el cuarto argumento también selecciona el área 1, mientras que un cuarto argumento explícitamente vacío es un selector de área inválido
Una unión de referencias puede contener varias áreas reales de hoja de cálculo en la misma hoja; area_num selecciona el área en el orden de la unión, y los números de fila y columna se aplican dentro de esa área seleccionada
Para los ejemplos siguientes, Source!A1:B2 contiene {1,2;3,4} y Source!D1:E2 contiene {10,20;30,40}; Other!A1:B2 contiene {100,200;300,400}
| Fórmula | Resultado |
|---|---|
INDEX((Source!A1:B2,Source!D1:E2),2,2,2) | 40, conservando un resultado de referencia escalar |
SUM(INDEX((Source!A1:B2,Source!D1:E2),0,0,2)) | 100, sumando el área segunda completa |
INDEX(SEQUENCE(2,2),0,0,1) | {1,2;3,4}, un arreglo de valores calculados |
INDEX(SEQUENCE(2,2),2,2,2) | #REF!, porque un arreglo calculado no tiene segunda área |
Nombres definidos, LET y CHOOSE
Un nombre definido local admitido cuya expresión es (Source!$A$1:$B$2,Source!$D$1:$E$2) conserva ambas áreas; los nombres anidados conservan esa identidad, y AREAS(NamedAreas) devuelve 2
INDEX(NamedAreas,2,2,2) devuelve 40, mientras que ISREF(INDEX(NamedAreas,0,0,2)) devuelve TRUE; ROW, COLUMN, ROWS, COLUMNS y los consumidores agregados siguen usando las coordenadas de la referencia seleccionada
Los nombres de referencia relativa se resuelven en cada posición de consumidor, y un nombre local de hoja de cálculo tiene precedencia sobre un nombre de ámbito de libro con la misma ortografía; preservar la identidad de referencia no congela un nombre relativo a su primera posición de evaluación
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 expresiones devuelven 40 y TRUE respectivamente; un enlace a SEQUENCE(2,2) sigue siendo un arreglo de valores calculados y no adquiere identidad de referencia
Un CHOOSE escalar que selecciona una referencia real conserva esa referencia seleccionada, incluida una elección en otra hoja: INDEX(CHOOSE(2,Source!A1:B2,Other!A1:B2),2,2) devuelve 400 y el resultado de referencia escalar correspondiente pasa ISREF
Un CHOOSE con selector de arreglo combina valores según la orientación del selector en lugar de construir una unión de áreas de referencia; CHOOSE({1,2},Source!A1:B2,Source!D1:E2) devuelve {1,20;3,40}, y un selector de área INDEX adicional de 2 sigue devolviendo #REF!
Tres arreglos de selectores
Los selectores de fila, columna y área aceptan valores escalares o arreglos; las dimensiones singleton se difunden, las orientaciones opuestas de fila y columna forman un producto cruzado, y las orientaciones coincidentes emparejan posiciones; las posiciones sin pareja en formas desiguales contienen errores #N/A individuales
INDEX((Source!A1:B2,Source!D1:E2),{1;2},2,{1,2})
INDEX((Source!A1:B2,Source!D1:E2),2,2,{2;1})
La primera expresión devuelve {2,20;4,40} y la segunda devuelve {40;4}; los valores seleccionados conservan sus representaciones de cadena, Boolean, numéricas y de error con tipo
Si cualquiera de los selectores es un arreglo, el resultado es un arreglo de valores en lugar de una referencia; una fila o columna cero, o un selector de fila o columna omitido, selecciona el primer miembro de ese eje en cada posición del resultado
Esto difiere de la extracción solo escalar: dos selectores escalares de fila y columna cero devuelven el área seleccionada completa, pero INDEX((Source!A1:B2,Source!D1:E2),0,0,{1,2}) devuelve {1,10}, no dos arreglos anidados de dos por dos; su suma es 11
Coerción de áreas y errores
Los selectores de área truncan los valores numéricos fraccionarios hacia cero y aceptan texto numérico y valores Boolean; 1.9, "1" y TRUE seleccionan el área 1
El área cero, FALSE, un cuarto argumento explícitamente vacío, los valores negativos y las fracciones que truncan a cero devuelven #VALUE!; el texto no numérico también devuelve #VALUE!, mientras que un área positiva que exceda el número de áreas disponibles devuelve #REF!
Los errores con tipo de los selectores se propagan con sus códigos de error existentes; para un selector de arreglo, un área inválida produce un error únicamente en su posición de resultado correspondiente, de modo que INDEX(SEQUENCE(2,2),2,2,{1,2}) devuelve {4,#REF!}
Los errores existentes no son reemplazados por comprobaciones de límites posteriores: INDEX(#N/A,1,1,2) devuelve #N/A, y INDEX(SEQUENCE(2,2),#N/A,1,#DIV/0!) conserva el #N/A del selector de fila
Una referencia inválida calificada por una hoja de cálculo local existente permanece #REF!, incluidos Source!#REF! y 'Plan! O''Brien'!#REF!; un nombre definido que contenga ese error de referencia local también conserva #REF! cuando se pasa a INDEX o ISFORMULA
El token de error local puede usarse con los operadores de porcentaje o de intersección implícita, y el espacio en blanco después del separador de hoja se acepta; el espacio en blanco entre el nombre de la hoja de cálculo y su separador queda fuera de la sintaxis aceptada
Las cadenas de fórmulas entre comillas como "Source!#REF!" permanecen como texto; un token de referencia calificado por hoja dentro de una constante de arreglo queda fuera de la gramática de fuentes admitida
Los selectores de fila y columna conservan sus reglas existentes de extracción con cero y de validación de valores negativos; el área cero nunca significa extracción de la fuente completa
Almacenamiento, dependencias y límites
El cálculo de desbordamiento automático XLSX puede hacer crecer o encoger los resultados de selectores de arreglo y libera los seguidores obsoletos de propiedad del ancla; las expresiones admitidas también se evalúan dentro de un destino CSE fijo explícito y sobreviven al guardado y la reapertura XLSX
Un selector con nombre puede exigir almacenamiento dinámico conservador incluso cuando su resultado evaluado es escalar; un marcador dinámico de una celda no cambia el valor ni la identidad de un resultado de referencia admitido
Las referencias de fuente seleccionadas y los nombres anidados participan en el seguimiento de dependencias, de modo que las ediciones posteriores de la fuente se observan tras el recálculo; el recorrido de selectores y las cargas de matrices generadas consumen los presupuestos existentes de pasos de evaluación y de memoria de arreglos
Límites
Una unión directa cuyas áreas pertenecen a hojas diferentes devuelve #VALUE!, incluso cuando el número de área solicitado seleccionaría solo una de ellas; un CHOOSE escalar que selecciona una referencia sigue siendo la alternativa admitida entre hojas
Una unión de arreglos calculados, constantes o expresiones de valor no es una referencia real de varias áreas; las uniones de arreglos calculados enlazadas con LET devuelven #VALUE!, y la sintaxis directa de unión de arreglo de arreglos no se acepta como forma de fuente
Este contrato cubre las formas probadas de referencias locales y arreglos calculados; no implica soporte para todos los grafos de referencias externas, todas las funciones que producen referencias ni contenedores de arreglos anidados arbitrarios
Un calificador de hoja de cálculo desconocido no se normaliza como un error de referencia local conocido; Excel puede crear un grafo de vínculos externos para una fórmula como NoSuchSheet!#REF!, y reproducir ese grafo queda fuera de este contrato de cálculo local