miércoles, 6 de mayo de 2009

Transponer Tablas que Contienen Fórmulas



Es muy frecuente que en nuestras hojas de cálculo tengamos tablas con información diversa. La disposición típica de dicha información en las tablas, como bien sabrá, es en columnas. Esto es, en cada columna tenemos un campo y debajo de cada campo estarán los datos o fórmulas del mismo. Pero qué ocurre si necesitamos obtener información de la tabla y presentarla con disposición horizontal, es decir, por filas en vez de por columnas (que es como se encuentra originalmente). Lamentablemente he de confesar que ante esta tarea me he encontrado, en demasiadas ocasiones, con soluciones peregrinas y siempre muy costosas en términos de tiempo. 

Veamos un ejemplo. Supongamos que tenemos una tabla con información relativa a distintas parcelas; su estado; precio base; IVA; precio con IVA; e hipoteca disponible:

Queremos obtener el siguiente detalle para presentárselo al cliente cuando solicite información de una determinada parcela:
La formulación para obtener esta información es muy sencilla utilizando BUSCARV. El problema es que la información requerida la tenemos en la tabla con disposición en columnas y la necesitamos con disposición en filas. La solución que propondré a continuación tiene sentido cuando el número de fórmulas que tenga que realizar sea elevado (en caso contrario terminará antes resolviendo directamente los BUSCARV en el rango de salida -B6:B11- simplemente modificando el argumento de indicador de columna en cada fórmula).

1.  Seleccionamos el rango E14:E33 y hacemos clic en el cuadro de nombres (a la izquierda de la barra de fórmulas). Escribimos el nombre numero_parcela (utilizamos el guión bajo porque Excel no permite introducir nombres con espacios).
2. Nos situamos en B2 y vamos a Datos/Validación. Seleccionamos Permitir/Lista y en el cuadro Origen escribimos =numero_parcela  De esta forma dejamos preparada nuestra entrada de datos en B2 con una lista desplegable con las distintas parcelas existentes.
3. Seleccionamos el rango E14:J33 y le damos el nombre tabla_general.
4. Nos situamos en E12 y escribimos un 1. En F12 escribimos un 2. Seleccionamos E12:F12 y arrastramos a la derecha hasta J12. Con esto habremos creado los números de columna de la tabla_general que luego utilizaremos:

5. Nos situamos en E35 y escribimos la siguiente fórmula:
=BUSCARV($B$2;tabla_general;E12;FALSO)
6. Copiamos E35 y pegamos en el rango F35:J35
De esta manera ya tenemos la información deseada de la parcela indicada en B2. Sólo nos queda "darle la vuelta" a esta información.
7. Seleccionamos el rango B6:B11 y, con el rango seleccionado, escribimos la siguiente fórmula:
=TRANSPONER(E35:J35)  PERO NO PULSAMOS ENTER. Vamos a realizar una entrada matricial y, por lo tanto, tenemos que pulsar Ctrl+Shift+Enter. El resultado será la fórmula matricial: 
 {=TRANSPONER(E35:J35)}
Esta función, como su propio nombre indica, nos permite transponer matrices que contengan fórmulas y/o datos. No intente realizar esta tarea utilizando el Copiar/Pegado especial/Transponer ya que esta opción sólo es válida para datos y no para fórmulas.

La función TRANSPONER, en definitiva, devuelve un rango o matriz vertical de datos o fórmulas en horizontal o viceversa. Para utilizarla correctamente recuerde que:
1. Debe contar el número de filas y columnas que tiene el rango que desea transponer (por ejemplo 4 filas y 2 columnas)
2. Debe seleccionar un rango donde vaya a transponer la matriz que se componga de tantas filas como columnas tiene la matriz de origen y tantas columnas como filas tiene la matriz de origen (2 filas y 4 columnas).
3. Con el rango seleccionado puede escribir la función TRANSPONER y, entre paréntesis, el rango donde se encuentra la matriz de origen.
4. Al terminar de escribir la función pulsaremos Ctrl+Shift+Enter.


Soy consciente de que en el caso que he utilizado como ejemplo puede haber soluciones más rápidas y/o sencillas, pero me parece importante que el usuario se familiarice con esta función para cuando la ocasión de verdad lo requiera.

3 comentarios:

  1. Gracias Kiko ese ctrl + shift + enter made my day.
    Carlos Hijas

    ResponderEliminar
  2. Gracias Sr.
    Una herramienta útil y funcional.


    Algarrobo, Chile

    ResponderEliminar