De distribucion en columnas a distribucion en lista plana

02/03/2008 - 10:46 por Germ | Informe spam
Buenas, pasar de la segunda a la primera es facil con tablas dinamicas, pero
como paso de la primera a la segunda? Lo ideal sería sin utilizar VB si fuese
posible.
Gracias,
Hasta ahora.

T m1 m2 m3 m4 m5
a 3 1
b 3
y 2 6
r 1 7 1

T Val Mes
a 3 m1
a 1 m3
b 3 m3
y 2 m2
y 6 m4
r 1 m3
r 7 m4
r 1 m5
 

Leer las respuestas

#1 Héctor Miguel
03/03/2008 - 05:28 | Informe spam
hola, !

... pasar de la segunda a la primera es facil con tablas dinamicas, pero como paso de la primera a la segunda?
Lo ideal seria sin utilizar VB si fuese posible.



1) (generalmente) es mas "visible" si comentas rangos, hojas, tipo de datos, etc. (hablando "en terminos de excel")...
que hacer una exposicion (tratando de que sea) "emulativa" de la tabla de datos en una hoja de calculo
(en la re/transmision, las tabulaciones que usaste pasan "descuadradas" por juegos de caracteres distintos entre "lectores")

2) suponiendo que la tabla "original" esta en la hoja1 en el rango [A1:F5]
con un arreglo de titulos en la fila1 y conceptos en la columna A (con los datos-tabla en el rango B2:F5]

3) suponiendo que la nueva distribucion (tipo inversa de una tabla dinamica) la requieres en otra hoja...
donde pones los titulos en el rango [A1:C1] (T, Val, Mes)

4) usa algo +/- como las siguientes propuestas de formula, considerando los siguientes "convencionalismos"...
a) mi sistema usa como separador de argumentos a la coma ',' NO al punto y coma ';' :D
b) las formulas son de "entrada matricial" (ya sabes, al introducirlas/editarlas se confirman por ctrl+shift+enter)
c) las formulas deben ser en una sola linea (es probable que los lectores recorten a +/- 80 caracteres por linea) -?-

[en la otra hoja, inicia con las siguientes formulas]:

[A2] =indice(hoja1!a:a,k.esimo.menor(si(hoja1!$b$2:$f$5,fila(hoja1!$b$2:$f$5)),fila($a1)))

[B2] =indice(hoja1!$a$1:$f$5,coincidir($a2,hoja1!$a:$a,0),k.esimo.menor(si(hoja1!$a$2:$a$5=$a2,si(hoja1!$b$2:$f$5,columna(hoja1!$b$2:$f$5))),contar.si($a$2:$a2,$a2)))

[C2] =indice(hoja1!$1:$1,k.esimo.menor(si(hoja1!$a$2:$a$5=$a2,si(hoja1!$b$2:$f$5,columna(hoja1!$b$2:$f$5))),contar.si($a$2:$a2,$a2)))

5) seleccionas el rango [B2:C2] y lo copias/arrastras n_filas hacia abajo (hasta obtener valores de error)

6) podrias recortar las formulas definiendo nombres (que tendrian otro tipo de consecuencias)
y/o usar formatos personalizados para ocultar a partir de las celdas donde obtienes errores (cuando se agotan los datos)
y/o alargar un poco mas las formulas para condicionar si ya no hay datos poner p.e. una cadena de longitud cero =""
(etc. etc. etc.)

si cualquier duda (o informacion adicional)... comentas ?
saludos,
hector.

__ la exposicion de datos "tipo tabla" __
Hasta ahora.
T m1 m2 m3 m4 m5
a 3 1
b 3
y 2 6
r 1 7 1

T Val Mes
a 3 m1
a 1 m3
b 3 m3
y 2 m2
y 6 m4
r 1 m3
r 7 m4
r 1 m5

Preguntas similares