Suposições e esclarecimentos.
- Sua fórmula original não foi verificada. O exemplo abaixo usa dados simplificados e uma fórmula básica usando SUMIFS
- Supõe-se que você esteja usando Recuo à direita para inserir subitens. Se você estiver usando o Spaces por acaso, use o botão Recuo à direita para alinhar os subitens. Também é assumido que todos os seus itens são basicamente Alinhados à Esquerda nas respectivas células.
Neste exemplo, a tabela de entrada de amostra está nas células A1: A13 e a tabela de saída é F2: F14.
Abra o Editor VBA pressionando ALT + F11 . Insira um módulo (no menu Inserir) e cole o seguinte código nele.
Function IndLevl(cell As Range)
Application.Volatile
IndLevl = cell.IndentLevel
End Function
Isso cria uma Função Definida pelo Usuário (UDF) que aceita Cell como intervalo e retorna o nível de recuo como número. Nenhuma validação está em vigor, portanto, evite passar um intervalo de células como entrada, como A1: A4. Basta passar uma única célula como parâmetro, por ex. =IndLevl(A4)
Se estiver usando o Excel 2007 ou superior, salve o arquivo como .xlsm (Folha de Excel Ativada para Macro)
Agora, em sua tabela de saída, distorça a fórmula em um IF, verificando primeiro o Nível de Indentação e, em seguida, decidindo se deseja executar a fórmula ou apenas deixá-la em branco.
=IF(IndLevl(G3)>0,"",SUMIFS($C:$C,$A:$A,F3,$B:$B,1.2))
Arraste a fórmula para as células obrigatórias. Veja a imagem abaixo. Você pode envolver sua fórmula em um IF e, se necessário, convertê-la em uma fórmula de matriz conforme desejado.
Observe que a instrução Application.Volatile
torna a fórmula volátil. No entanto, ele não será executado se você alterar o nível de recuo mais tarde. Nesses casos, basta pressionar F9 para recalcular a folha.
Veja a imagem abaixo.