O que você precisa entender é que o absoluto das referências absolutas, conforme especificado pelo $
, não é absolutamente absoluto; -)
Agora que esse trava-língua está fora do caminho, deixe-me explicar.
O absoluto só se aplica ao copiar-colar ou preencher a fórmula. Inserir linhas acima ou colunas à esquerda de um intervalo absolutamente referenciado "deslocará" o endereço do intervalo de forma que os dados o intervalo apontem para permanecer o mesmo.
Além disso, inserir linhas ou colunas no meio do intervalo irá expandi-lo para abranger as novas linhas / colunas. Assim, para "adicionar" uma linha de dados a um intervalo (tabela), é necessário inseri-lo após a primeira linha de dados.
A maneira mais simples de permitir adicionar uma linha de dados acima do intervalo de dados atual é sempre ter uma linha de cabeçalho e incluir a linha de cabeçalho no intervalo real. Essa é exatamente a solução proposta por cybernetic.nomad em este comente .
Mas , ainda há mais um problema, e isso adiciona uma linha de dados após o fim da tabela. Basta digitar os novos dados na linha depois que a última linha de dados não funcionar. Nem irá inserir uma linha antes da linha após a última linha.
A solução mais simples para isso é usar uma linha especial "última", incluir essa linha no intervalo de dados e sempre acrescentar novas linhas inserindo antes nessa linha especial.
Eu normalmente reduzo a altura da linha e preencho as células com uma cor apropriada:
Paraoseuexemplo,afórmula"mais simples" completa seria:
=SUMIF(JUN!$G$1:$G$501,"Utilities",JUN!$H$1:$H$501)
Outra maneira de atingir o mesmo objetivo é usar uma fórmula dinâmica que se ajusta automaticamente à quantidade de dados na tabela. Existem algumas variações diferentes disso, dependendo das circunstâncias exatas e precisamente o que deve ser permitido à mesa.
Se, como é tipicamente o caso (seu exemplo, por exemplo), a tabela começa no topo da planilha, tem um cabeçalho de linha e os dados são contíguos sem intervalos, uma fórmula dinâmica simples seria:
=SUMIF(INDEX(JUN!$G:$G,2):INDEX(JUN!$G:$G,COUNTA(JUN!$G:$G)),"Utilities",INDEX(JUN!$H:$H,2):INDEX(JUN!$H:$H,COUNTA(JUN!$G:$G)))
Esta é uma solução melhor do que usar INDIRECT()
como
- Não é volátil e, portanto, a planilha é calculada com mais rapidez e
- Não vai quebrar se você inserir colunas à esquerda da tabela.
A técnica de fórmula dinâmica pode ser aprimorada ainda mais usando-a em um Fórmula Nomeada .
Obviamente, a solução melhor é referências estruturadas .