Función OFFSET de Excel - ejemplos de fórmulas y usos

  • Compartir Este
Michael Brown

En este tutorial, vamos a arrojar algo de luz sobre uno de los habitantes más misteriosos del universo Excel: la función OFFSET.

Entonces, ¿qué es OFFSET en Excel? En pocas palabras, la fórmula OFFSET devuelve una referencia a un rango que está desplazado desde una celda inicial o un rango de celdas por un número especificado de filas y columnas.

La función OFFSET puede ser un poco complicada de entender, así que vamos a repasar primero una breve explicación técnica (haré todo lo posible para que sea sencilla) y luego cubriremos algunas de las formas más eficientes de utilizar OFFSET en Excel.

    Función OFFSET de Excel - sintaxis y usos básicos

    La función OFFSET en Excel devuelve una celda o rango de celdas que está a un número determinado de filas y columnas de una celda o rango dado.

    La sintaxis de la función OFFSET es la siguiente:

    OFFSET(referencia, filas, columnas, [altura], [anchura])

    Los 3 primeros argumentos son obligatorios y los 2 últimos opcionales. Todos los argumentos pueden ser referencias a otras celdas o resultados devueltos por otras fórmulas.

    Parece que Microsoft ha hecho un buen esfuerzo para dar algún significado a los nombres de los parámetros, y dan una pista de lo que se supone que hay que especificar en cada uno.

    Argumentos necesarios:

    • Referencia - una celda o un rango de celdas adyacentes a partir de las cuales se basa el desplazamiento. Puede considerarse como el punto de partida.
    • Filas - El número de filas a desplazar desde el punto de partida, hacia arriba o hacia abajo. Si filas es un número positivo, la fórmula se desplaza por debajo de la referencia de partida, en caso de un número negativo se desplaza por encima de la referencia de partida.
    • Cols - El número de columnas que desea que la fórmula se desplace desde el punto de partida. Al igual que las filas, las columnas pueden ser positivas (a la derecha de la referencia de partida) o negativas (a la izquierda de la referencia de partida).

    Argumentos opcionales:

    • Altura - el número de filas a devolver.
    • Anchura - el número de columnas a devolver.

    Tanto el argumento de altura como el de anchura deben ser siempre números positivos. Si se omite alguno de ellos, se utilizará por defecto la altura o anchura de referencia .

    Nota: OFFSET es una función volátil y puede ralentizar la hoja de cálculo. La lentitud es directamente proporcional al número de celdas recalculadas.

    Y ahora, vamos a ilustrar la teoría con un ejemplo de la fórmula OFFSET más sencilla.

    Ejemplo de fórmula OFFSET en Excel

    A continuación se muestra un ejemplo de una fórmula OFFSET simple que devuelve una referencia de celda basada en un punto de partida, filas y cols que usted especifique:

    =OFFSET(A1,3,1)

    La fórmula le dice a Excel que tome la celda A1 como punto de partida (referencia), luego se desplace 3 filas hacia abajo (argumento filas) y 1 columna hacia la izquierda (argumento cols). Como resultado, esta fórmula OFFSET devuelve el valor de la celda B4.

    La imagen de la izquierda muestra el recorrido de la función y la captura de pantalla de la derecha demuestra cómo se puede utilizar la fórmula OFFSET en datos de la vida real. La única diferencia entre las dos fórmulas es que la segunda (a la derecha) incluye una referencia de celda (E1) en el argumento filas. Pero como la celda E1 contiene el número 3, y en el argumento filas de la primera fórmula aparece exactamente el mismo número,ambos devolverían un resultado idéntico - el valor en B4.

    Fórmulas OFFSET de Excel - cosas a recordar

    • La función OFFSET en Excel no mueve realmente ninguna celda o rango, sólo devuelve una referencia.
    • Cuando una fórmula OFFSET devuelve un rango de celdas, los argumentos rows y cols se refieren siempre a la celda superior izquierda del rango devuelto.
    • El argumento de referencia debe incluir una celda o rango de celdas adyacentes, de lo contrario su fórmula devolverá el error #¡VALOR!
    • ¡Si las filas y/o cols especificadas desplazan una referencia por encima del borde de la hoja de cálculo, su fórmula OFFSET de Excel devolverá el error #REF!
    • La función OFFSET puede utilizarse dentro de cualquier otra función de Excel que acepte una referencia de celda / rango en sus argumentos.

    Por ejemplo, si intenta utilizar la fórmula =OFFSET(A1,3,1,1,3) por sí sola, arrojará un error #¡VALOR!, ya que el rango a devolver (1 fila, 3 columnas) no cabe en una sola celda. Sin embargo, si la incrustas en la función SUMA, así:

    =SUMA(OFFSET(A1,3,1,1,3))

    La fórmula devolverá la suma de los valores de un rango de 1 fila por 3 columnas que está 3 filas por debajo y 1 columna a la derecha de la celda A1, es decir, el total de los valores de las celdas B4:D4.

    ¿Por qué se utiliza OFFSET en Excel?

    Ahora que ya sabes lo que hace la función OFFSET, puede que te estés preguntando "¿Por qué molestarse en utilizarla?" ¿Por qué no escribir simplemente una referencia directa como B4:D4?

    La fórmula OFFSET de Excel es muy buena para:

    Creación de rangos dinámicos Referencias: Las referencias como B1:C4 son estáticas, es decir, siempre se refieren a un rango determinado. Sin embargo, algunas tareas son más fáciles de realizar con rangos dinámicos, sobre todo cuando se trabaja con datos cambiantes, por ejemplo, si se tiene una hoja de cálculo en la que cada semana se añade una nueva fila o columna.

    Obtener el rango a partir de la celda inicial A veces, puede que no conozca la dirección real del rango, aunque sepa que empieza en una celda determinada. En estos casos, el uso de OFFSET en Excel es la forma correcta de proceder.

    Cómo utilizar la función OFFSET en Excel - ejemplos de fórmulas

    Espero que no te hayas aburrido con tanta teoría. En fin, ahora llegamos a la parte más emocionante: los usos prácticos de la función OFFSET.

    Funciones OFFSET y SUM de Excel

    El ejemplo de hace un momento muestra el uso más sencillo de OFFSET & SUM. Ahora, veamos estas funciones desde otro ángulo y veamos qué más pueden hacer.

    Ejemplo 1. Una fórmula dinámica SUM / OFFSET

    Cuando se trabaja con hojas de cálculo que se actualizan continuamente, es posible que desee tener una fórmula SUMA que recoja automáticamente todas las filas recién añadidas.

    Supongamos que los datos de origen son similares a los que aparecen en la captura de pantalla siguiente. Cada mes se añade una nueva fila justo encima de la fórmula SUMA y, naturalmente, desea incluirla en el total. En general, hay dos opciones: actualizar manualmente el intervalo en la fórmula SUMA cada vez o hacer que la fórmula OFFSET lo haga por usted.

    Como la primera celda del rango a sumar se especificará directamente en la fórmula SUMA, sólo hay que decidir los parámetros para la función OFFSET de Excel, que obtendrá esa última celda del rango:

    • Referencia - la celda que contiene el total, B9 en nuestro caso.
    • Filas - la celda situada justo encima del total, que requiere el número negativo -1.
    • Cols - es 0 porque no quieres cambiar la columna.

    Así que aquí va el patrón de la fórmula SUM / OFFSET:

    =SUMA( primera célula :(OFFSET( célula con total , -1,0)

    Adaptada al ejemplo anterior, la fórmula es la siguiente:

    =SUMA(B2:(OFFSET(B9, -1, 0)))

    Y como se demuestra en la siguiente captura de pantalla, funciona a la perfección:

    Ejemplo 2. Fórmula OFFSET de Excel para sumar las N últimas filas

    En el ejemplo anterior, supongamos que desea conocer el importe de las bonificaciones de los últimos N meses en lugar del total general. También desea que la fórmula incluya automáticamente cualquier nueva fila que añada a la hoja.

    Para esta tarea, vamos a utilizar el OFFSET de Excel en combinación con las funciones SUM y COUNT / COUNTA:

    =SUMA(OFFSET(B1,COUNT(B:B)-E1+1,0,E1,1))

    o

    =SUMA(OFFSET(B1,COUNTA(B:B)-E1,0,E1,1))

    Los siguientes detalles pueden ayudarle a comprender mejor las fórmulas:

    • Referencia - la cabecera de la columna cuyos valores desea sumar, la celda B1 en este ejemplo.
    • Filas - para calcular el número de filas a desplazar, se utiliza la función COUNT o COUNTA.

      CONTAR devuelve el número de celdas de la columna B que contienen números, a los que se resta los últimos N meses (el número es la celda E1), y se suma 1.

      Si COUNTA es su función preferida, no necesita añadir 1, ya que esta función cuenta todas las celdas no vacías, y una fila de encabezado con un valor de texto añade una celda extra que nuestra fórmula necesita. Tenga en cuenta que esta fórmula sólo funcionará correctamente en una estructura de tabla similar - una fila de encabezado seguida de filas con números. Para diseños de tabla diferentes, puede que necesite hacer algunos ajustes en la funciónFórmula OFFSET/COUNTA.

    • Cols - el número de columnas a desplazar es cero (0).
    • Altura - el número de filas a sumar se especifica en E1.
    • Anchura - 1 columna.

    Uso de la función OFFSET con AVERAGE, MAX, MIN

    Del mismo modo que hemos calculado las primas de los últimos N meses, puede obtener una media de los últimos N días, semanas o años, así como encontrar sus valores máximos o mínimos. La única diferencia entre las fórmulas es el nombre de la primera función:

    =MEDIA(OFFSET(B1,COUNT(B:B)-E1+1,0,E1,1))

    =MAX(OFFSET(B1,COUNT(B:B)-E1+1,0,E1,1))

    =MIN(OFFSET(B1,COUNT(B:B)-E1+1,0,E1,1))

    La principal ventaja de estas fórmulas frente a las habituales AVERAGE(B5:B8) o MAX(B5:B8) es que no tendrás que actualizar la fórmula cada vez que se actualice la tabla de origen. No importa cuántas filas nuevas se añadan o eliminen en la hoja de cálculo, las fórmulas OFFSET siempre se referirán al número especificado de últimas celdas (más bajas) de la columna.

    Fórmula OFFSET de Excel para crear un rango dinámico

    Utilizada junto con COUNTA, la función OFFSET puede ayudarle a crear un rango dinámico que puede resultar útil en muchos escenarios, por ejemplo para crear listas desplegables actualizables automáticamente.

    La fórmula OFFSET para un rango dinámico es la siguiente:

    =OFFSET(Nombre_hoja!$A$1, 0, 0, COUNTA(Nombre_hoja!$A:$A), 1)

    En el corazón de esta fórmula, se utiliza la función COUNTA para obtener el número de celdas que no están en blanco en la columna de destino. Ese número va al argumento de altura de OFFSET indicándole cuántas filas debe devolver.

    Aparte de eso, es una fórmula Offset normal, donde:

    • Referencia es el punto de partida a partir del cual se basa el desplazamiento, por ejemplo Hoja1!$A$1.
    • Filas y Cols son ambos 0 porque no hay columnas ni filas que compensar.
    • Anchura es de 1 columna.

    Nota. Si está creando un rango dinámico en la hoja actual, no es necesario incluir el nombre de la hoja en las referencias, Excel lo hará por usted automáticamente al crear el rango con nombre. De lo contrario, asegúrese de incluir el nombre de la hoja seguido del signo de exclamación como en este ejemplo de fórmula.

    Una vez que haya creado un rango dinámico con la fórmula OFFSET anterior, puede utilizar Validación de datos para crear una lista desplegable dinámica que se actualizará automáticamente en cuanto añada o elimine elementos de la lista de origen.

    Para obtener información detallada paso a paso sobre la creación de listas desplegables en Excel, consulte los siguientes tutoriales:

    • Crear listas desplegables en Excel - estáticas, dinámicas, desde otro libro
    • Crear una lista desplegable dependiente

    Excel OFFSET & VLOOKUP

    Como todo el mundo sabe, las búsquedas verticales y horizontales sencillas se realizan con la función VLOOKUP o HLOOKUP, respectivamente. Sin embargo, estas funciones tienen demasiadas limitaciones y a menudo tropiezan en fórmulas de búsqueda más potentes y complejas. Así que, para realizar búsquedas más sofisticadas en tus tablas de Excel, tienes que buscar alternativas como INDEX, MATCH y OFFSET.

    Ejemplo 1. Fórmula OFFSET para un Vlookup izquierdo en Excel

    Una de las limitaciones más infames de la función VLOOKUP es la incapacidad de mirar a su izquierda, lo que significa que VLOOKUP sólo puede devolver un valor a la derecha de la columna de búsqueda.

    En nuestra tabla de consulta de ejemplo, hay dos columnas: los nombres de los meses (columna A) y las bonificaciones (columna B). Si desea obtener una bonificación para un mes determinado, esta sencilla fórmula VLOOKUP funcionará sin problemas:

    =VLOOKUP(B1, A5:B11, 2, FALSE)

    Sin embargo, en cuanto intercambie las columnas en la tabla de consulta, se producirá inmediatamente el error #N/A:

    Para manejar una búsqueda por el lado izquierdo, se necesita una función más versátil a la que no le importe realmente dónde reside la columna de retorno. Una de las posibles soluciones es utilizar una combinación de funciones INDEX y MATCH. Otro enfoque es utilizar OFFSET, MATCH y ROWS:

    OFFSET( tabla_de_busqueda , MATCH( buscar_valor OFFSET( tabla_de_busqueda , 0, lookup_col_offset ROWS( tabla_de_busqueda ), 1) ,0) -1, return_col_offset , 1, 1)

    Dónde:

    • Buscar_col_offset - es el número de columnas que hay que mover desde el punto inicial hasta la columna de búsqueda.
    • Retorno_col_offset - es el número de columnas que hay que mover desde el punto inicial hasta la columna de retorno.

    En nuestro ejemplo, la tabla de búsqueda es A5:B9 y el valor de búsqueda está en la celda B1, el desplazamiento de la columna de búsqueda es 1 (porque estamos buscando el valor de búsqueda en la segunda columna (B), necesitamos desplazarnos 1 columna a la derecha desde el principio de la tabla), el desplazamiento de la columna de retorno es 0 porque estamos devolviendo valores de la primera columna (A):

    =OFFSET(A5:B9, MATCH(B1, OFFSET(A5:B9, 0, 1, ROWS(A5:B9), 1) ,0) -1, 0, 1, 1)

    Sé que la fórmula parece un poco torpe, pero funciona :)

    Ejemplo 2. Cómo hacer una búsqueda superior en Excel

    Al igual que VLOOKUP no puede mirar a la izquierda, su homólogo horizontal - la función HLOOKUP - no puede mirar hacia arriba para devolver un valor.

    Si necesita escanear una fila superior en busca de coincidencias, la fórmula OFFSET MATCH puede ayudarle de nuevo, pero esta vez tendrá que mejorarla con la función COLUMNS, de esta forma:

    OFFSET( tabla_de_busqueda , return_row_offset , MATCH( buscar_valor OFFSET( tabla_de_busqueda , desplazamiento_de_fila_de_busqueda 0, 1, COLUMNAS( tabla_de_busqueda )), 0) -1, 1, 1)

    Dónde:

    • Lookup_row_offset - el número de filas que hay que desplazar desde el punto de partida hasta la fila de búsqueda.
    • Return_row_offset - el número de filas que hay que mover desde el punto inicial hasta la fila de retorno.

    Suponiendo que la tabla de consulta es B4:F5 y el valor de consulta está en la celda B1, la fórmula es la siguiente:

    =OFFSET(B4:F5, 0, MATCH(B1, OFFSET(B4:F5, 1, 0, 1, COLUMNS(B4:F5)), 0) -1, 1, 1)

    En nuestro caso, el desplazamiento de la fila de búsqueda es 1 porque nuestro rango de búsqueda es 1 fila hacia abajo desde el punto de partida, el desplazamiento de la fila de retorno es 0 porque estamos devolviendo coincidencias de la primera fila de la tabla.

    Ejemplo 3. Búsqueda bidireccional (por valores de columna y fila)

    La búsqueda bidireccional devuelve un valor basado en coincidencias tanto en las filas como en las columnas. Y puede utilizar la siguiente fórmula de matriz de búsqueda doble para encontrar un valor en la intersección de una determinada fila y columna:

    =OFFSET( tabla de consulta , MATCH( valor de búsqueda de línea OFFSET( tabla de consulta 0, 0, FILAS( tabla de consulta ), 1), 0) -1, MATCH( valor de consulta de columna OFFSET( tabla de consulta , 0, 0, 1, COLUMNAS( tabla de consulta )), 0) -1)

    Dado que:

    • La tabla de consulta es A5:G9
    • El valor que debe coincidir en las filas está en B2
    • El valor que debe coincidir en las columnas está en B1

    Se obtiene la siguiente fórmula de búsqueda bidimensional:

    =OFFSET(A5:G9, MATCH(B2, OFFSET(A5:G9, 0, 0, FILAS(A5:G9), 1), 0)-1, MATCH(B1, OFFSET(A5:G9, 0, 0, 1, COLUMNAS(A5:G9)), 0) -1)

    No es lo más fácil de recordar, ¿verdad? Además, se trata de una fórmula de matriz, así que no olvides pulsar Ctrl + Mayús + Intro para introducirla correctamente.

    Por supuesto, esta larga fórmula OFFSET no es la única forma posible de realizar una búsqueda doble en Excel. Puede obtener el mismo resultado utilizando las funciones VLOOKUP & MATCH, SUMPRODUCT, o INDEX & MATCH. Existe incluso una forma sin fórmulas: emplear rangos con nombre y el operador de intersección (espacio). El siguiente tutorial explica todas las soluciones alternativas con todo detalle: Cómo realizar una búsqueda dobleen Excel.

    Función OFFSET - limitaciones y alternativas

    Esperamos que los ejemplos de fórmulas de esta página hayan arrojado algo de luz sobre cómo utilizar OFFSET en Excel. Sin embargo, para aprovechar eficazmente la función en sus propios libros, no sólo debe conocer sus puntos fuertes, sino también tener cuidado con sus puntos débiles.

    Las limitaciones más importantes de la función OFFSET de Excel son las siguientes:

    • Al igual que otras funciones volátiles, OFFSET es una función función que consume muchos recursos Cada vez que se produce un cambio en los datos de origen, las fórmulas OFFSET se recalculan, lo que mantiene a Excel ocupado durante un poco más de tiempo. Esto no es un problema para una única fórmula en una hoja de cálculo pequeña, pero si hay docenas o cientos de fórmulas en un libro, Microsoft Excel puede tardar bastante en recalcular.
    • Las fórmulas OFFSET de Excel son difícil de revisar Dado que las referencias devueltas por la función OFFSET son dinámicas, las fórmulas grandes (especialmente con OFFSETs anidados) pueden ser bastante difíciles de depurar.

    Alternativas al uso de OFFSET en Excel

    Como ocurre a menudo en Excel, el mismo resultado puede conseguirse de varias formas distintas. Así pues, he aquí tres elegantes alternativas a OFFSET.

    1. Tablas Excel

      Desde Excel 2002, disponemos de una función realmente maravillosa: las tablas de Excel propiamente dichas, en contraposición a los rangos habituales. Para crear una tabla a partir de datos estructurados, basta con hacer clic en Insertar> Tabla en el Inicio o pulse Ctrl + T .

      Al introducir una fórmula en una celda de una tabla de Excel, puede crear una denominada "columna calculada" que copia automáticamente la fórmula en todas las demás celdas de esa columna y ajusta la fórmula para cada fila de la tabla.

      Además, cualquier fórmula que haga referencia a los datos de una tabla se ajusta automáticamente para incluir las nuevas filas que añada a la tabla o excluir las filas que elimine. Técnicamente, estas fórmulas operan sobre columnas o filas de la tabla, que son rangos dinámicos Cada tabla de un libro de trabajo tiene un nombre único (los predeterminados son Tabla1, Tabla2, etc.) y puede cambiar el nombre de su tabla mediante la función Diseño tab> Propiedades grupo> Nombre de la tabla cuadro de texto.

      La siguiente captura de pantalla muestra la fórmula SUMA que hace referencia a la variable Bono de la Tabla3. Preste atención a que la fórmula incluya la columna de la tabla nombre de columna en lugar de un rango de celdas.

    2. Función INDEX de Excel

      Aunque no exactamente de la misma manera que OFFSET, Excel INDEX también se puede utilizar para crear referencias dinámicas de rango. A diferencia de OFFSET, la función INDEX no es volátil, por lo que no ralentizará su Excel.

    3. Función INDIRECTO de Excel

      Utilizando la función INDIRECTO puede crear referencias dinámicas a rangos a partir de muchas fuentes, como valores de celda, valores de celda y texto, rangos con nombre. También puede hacer referencia dinámicamente a otra hoja o libro de Excel. Puede encontrar todos estos ejemplos de fórmulas en nuestro tutorial de la función INDIRECTO de Excel.

    ¿Recuerdas la pregunta formulada al principio de este tutorial? ¿Qué es OFFSET en Excel? Espero que ahora sepas la respuesta : ) Si quieres más experiencia práctica, no dudes en descargarte nuestro cuaderno de prácticas (véase más abajo) que contiene todas las fórmulas comentadas en esta página y aplicarles ingeniería inversa para comprenderlas mejor. Gracias por leer!

    Cuaderno de prácticas para descargar

    Ejemplos de fórmulas OFFSET (archivo .xlsx)

    Michael Brown es un entusiasta de la tecnología dedicado y apasionado por simplificar procesos complejos utilizando herramientas de software. Con más de una década de experiencia en la industria de la tecnología, ha perfeccionado sus habilidades en Microsoft Excel y Outlook, así como en Google Sheets y Docs. El blog de Michael está dedicado a compartir su conocimiento y experiencia con otros, brindando consejos y tutoriales fáciles de seguir para mejorar la productividad y la eficiencia. Ya sea un profesional experimentado o un principiante, el blog de Michael ofrece información valiosa y consejos prácticos para aprovechar al máximo estas herramientas de software esenciales.