Copiar a soma das células selecionadas para a área de transferência

Às vezes leva muito tempo para chegar a algumas coisas. Mas quando JÁ foram inventados, depois do fato parecem óbvios e até banais. Da série “o que, era possível?”.

Desde as primeiras versões, a barra de status na parte inferior da janela do Microsoft Excel tradicionalmente exibia os totais das células selecionadas:

Copiar a soma das células selecionadas para a área de transferência

Se desejado, foi possível até clicar com o botão direito do mouse nesses resultados e selecionar no menu de contexto exatamente quais funções queremos ver:

Copiar a soma das células selecionadas para a área de transferência

E recentemente, nas últimas atualizações do Excel, os desenvolvedores da Microsoft adicionaram um recurso simples, mas engenhoso – agora, quando você clica nesses resultados, eles são copiados para a área de transferência!

Copiar a soma das células selecionadas para a área de transferência

Beleza. 

Mas e aqueles que ainda não (ou já?) possuem essa versão do Excel? É aqui que macros simples podem ajudar.

Copiando a soma das células selecionadas para a área de transferência usando uma macro

Abrir na guia revelador (Desenvolvedor) editor Visual Basic ou use este atalho de teclado outro+F11. Insira um novo módulo vazio via menu Inserir - Módulo e copie o seguinte código lá:

Sub SumSelected() If TypeName(Selection) <> "Range" Then Exit Sub With GetObject("New:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}") .SetText WorksheetFunction.Sum(Selection) .PutInClipboard End With End Sub  

Sua lógica é simples:

  • Primeiro vem a “proteção do tolo” – verificamos o que exatamente está destacado. Se não forem selecionadas células (mas, por exemplo, um gráfico), saia da macro.
  • Em seguida, usando o comando Obter objeto criamos um novo objeto de dados onde nossa soma de células selecionadas será armazenada posteriormente. Um código alfanumérico longo e incompreensível é, na verdade, um link para a ramificação do registro do Windows onde a biblioteca está localizada Biblioteca de objetos do Microsoft Forms 2.0, que pode criar tais objetos. Às vezes, esse truque também é chamado ligação tardia implícita. Se você não usar, então você teria que fazer um link para esta biblioteca no arquivo através do menu Ferramentas - Referências.
  • A soma das células selecionadas é considerada um comando WorksheetFunction.Sum(Seleção), e então o valor resultante é colocado na área de transferência com o comando Colocar na área de transferência

Para facilitar o uso, você pode, é claro, atribuir esta macro a um atalho de teclado usando o botão Macros aba revelador (Desenvolvedor — Macros).

E se você quiser ver exatamente o que foi copiado depois de executar a macro, você pode ativar o painel Clipboard usando a pequena seta no canto inferior direito do grupo correspondente em O principal (Home) aba:

Copiar a soma das células selecionadas para a área de transferência

Não só a quantidade

Se, além da quantia banal, você quiser outra coisa, poderá usar qualquer uma das funções que o objeto nos fornece PlanilhaFunção:

Copiar a soma das células selecionadas para a área de transferência

Por exemplo, existe:

  • Soma - soma
  • Média - média aritmética
  • Contagem – número de células com números
  • CountA – número de células preenchidas
  • CountBlank – número de células vazias
  • Min - valor mínimo
  • Máx – valor máximo
  • Mediana - mediana (valor central)
  • ... etc.

Incluindo filtros e colunas de linha ocultas

E se as linhas ou colunas estiverem ocultas (manualmente ou por um filtro) no intervalo selecionado? Para não levá-los em consideração nos totais, precisaremos modificar um pouco nosso código adicionando ao objeto Seleção propriedade Células Especiais(xlCellTypeVisible):

Sub SumVisible() If TypeName(Selection) <> "Range" Then Exit Sub With GetObject("New:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}") .SetText WorksheetFunction.Sum(Selection.SpecialCells(xlCellTypeVisible)) . PutInClipboard End With End Sub  

Neste caso, o cálculo de qualquer função total será aplicado apenas às células visíveis.

Se você precisa de uma fórmula viva

Se você sonhar, poderá criar cenários em que é melhor copiar não um número (constante), mas uma fórmula viva no buffer, que calcula os totais que precisamos para as células selecionadas. Nesse caso, você terá que colar a fórmula a partir de fragmentos, adicionando a ela a remoção de cifrões e substituindo a vírgula (que é usada como separador entre endereços de vários intervalos selecionados no VBA) por um ponto e vírgula:

Sub SumFormula() If TypeName(Selection) <> "Range" Then Exit Sub With GetObject("New:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}") .SetText "=СУММ(" & Replace(Replace(Selection. Endereço, ","", ";"), "$", "") & ")" .PutInClipboard End With End Sub  

Soma com condições adicionais

E, finalmente, para completamente maníacos, você pode escrever uma macro que resuma não todas as células selecionadas, mas apenas aquelas que satisfaçam as condições dadas. Assim, por exemplo, uma macro será parecida com a que coloca a soma das células selecionadas no Buffer, caso seus valores sejam maiores que 5 e ao mesmo tempo sejam preenchidos com qualquer cor:

 Sub CustomCalc() Dim myRange As Range If TypeName(Selection) <> "Range" Então Exit Sub Para Cada Célula Na Seleção Se cell.Value > 5 E cell.Interior.ColorIndex <> xlNone Então Se myRange É Nada Então Defina myRange = cell Else Set myRange = Union(myRange, cell) End If End If Next cell With GetObject("New:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}") .SetText WorksheetFunction.Sum(myRange) .PutInClipboard End With End Sub  

Como você pode imaginar facilmente, as condições podem ser definidas de qualquer forma – até formatos de célula – e em qualquer quantidade (inclusive ligando-as com operadores lógicos ou ou e). Há muito espaço para a imaginação.

  • Converter fórmulas em valores (6 maneiras)
  • O que são macros, como usá-las, onde inserir código Visual Basic
  • Informações úteis na barra de status do Microsoft Excel

Deixe um comentário