Não consigo encontrar uma boa maneira de resolver esse problema. Tentarei resumir a questão da melhor maneira possível:
Eu uso o suplemento Hyperion Essbase Excel para navegar dentro de cubos OLAP. O que estou tentando realizar aqui é mapear certos rótulos para valores de uma dimensão. Dentro desta dimensão existem vários níveis de agrupamento de dados, de modo que um nó filho pode ter vários níveis de pais. Posso saber de antemão quais serão os membros, mas eles estão sujeitos a alterações todos os meses e encontrar membros ausentes pode ser entediante, então o que fazemos é usar os membros pais e ampliar seus membros. No entanto, dentro de um pai pode haver vários rótulos diferentes. Consegui parte disso usando VLOOKUP() e se a linha atual não for encontrada em minha tabela, olho uma linha para baixo e arrasto essa fórmula, isso tem o seguinte efeito indesejável:
Eu numerei o que combina. Como você pode ver no meu exemplo, o elemento “24566” também é encontrado no pai “FD120465”. O resultado é que todos os elementos encontrados antes dele no mesmo grupo são mapeados para "Despesa B", mas o resultado desejado é que todos os elementos filhos devem ser mapeados para "Despesa D", mas "24566". Aqui está a fórmula que usei neste exemplo:
=IFERROR(VLOOKUP(C11,$C$3:$D$8,2,0), D12)
Existem várias maneiras de lidar com isso que eu descobri, mas nenhuma que eu goste. Eu poderia fazer duas fórmulas diferentes, uma que analisasse apenas os elementos filhos e outra que analisasse apenas os elementos pais. Se os elementos filhos forem colocados primeiro, não importa que o rótulo errado seja colocado no grupo ("24566" seria rotulado como "Despesa D" na parte laranja). Isso também tem a desvantagem de gerar mais trabalho (definir as regiões onde usar a fórmula 1 e a fórmula 2 e fazer o trabalho manualmente ou exagerar com o VBA...)
Outra maneira é simplesmente retirar cada elemento filho e colocá-lo na tabela com seu mapeamento adequado. O problema é que os pais estão sujeitos a ter mais ou menos itens a cada mês e o mapeamento pode mudar (embora isso não deva acontecer com tanta frequência), portanto, gerenciar cada elemento filho será entediante. A amostra que forneci é pequena em comparação com o que tenho (15 a 20 filhos por pai).
Esta é uma última tentativa que estou dando nesta tarefa antes de nos contentarmos com a solução que tem menos desvantagens. Existe uma maneira óbvia (ou mesmo não tão óbvia) de resolver este problemade forma limpa?
Obrigado !
Responder1
Isso funciona se você quiser o que eu suspeito que deseja e estiver começando de onde suspeito que esteja. (Não é necessariamente a melhor maneira de alcançar o resultado obtido a partir dos dados, mas pode pelo menos ajudar a esclarecer o que é necessário.)
Adicione uma coluna auxiliar para que todos os filhos tenham um pai (supondo que tenham):
B11=IF(LEFT(C11,2)="FD",C11,B12) (copiado conforme necessário)
=IFERROR(VLOOKUP(C11,$C$3:$D$8,2,FALSE),VLOOKUP(B11,$C$3:$D$8,2,FALSE))
(em D11, copiado até onde for necessário).
Presumi que as duas entradas inferiores da tabela contêm erros de digitação.