No começo, eu concordo plenamente com o @Raystafarian, o Excel não é a ferramenta certa para isso.
No entanto, se você realmente quiser fazer isso aqui, aqui está uma solução com algumas colunas auxiliares:
- level: nível do item real na hierarquia (itens raiz tem nível 1, o nível das crianças é aumentado)
=IFERROR(INDEX([level],MATCH([@Category],[Item],0))+1,1) - código de nível: código em execução para cada item, exclusivo em NÍVEIS em
=CHAR(CODE("a")+COUNTIF($C$2:C2,[@level])-1) - código longo: código concatenado de pai & item e
=IF([@level]>1,INDEX([long code],MATCH([@Category],[Item],0)),"")&[@[level code]] - tem filho: booleano informando se o item tem filho
=COUNTIF([Category],[@Item])>0
Com este modelo, uma categoria contém todos os itens e subcategorias cujo código começa com a mesma sequência do código dos pais (por exemplo, se o código fruit for aa , então todos (grand ...) filhos de tem um código que começa com aa )
Respostasparasuasperguntas:
"How much total inventory do I have for Fruit?"
=COUNTIFS(Table1[long code],VLOOKUP(I3,Table1,5,FALSE)&"*",Table1[has child],FALSE)
apenas de acordo com o modelo, todos os itens com a mesma sequência inicial.
Eu não vejo aqui apenas itens e categorias (você vende dois tipos de frutas apples e grapes , você não tem um produto chamado fruit para vender). Se você quiser contar também as categorias, exclua apenas a segunda parte da fórmula.
"How many different kinds of Food do I sell?"
=SUMIF(Table1[long code],VLOOKUP(I10,Table1,5,FALSE)&"*",Table1[inventory])
Muito parecido com SUMIF
Aviso
Esta solução tem duas limitações:
- número de caracteres: atualmente começa em
a, que tem um código de 97, e o último caractere suportado na funçãoCHARé 255, portanto, ter mais de 158 categorias diferentes em qualquer nível gerará um erro ( você pode expandir um pouco usando um caractere com código menor para o primeiro) - à medida que seu banco de dados aumenta, provavelmente terá um desempenho reduzido (cálculos complexos), você pode definir o método de cálculo como "automático, exceto tabelas de dados" e calculá-lo manualmente quando precisar.

