No Excel, como posso somar todos os números acima da célula atual?


31

Eu quero ter uma coluna no Excel que consiste em um cabeçalho, um monte de números e, em seguida, tenho a soma desses números na parte inferior. Gostaria que a soma se adaptasse à inserção de novos números acima do total. Algo assim:

Numbers
 1
 2
 5
10

18        Total

Se posteriormente inserir 10 novos números no meio da lista, quero que a soma os inclua automaticamente.

Eu sei que a SUM()função pode somar uma coluna inteira, mas se o total também estiver nessa coluna, ele reclamará de uma referência circular. Como posso somar os números acima do total?

Respostas:


51

As funções ROW()e COLUMN()fornecerão a linha e coluna da célula atual. Use-os na ADDRESS()função para criar uma sequência representando o intervalo da parte superior da coluna atual até a linha acima do total. Em seguida, use a INDIRECT()função para transformar essa string em um intervalo real para atribuir à SUM()função. A fórmula para a célula total seria então:

=SUM(INDIRECT(ADDRESS(1,COLUMN())&":"&ADDRESS(ROW()-1,COLUMN())))

Coloque isso em qualquer célula de uma planilha e ela produzirá a soma de todos os números na coluna acima dessa célula.


1
@ user370646 Na verdade, eu apenas testei com o Excel 2010 usando vários tipos diferentes de fórmulas em diferentes células sendo adicionadas e funcionou corretamente. (Ele falha com um erro de referência circular se as células que estão sendo adicionadas contiverem uma fórmula que faça referência à célula com a soma.) Você tem exemplos específicos?
Mark Meuer 23/09/14

1
+1 vezes um milhão. Isso funciona no Planilhas Google, onde os intervalos das funções de soma - NÃO - são atualizados automaticamente. Muito obrigado.
seekerOfKnowledge

1
Acabei de testar no Planilhas Google e a combinação de funções funciona perfeitamente.
Sun

1
Esta resposta salvou minha vida!
KRazzy R

1
Parece funcionar também no LibreOffice Calc.
Dejan

6

Na verdade, você pode fazer o que quiser com facilidade =SUM()

Supondo que sua planilha do Excel tenha o seguinte design:

\|  A  |  B  |
-+-----+-----+
1|  1  |     |
2|  2  |     |
3|  3  |     |
4|  4  |     |
5|  5  |     |
6|     |     |
7|  15 |Total|

Assumng A7é =SUM(A1:A5), você pode adicionar mais linhas como quiser, como Excel irá expandir as =SUM's variam de acordo.

Suponha agora que eu selecione as linhas 2, 3 e 4 e insiro linhas. O resultado será o seguinte:

 \|  A  |  B  |
--+-----+-----+
 1|  1  |     |
 2|     |     |
 3|     |     |
 4|     |     |
 5|  2  |     |
 6|  3  |     |
 7|  4  |     |
 8|  5  |     |
 9|     |     |
10|  15 |Total|

A10iguais =SUM(A1:A8). Como tal, agora você pode inserir novos números à vontade.


1
Agora que você explicou, eu sabia desse comportamento. Mas, por alguma razão, pensei que seria útil ter apenas uma fórmula que sempre somasse acima da célula atual. Mas é obviamente mais fácil criar o intervalo de soma simples do que a fórmula complexa que eu criei. Eu era muito inteligente pela metade. Obrigado! (Eu vou ter que me consolo que eu pelo menos aprendi sobre indireta e endereço, que eu não tinha usado antes.)
Mark Meuer

2
Alterei a resposta aceita para a que eu publiquei, pois ela continua sendo votada mais de um ano depois, faz o trabalho que fiz na pergunta e aparentemente funciona nas planilhas do Google, onde essa resposta não ocorre. Mas, @Doktoro, sua resposta forneceu informações muito úteis e sou grato por isso.
Mark Meuer

1
Existe uma falha: insira uma linha no final (antes da linha vazia). Pelo menos no LibreOffice, isso deixará a fórmula SUM com seu intervalo original, ou seja, omitindo a nova linha. Minha solução: SUM(OFFSET(A$1; 0; 0; ROW(A7)-ROW(A$1); 1)). Como se refere a si mesmo e não a uma linha acima, sempre ajustará o intervalo corretamente.
Tilman Vogel

O @TilmanVogel deve ser uma resposta! Muito obrigado
Genarito

5

Esta resposta é específica para o Libra Office, mas também deve funcionar para o Excel.

Basicamente, se queremos mencionar explicitamente a linha / coluna a ser congelada, devemos mencionar o $ com essa linha / coluna.

* Existe também algo embutido que, quando você copia a fórmula para outras células, o Libra Office determina automaticamente como deve alterar os valores da fórmula.

Então, vamos supor que você tenha que adicionar todas as linhas G1: GN => onde N é o número da linha atual. Para isso, você deseja corrigir a linha do primeiro valor e manter outros valores como. Portanto, a fórmula será:

= SOMA (G $ 1: G1) -> para a 1ª linha e, em seguida, você pode copiar e colar a fórmula em outras células.

O Libra Office manterá G1 automaticamente como primeiro valor e alterará dinamicamente o segundo valor para G2, G3 e assim por diante para cada célula.


De acordo com a resposta de Apostolos55> = Sum ($ A1: A1) <, não funcionaria, pois apenas a coluna A será corrigida enquanto Row ainda varia quando a fórmula é copiada para outras células da mesma coluna. Portanto, o $ deve ser anexado antes da linha para obter os valores corretos na fórmula. Além disso, não explicou o que pode ser outras combinações, por isso forneci a alternativa. O $ deve ser aplicado na linha e na coluna se a célula precisar ser mantida constante.
Prateek

3

ok, Indireto () é volátil ... então, à medida que sua planilha cresce, ela fica mais lenta. Se ele combina com você, é melhor usar:

=Sum($A1:A1)

quando você arrasta essa fórmula para baixo, sempre terá um intervalo de A1 até a célula atual (ou anterior etc). Não volátil, muito rápido, muito mais simples!


Obrigado pela resposta. Por favor, ajude-me a entender como a sua resposta é diferente daquela de @Doktoro Reichard?
Mark Meuer

Esta é a soma que pode "seguir" ao lado de suas células, digamos na próxima coluna. Em seguida, com um IF, você só pode mostrar / calcular a última soma. Provavelmente não é o que você está procurando, mas é bom saber.
Apostolos55

Obrigado pela informação. Você está certo que ele não resolve o problema da pergunta original (que procura especificamente uma fórmula para somar o número acima da célula), mas pode ser útil em outras situações.
Mark Meuer
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.