Excel Avanzado

Macros, Vba en Excel y muchos ejemplos de nuestro Curso de Excel Avanzado

Excel Avanzado
Logo Excel Avanzado

Función Indice en Excel

| Sin comentarios

La función Índice tiene como objetivo devolver un valor o referencia a un valor dada la posición de la fila y/o columna que nosotros asignemos dentro de una matriz o tabla. Como se verá en los siguientes ejemplos, esta función es bastante útil cuando se combina con el uso de la función Coincidir. Antes de llegar a ese punto, se procederá a explicar las dos sintaxis de la función Índice

Sintaxis Función Indice -  Forma Matricial

La primera sintaxis que presenta esta función es la forma matricial que consiste en:

INDICE(matriz;núm_fila;[núm_columna]).

El primer argumento es “matriz” que denota el rango de celdas o matriz que hemos seleccionado.

El segundo argumento es “núm_fila”, este indica la fila de la matriz desde la cual se extraerá el valor.

Finalmente, el argumento “núm_columna” selecciona la columna desde la cual se extraerá un valor.

Hay que notar que si el segundo argumento se omite el tercer argumento se vuelve obligatorio, y viceversa esto también se cumple. Es decir, tenemos que indicar, por lo menos, una fila o una columna de la matriz seleccionada para poder usar la función Índice. Por ejemplo, si indicamos que cualquiera de estos argumentos tome como valor 0, la función extraerá toda la fila o columna requerida

Sintaxis Función Indice -  Forma de Referencia

La sintaxis de esta forma es la siguiente:

INDICE(referencia; núm_fila; núm_columna; area_núm).

El primer argumento consiste en que ahora se hará uso de una referencia de celdas en vez de una única matriz. Los dos siguientes argumentos siguen indicando la fila y la columna relativas al rango de celdas especificado, respectivamente.

El argumento “area_núm” selecciona un rango en la referencia que deberá usarse. Por ejemplo, si se indican tres áreas en el primer argumento, la primera de estas se numera con 1 en el argumento area_núm, la segunda con 2 y así sucesivamente.

Ambas formas se usarán en los ejemplos presentados para poder entender cómo funcionan y sus diferencias.

Ejemplos de la Función Indice en Excel

Descargar ejemplos: Ejemplos Función Indice en Excel

Se usa esta pequeña base de datos de alumnos universitarios para comprobar la utilidad de la función Índice, se asume que todos estos datos forman parte de la "Tabla1":

Función Indice en Excel

Nos planteamos cuatro ejemplos de preguntas a resolver:

Ejemplo 1: ¿Cuánto es la deuda de Gianfranco?

Ejemplo 2: ¿Cuál es la edad de Silvana?

Ejemplo 3: ¿Cuáles son los nombres de las personas de esta tabla?

Ejemplo 4: ¿Cuál es la carrera de Alvaro?

Si bien es cierto que estas preguntas se pueden responder rápidamente con solo observar la tabla, el objetivo es mostrar la utilidad de la función en cuestión para el tratamiento de este tipo de bases de datos.

Respuesta del ejemplo 1

Para la primera pregunta, usamos la forma matricial de la función

=INDICE(Tabla1;7;5)

como se explico previamente, Tabla1 como primer argumento denota la matriz que usaremos, los siguientes parámetros nos otorgan la fila y la columna, respectivamente, en las cuales se dará la intersección de estas y donde se encontrará el valor que buscamos. 

Respuesta del ejemplo 2 

Para la segunda pregunta, usamos la forma en referencia de la función:

=INDICE((Tabla1[Nombre];Tabla1[Edad]);2;1;2)

En este caso, se toman dos referencias, la primera considera solo la columna “Nombre” de la Tabla1, mientras que la segunda solo considera la columna “Edad”. Como podemos ver, el último argumento indica que solo se va a considerar la referencia 2, es decir, la columna Edad. Por simple inspección, podemos observar que la edad de Silvana se encuentra en la intersección de la fila 2 y la columna 1 de la referencia especificada y estos son los valores que se colocan en el segundo y tercer argumento de la función. 

