epelpad

El post que buscas se encuentra eliminado, pero este también te puede interesar

Rango dinámico en LibreOffice Calc


Un rango en  LibreOffice Calc es un conjunto de celdas adyacentes que podemos utilizar en nuestras fórmulas. Por ejemplo, podemos tener la siguiente fórmula en la celda D5 que suma todas las celdas desde A1 hasta A10:
=SUMA(A1:A10) Sin embargo, cuando nuestros datos aumentan o disminuyen, es necesario editar las fórmulas para introducir el nuevo rango. Siguiendo el ejemplo, si agremos un dato en la celda A11 tendremos que modificar la fórmula para que quede así:
=SUMA(A1:A11) La solución a este inconveniente son los rangos dinámicos que tienen la gracia de cambiar de tamaño en función de los datos. De esta manera no es necesario editar nuestras fórmulas para que se adapten a los cambios. En el siguiente gif tomado de Excel Total podemos ver un rango dinámico en acción.


Hay muy buenos tutoriales para Microsoft Excel, pero para LibreOffice Calc sólo encontré una escueta mención en el foro de OpenOffice. Frente a la falta de tutoriales para LibreOffice Calc, me decidí a hacer este post. ¡Vamos a ver!

Un rango dinámico no existe como una funcionalidad integrada en Calc; es más bien un truco que combina tres cosas: la asignación de nombres a rangos, las fórmulas CONTAR o CONTARA según los datos que tengamos, y la función DESREF. Así que antes de crear un rango dinámico, tenemos que dominar estos elementos por separado.


Asignar nombre a celda o rango
Al rango de celdas A1:A10 que utilizamos en el ejemplo anterior se le puede asignar un nombre, por ejemplo rango_a. Para ello, seleccionamos el rango y clickeamos Insertar > Expresiones con nombre > Definir...

Aparecerá la siguiente ventana en la que colocamos el nombre del rango y clickeamos en Añadir.

En el cuadro de nombres ubicado en la barra de fórmulas aparece ahora el nombre del rango en vez de su referencia relativa A1:A10. También en el cuadro de nombres se pueden agregar nuevos nombres, seleccionar otros rangos con nombre o gestionar los existentes.

Ahora podemos ocupar el nombre del rango en las fórmulas, tal como se muestra a continuación:
=SUMA(rango_a)

Función CONTAR y CONTARA
La función CONTAR nos devuelve la cantidad de celdas no vacías que tienen números dentro de un rango definido; por otro lado, la función CONTARA nos devuelve la cantidad de celdas no vacías con números o palabras que hay en un rango determinado. La decisión de usar una función u otra dependerá de los datos que tengamos. En nuestro ejemplo tenemos solamente números, así que usaremos la primera función para contar los elementos del rango_a  =CONTAR(rango_a)


Función DESREF
La función DESREF devuelve la referencia a una celda o rango de celdas. Tiene la siguiente sintáxis DESREF(Ref; Filas; Columnas; [Alto];  [Ancho]) Donde:
  • Ref (Obligatorio): Es la celda que sirve de referencia para extraer el rango de celdas que nos interesa.
  • Filas (Obligatorio): Es el número de filas, hacia arriba o hacia abajo a partir de la celda de referencia, al que desea haga referencia la celda superior izquierda del rango que se pretende extraer. Si el argumento filas es 5, la celda superior izquierda pasa a estar cinco filas más abajo que la referencia. Filas puede ser positivo (lo que significa que está por debajo de la referencia de inicio) o negativo (por encima).
  • Columnas (Obligatorio): Es el número de columnas, hacia la derecha o izquierda a partir de la celda de referencia, al que se desea que haga referencia la celda superior izquierda del rango que se pretende extraer. Si el argumento columnas es 5, la celda superior izquierda del rango que se quiere extraer pasa a estar cinco columnas hacia la derecha de la celda de referencia. Columnas puede ser positivo (lo que significa a la derecha de la referencia de inicio) o negativo (a la izquierda).
  • Alto (Opcional): Es el alto, en número de filas, que se desea que tenga la referencia devuelta. El alto debe ser un número positivo.
  • Ancho (Opcional): Es el ancho, en número de columnas, que se desea que tenga la referencia devuelta. El argumento ancho debe ser un número positivo.

Es una función difícil de entender. A ver si queda más claro con los siguientes ejemplos.
1.- Devolver la referencia a una celda que está 5 celdas hacia abajo y 3 celdas hacia la derecha de la celda A1 =DESREF(A1; 5; 3) La referencia que devuelve esta función es a la celda D6.

2.- Devolver la referencia a un rango de 3 filas de alto y 2 columnas de ancho que está 3 celdas hacia abajo y 2 celdas a la izquierda de la celda D5 =DESREF(D5; 3; -2; 3; 2) La referencia devuelta es al rango B8:C10

3.- Devolver la referencia a un rango de celdas de 5 filas de alto y 1 columna de ancho que se encuentra en la en la misma posición que la celda A1 =DESREF(A1; 0; 0; 5) Las columnas de ancho no es necesario colocarlas porque por defecto es 1.


Rango dinámico
Ya estamos en condiciones de crear un rango dinámico. Para ello haremos lo siguiente:

1.- Seleccionamos el menú Insertar > Expresiones con nombre > Definir...

2.- En la ventana Definir nombre colocamos como nombre rangodinámico_a y como intervalo o expresión de fórmula DESREF($A$1;0;0;CONTAR($A:$A)) Debería quedar así:

3.- Colocamos en algún lugar que no sea en la columna A alguna fórmula, como por ejemplo: =SUMA(rangodinámico_a)
Hay que notar que al definir la expresión de fórmula de un rango hay que usar referencias absolutas, de ahí que se utilice $A$1. La expresión $A:$A que está como argumento de la función CONTAR se refiere a toda la columna A. Si quisiéramos hacer referencia a una fila completa tendríamos que usar $1:$1.

El resultado es el siguiente:


El archivo odt que utilicé para hacer el video lo pueden descargar desde el siguiente enlace: https://www.dropbox.com/s/xwlrzumpdhwr191/rangos_dinamicos.ods?dl=1

Desafío
Para los que quieran dominar la creación de rangos dinámicos les propongo los siguientes desafíos:

1.- Crear un rango dinámico para datos que ocupen la primera fila.
2.- Crear un rango dinámico para datos con encabezado que ocupen la segunda columna.
3.- Crear un rango dinámico para datos con encabezado que ocupen la tercera fila.
4.- Crear un rando dinámico para una matriz de datos.

Cuando tengan la respuesta pueden poner un comentario con la función DESREF que utilizaron para cada desafío.

Muchas gracias por leer este post y espero que te sea de utilidad. Cualquier duda, no dudes en comentar.


Referencias

7 comentarios - Rango dinámico en LibreOffice Calc

ART_2 +1
Excelente post
+10 porque no se pueden dar mas
tumorlike
Muchas gracias!!
NicoBueno +1
Muy bueno! Pero que complicado es! Gracias por el tutorial!
tumorlike
Es cierto, es complicado pero bastante útil. Gracias por pasar!!
guillermomanuel +1
+10, no se donde lo sacaste, pero esto esta bueno que lo compartas
tumorlike
Gracias!!
DOA1 +1
Haces muy buenos post, capo
tumorlike
Gracias!