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.