No puedo encontrar una buena manera de resolver este problema. Intentaré resumir el problema lo mejor que pueda:
Utilizo el complemento Hyperion Essbase Excel para navegar dentro de los cubos OLAP. Lo que intento lograr aquí es asignar ciertas etiquetas a valores de una dimensión. Dentro de esta dimensión hay múltiples niveles de agrupación de datos, por lo que un nodo secundario puede tener múltiples niveles de padres. Puedo saber de antemano cuáles serán los miembros, pero están sujetos a cambios cada mes y encontrar miembros faltantes puede ser tedioso, así que lo que hacemos es usar los miembros principales y ampliarlos. Sin embargo, dentro de un padre puede haber varias etiquetas diferentes. He logrado parte de esto usando BUSCARV() y si la fila actual no se encuentra en mi tabla, miro una fila hacia abajo y arrastro esa fórmula, esto tiene el siguiente efecto no deseado:
He numerado lo que va junto. Como puede ver en mi ejemplo, el elemento "24566" también se encuentra en el elemento principal "FD120465". El resultado es que todos los elementos encontrados antes en el mismo grupo se asignan a "Gasto B", pero el resultado objetivo es que todos los elementos secundarios deben asignarse a "Gasto D" excepto "24566". Aquí está la fórmula que he usado en este ejemplo:
=IFERROR(VLOOKUP(C11,$C$3:$D$8,2,0), D12)
Se me han ocurrido varias formas de abordar esto, pero ninguna me gusta. Podría hacer dos fórmulas diferentes, una que solo considere los elementos secundarios y otra que solo considere los elementos principales. Si los elementos secundarios se colocan primero, no importa que se coloque la etiqueta incorrecta en el grupo ("24566" se etiquetaría como "Gasto D" en la parte naranja). Esto también tiene la desventaja de generar más trabajo (definir las regiones donde usar la fórmula 1 y la fórmula 2 y hacer el trabajo manualmente o exagerar con VBA...)
Otra forma es simplemente sacar cada elemento secundario y colocarlo en la tabla con su mapeo adecuado. El problema es que los padres están sujetos a tener más o menos elementos cada mes y el mapeo puede cambiar (aunque eso no debería suceder con tanta frecuencia), por lo que administrar cada elemento secundario será tedioso. La muestra que he proporcionado es pequeña en comparación con lo que tengo (15-20 hijos en un padre).
Esta es una especie de última oportunidad que le doy a esta tarea antes de conformarnos con la solución que tenga menos desventajas. ¿Existe una forma obvia (o incluso no tan obvia) de resolver este problema?limpiamente?
Gracias !
Respuesta1
Esto funciona SI quieres lo que sospecho que quieres y estás empezando desde donde sospecho que estás. (No es necesariamente la mejor manera de lograr el resultado que se obtiene a partir de los datos, pero al menos puede ayudar a aclarar lo que se requiere).
Agregue una columna auxiliar para que todos los niños tengan un padre (suponiendo que lo tengan):
B11=IF(LEFT(C11,2)="FD",C11,B12) (copiado según sea necesario)
=IFERROR(VLOOKUP(C11,$C$3:$D$8,2,FALSE),VLOOKUP(B11,$C$3:$D$8,2,FALSE))
(en D11, copiado tanto como sea necesario).
He asumido que las dos últimas entradas de la tabla contienen errores tipográficos.