Para este ejemplo, vamos a trabajar con el modelo de CONTOSO, vemos que en la tabla ventas, solo tenemos los ID, no los nombres, queremos crear una copia de la tabla ventas, pero cambiando los ID por sus nombres.
En una hoja nueva, en la celda A1, voy a traer los encabezados de la tabla ventas.
=Ventas[# Encabezados]
Los ID que debemos de rescatar son los de tienda, producto, promoción, canal, y, cliente.
Con la función SUSTITUIR, voy a sustituir la palabra ID por nada.
=SUSTITUIR(Ventas[# Encabezados];"ID";"")
Pero, ocurre que IDVenta, no debemos de sustituirlo, por que no lleva asociado ningún dato, entonces, voy a usar el condicional SI, para preguntar que, si uno de los encabezados es igual a IDVenta, que lo deje, en caso contrario, que sustituya la palabra ID.
=SI(Ventas[# Encabezados]="IDVenta";"IDVenta";SUSTITUIR(Ventas[# Encabezados];"ID";""))
Problema solventado, seguimos…
Como dije anteriormente, vamos a preparar las columnas con las que vamos a trabajar.
Lo hare a partir de la celda E1.
Vuelvo a traerme los encabezados.
=Ventas[# Encabezados]
Voy a concatenar la palabra Ventas, con una apertura de corchete, con los encabezados, y, con un cierre de corchete.
="Ventas" & "[" & Ventas[# Encabezados] & "]"
Ya tengo el nombre de tabla y de encabezado.
Voy a necesitar el nombre de cada tabla, y, el ID de cada tabla.
Por lo que me voy a traer de nuevo los encabezados, pero sustituyo la palabra ID por nada, concateno con un corchete de apertura, vuelvo a concatenar con los encabezados, concateno con un corchete de cierre, y, acepto.
=SUSTITUIR(Ventas[# Encabezados];"ID";"") & "[" & Ventas[# Encabezados] & "]"
Tenemos el nombre de cada tabla con su ID.
Pero, también voy a necesitar el encabezado con el nombre de cada ID, pues, voy a sustituir la palabra ID de la celda AE2 con el operador de rango derramado.
=SUSTITUIR(AE2#;"ID";"")
Como vamos a trabajar con las primeras cinco columnas, a partir de la celda AE4, voy a poner 1, en los encabezados que quiero, que son los cinco primeros, y, 0 en los demás.
Ahora, filtro AE2#, y, como argumento include, selecciono los ceros, y, unos.
=FILTRAR(AE3#;AE4:AR4)
Volvemos a donde colocamos los encabezados al principio del ejercicio.
En la celda A2, uso la función INDIRECTO de la celda AE5, que es el encabezado tienda de la tabla tienda.
=INDIRECTO(AE5)
Obtengo una matriz desbordada con todos los nombres de tienda de la tabla tienda.
Lo siguiente es buscar cada IDTienda de la tabla ventas, y, que nos devuelva el nombre de la tienda, por lo que tengo que buscar cada IDTienda de la hoja ventas, en cada IDTienda de la hoja tienda, y, que me devuelva el nombre, para ello, voy a hacer uso de la función BUSCARX.
Como argumento valor buscado, será INDIRECTO de la celda AE1, que son los IDTienda de la tabla ventas.
=BUSCARX(INDIRECTO(AE1)
El argumento matriz de búsqueda es INDIRECTO de la celda AE2, es decir, la columna IDTienda de la tabla tienda.
=BUSCARX(INDIRECTO(AE1);INDIRECTO(AE2)
Y, el argumento matriz devuelta, será INDIRECTO de la celda AE5, es decir, el nombre de la tienda.
=BUSCARX(INDIRECTO(AE1);INDIRECTO(AE2);INDIRECTO(AE5)
Cerramos paréntesis y aceptamos.
Ya tenemos los nombres de las tiendas a los que corresponde cada ID de la tabla ventas.
Arrastramos hacia la derecha, y, también tenemos los nombres de los demás encabezados.
Nos queda rellenar el resto de los encabezados.
Como ya los tenemos, volvemos a concatenar el nombre de la tabla ventas con el encabezado.
=INDIRECTO("Ventas" & "[" & F1 & "]")
Arrastramos hacia la derecha, y, ya lo tenemos.
Hemos creado una copia de la tabla ventas, pero con los nombres de los ID correspondientes.
Si queremos convertirlo en tabla, debemos de copiar las funciones, y, pegarla como valores, en caso contrario, nos dará un error de desbordamiento.
Comments