Respuesta del ejemplo 3 y 4

El uso de la formula de la tercera pregunta tiene una sintaxis similar a la de la primera pregunta, la diferencia es que se trata de una "fórmula de matriz" , por lo que luego de escribirla debemos presionar CRTL + MAYUSC + ENTER.

Para el caso del cuarta pregunta se hará uso de la función Coincidir: 

=INDICE(Tabla1[[Carrera ]];COINCIDIR("Alvaro";Tabla1[[Nombre ]];0))

Para poder usar ambas funciones, se usa la forma matricial de la función Índice. Como se puede observar, el primer argumento selecciona la columna “Carrera” de la Tabla1. Luego, en vez de indicar la fila correspondiente, se procede a usar la función Coincidir la cual tiene como sintaxis: “=Coincidir(valor_buscado; matriz_buscada;[tipo de coincidencia])”.

Esta función se lee de la siguiente forma: El valor que queremos es “Alvaro”, el cual se coloca en el primer argumento, este se buscará en la columna “Nombre” de la Tabla1, esto será el segundo argumento. Finalmente, el 0 al final de la formula indica que queremos que la coincidencia sea exacta. Esto nos dará como resultado el valor de 3, que es el número de fila donde se encuentra el nombre de Alvaro, este valor será usado en la formula Índice como segundo argumento, es decir, como el número de fila. Al usar un rango de celdas que solo posee una columna no es necesario que indiquemos un número de columna, por lo que la fórmula esta completa y nos da la respuesta que deseábamos.

Función Indice en Excel con Macros

Para usar la función Índice con macros, se utiliza el siguiente código:

Application.WorksheetFunction.Index(Arg1,Arg2,Arg3,Arg,4)

Los argumentos, en este caso, son iguales a los argumentos presentados en la forma de referencia de esta función. Se busca responder las mismas preguntas planteadas anteriormente con el siguiente código:

Función Indice en Excel VBA

 

La primera parte de este código define ciertas variables que denotan rangos que se usaran posteriormente para que la lectura de la macro sea mucho más sencilla. Además, se define la hoja de trabajo, la cual será la hoja “ConMacros”.

En la segunda parte del código se responden a las interrogantes planteadas. Sin embargo, las preguntas 1 y 3 presentan sintaxis similares al igual que las preguntas 2 y 4 por lo que solamente se explicaran las dos primeras preguntas debido a que la lógica es la misma. 

Para la pregunta 1, se define que la celda I3 de la hoja de trabajo será donde se coloque el resultado de la función Índice. La sintaxis de esta función es casi idéntica a la presentada en el ejercicio sin uso de macros. Esto facilita su comprensión ya que los argumentos son los mismos, es decir “MiTabla” indica la matriz a utilizar y los valores 7 y 5 indican el número de fila y número de columna respectivamente.

Para la pregunta 2, se empieza definiendo donde se ubicará el valor que nos de la función Índice, esto será en la celda I6 de la hoja de trabajo definida (ws.Range(“I6”)). Como se puede observar, se hace uso de la función Coincidir mediante el código: “Application.WorksheetFunction.Match(arg1,arg2,arg3)”. Al igual que la función Índice, los argumentos no cambian al utilizar macros, por lo que la lectura del código es muy similar a la respuesta a esta pregunta en el caso sin macros. 

Esto es, la función Coincidir usa como primer argumento “Alvaro” el cual es el valor a buscar, el segundo argumento es la variable que hemos creado “Nombre” y, finalmente, el tercer argumento es 0, que indica que la coincidencia del valor a buscar sea exacta en el rango definido por la variable “Nombre”.

Este procedimiento nos dará el valor que la función Índice, en forma de código “Application.WorksheetFunction.Index(Carrera,…”, tomara como número de fila y debido a que la variable “Carrera” define un rango de celdas de solo una columna no es necesario colocar un valor para definir el número de columna a utilizar. Por lo que, se llegara a la respuesta correcta con este código. 

Elaborado por: Luis Alejandro Tafur

 

Deja una respuesta

Los campos requeridos estan marcados con *.