Ya que esta entrada sobre las Listas le fué de utilidad a mi amigo Manuel A. Arboleda, dejando un comentario en mi página de facebook, le voy a dedicar este post sobre rangos tridimensionales, los cuales son poco conocidos y demasiado útiles. Es algo muy sencillo de configurar y seguramente los ayudará en mas de una ocasión, al tener datos distribuídos en distintas hojas de un libro.
Comencemos explicando un poco la cuestión, ya que alguno querrá saber como llegamos, en primera instancia, a lo que es un rango en tres dimensiones.
Podemos definir a un rango como una matriz, o sea, un conjunto de elementos. Si, por ejemplo, defino: A1:A10, estaré frente a una matriz unidimensional de 10 posiciones. Puedo acceder a los datos especificando el numero de fila, al poseer una sola columna las cosas son muy sencillas:
aqui solamente con saber que fila ocupa cada elemento puedo recuperar su valor
Las cosas van un poco mas allá con las bidimensionales. Aqui agregamos columnas a nuestra matriz (rango), por lo que será necesario conocer nro de fila y nro de columna para identificar a un elemento dentro de ella:
el valor 10 está en la fila 7, columna 3 (C7). el ejemplo típico de una matriz bidimensional es el tablero de ajedrez. O con nuestro querido programa... una planila de cálculos es una perfeca matriz en 2D
Entonces para lograr una matriz tridimensional, necesito apilar esos tableros de ajedrez... o sea, apilar planillas de cálculo. Gráficamente es algo como en al siguiente imagen:
tengo una matriz en cada "dimension". La imagen superior muestra 5 dimensiones (matrices), las cuales a su vez poseen sus propias filas y columnas
Hasta aquí todo muy teórico y, quizás, no se vea el lado realmente práctico del "3D".
Imaginemos que llevamos cierta contabilidad en una hoja. Del rango A2 al B10 anotamos los gastos diarios que tenemos en casa. Si hablamos de gastos diarios desde ya sabemos que vamos a utilizar 7 hojas, una por cada día. La tabla para llevar estas erogaciones diarias es muy sencilla:
en B12 coloqué la funcion =SUMA(B2:B10), para ir identificando el total x día.
Si tenemos 7 días a la semana y quieremos llevar un totalizador semanal, deberemos ingresar en alguna celda una función que me sume todas las celdas B12 de las hojas: lunes, martes, miercoles, jueves, viernes, sabado y domingo (=+Lunes!B12+Martes!B2+Miercoles!B12, etc ,etc). Quizás no sea un gran esfuerzo... pero imaginemos que se nos presenta algún proyecto que tiene 178 hojas; ahí las cosas se comenzarían a complicar y ralentizar. Ingresar manualmente la suma de 178 planillas nos insumirá mucho tiempo y estaremos propensos a errores. Y ni hablar si el día de mañana, por cualquier motivo, el rango sumado (en este caso B2:B12 en cada hoja) cambia... simplemente nos volvemos locos.
Entonces, y ayuda de nuestra futura salud mental, vienen a jugar los rangos tridimensionales. Con una sola instrucción puedo hacer que Excel me sume todos los rangos B2:B12 de las hojas que yo le indique, sean 2, 10 o 200, creando una matriz 3D de 7 planillas. Veamos como.
Primero, les muestro como armé el ejemplo en mi libro:
cada hoja lleva el nombre de un día de la semana. tengo, a su vez, la tabla de gastos (imagen anterior) en cada una de ellas
Ahora llega el momento de armar nuestro rango 3D, ya que todavía para Excel (y efectivamente es así) los datos están "sueltos" en cada hoja, nada en común los une.
Crearemos el rango virtual. Vamos al menú "Insertar / Nombre / Definir", lo que nos hará aparecer en pantalla el siguiente formulario:
Al cual lo completaremos así:
Bueno: definimos un nombre para el rango, al cual llamamos rango3d. Luego nos vamos a la entrada "Se refiere a:" y le indicamos cual será su alcance.
Presionamos aceptar y listo, ya tenemos creado nuestro rango en tres dimensiones.
Noten la sintaxis: HojaDeInicio : HojaDeFin ! Rango lo que equivale en este ejemplo a: Lunes:Domingo!$B$2:$B$10
Si ahora me dirijo a cualquier celda del libro y escribo: =SUMA(rango3d) obtendré la suma de todos los rangos B2:B10 de las 7 hojas, algo mucho mas sencillo y práctico que ir sumando hoja x hoja. Recuerden que este es un ejemplo "pequeño"... un proyecto real puede involucrar decenas y decenas de planillas:
en la barra observarán a nuestra función sumando. recuerden que totalicé $188 el lunes, copié y pegué la tabla en las restantes hojas... 188 x 7 días = 1.316.
Otras cuestiones de consideración:
1) Si quiero expander el rango de suma, solo debo ir nuevamente a Insertar / Nombre / Definir, hacer click sobre el rango creado (en este caso "rango3d") y cambiar allí por los nuevos parámetros:
aquí amplié la matriz hasta el rango C40 y automáticamente Excel calculará en base a los nuevos parámetros, en todas las hojas involucradas.
2) Excel incorporará a la matriz 3D cualquier hoja que yo introduzca entre las hojas Lunes --> Domingo. Esto nos dá una gran ventaja, ya que si quito a Jueves dejará de tenerlo en cuenta. Y "quitar" no significa "eliminar", si no simplemente "sacarlo" de entre esos dos días, como muestro a continuación:
ahora Jueves está fuera de la matriz Lunes --> Domingo y dejó de reflejarse en nuestra suma:
1316 - 188 = 1128. La hoja Jueves ya no es tenida en cuenta.
3) Dado lo expuesto en el punto anterior, es facil deducir que cualquier hoja que introduzca entre Lunes --> Domingo será incorporada a nuestra matriz 3D. Esto nos brinda una flexibilidad absoluta.
4) De mas esta aclarar que aquí utilicé a SUMA(), pero esto es extensible a cualquier otra función, siempre que esté correctamente utilizada por nosotros.
Suerte y espero que les sea de utilidad en sus proyectos.
Suerte y espero que les sea de utilidad en sus proyectos.
Comentarios
Publicar un comentario