Função de soma VBA (intervalos, colunas e mais)

Este tutorial mostrará como usar a função Excel Sum no VBA

A função de soma é uma das funções do Excel mais amplamente usadas e provavelmente a primeira que os usuários do Excel aprendem a usar. O VBA não tem realmente um equivalente - um usuário tem que usar a função embutida do Excel no VBA usando o WorkSheetFunction objeto.

Sum WorksheetFunction

O objeto WorksheetFunction pode ser usado para chamar a maioria das funções do Excel que estão disponíveis na caixa de diálogo Inserir Função no Excel. A função SUM é uma delas.

123 Sub TestFunctionRange ("D33") = Application.WorksheetFunction.Sum ("D1: D32")End Sub

Você pode ter até 30 argumentos na função SUM. Cada um dos argumentos também pode se referir a um intervalo de células.

Este exemplo abaixo irá somar as células D1 a D9

123 Sub TestSum ()Intervalo ("D10") = Application.WorksheetFunction.SUM ("D1: D9")End Sub

O exemplo a seguir adicionará um intervalo na coluna D e um intervalo na coluna F. Se você não digitar o objeto Aplicativo, ele será assumido.

123 Sub TestSum ()Intervalo ("D25") = WorksheetFunction.SUM (Intervalo ("D1: D24"), Intervalo ("F1: F24"))End Sub

Observe que, para um único intervalo de células, você não precisa especificar a palavra ‘intervalo’ na fórmula na frente das células, ela é assumida pelo código. No entanto, se você estiver usando vários argumentos, precisará fazer isso.

Atribuindo um resultado de Soma a uma Variável

Você pode querer usar o resultado de sua fórmula em outro lugar no código, em vez de escrevê-lo diretamente de volta para o intervalo do Excel. Se for esse o caso, você pode atribuir o resultado a uma variável para usar posteriormente em seu código.

1234567 Sub AssignSumVariable ()Dim result as Double'Atribuir a variávelresultado = WorksheetFunction.SUM (Range ("G2: G7"), Range ("H2: H7"))'Mostra o resultadoMsgBox "O total dos intervalos é" e resultadoEnd Sub

Soma um objeto de alcance

Você pode atribuir um grupo de células ao objeto Range e, em seguida, usar esse objeto Range com o WorksheetFunction objeto.

123456789 Sub TestSumRange ()Dim rng como alcance'atribuir o intervalo de célulasDefinir rng = intervalo ("D2: E10")'use o intervalo na fórmulaIntervalo ("E11") = WorksheetFunction.SUM (rng)'libere o objeto de alcanceDefinir rng = NadaEnd Sub

Soma vários objetos de intervalo

Da mesma forma, você pode somar vários objetos de intervalo.

123456789101112 Sub TestSumMultipleRanges ()Dim rngA como intervaloDim rngB como intervalo'atribuir o intervalo de célulasDefinir rngA = intervalo ("D2: D10")Definir rngB = intervalo ("E2: E10")'use o intervalo na fórmulaIntervalo ("E11") = WorksheetFunction.SUM (rngA, rngB)'libere o objeto de alcanceDefinir rngA = NadaDefinir rngB = NadaEnd Sub

Soma toda a coluna ou linha

Você também pode usar a função Soma para somar uma coluna inteira ou uma linha inteira

Este procedimento abaixo irá somar todas as células numéricas na coluna D.

123 Sub TestSum ()Intervalo ("F1") = WorksheetFunction.SUM (Intervalo ("D: D")End Sub

Embora este procedimento abaixo irá somar todas as células numéricas na linha 9.

123 Sub TestSum ()Intervalo ("F2") = WorksheetFunction.SUM (Intervalo ("9: 9")End Sub

Soma um Array

Você também pode usar WorksheetFunction.Sum para adicionar valores em uma matriz.

123456789101112 Sub TestArray ()Dim intA (1 a 5) como inteiroDim SumArray As Integer'preencher a matrizintA (1) = 15intA (2) = 20intA (3) = 25intA (4) = 30intA (5) = 40'some a matriz e mostre o resultadoMsgBox WorksheetFunction.SUM (intA)End Sub

Usando a função SumIf

Outra função de planilha que pode ser usada é a função SOMASE.

123 Sub TestSumIf ()Intervalo ("D11") = WorksheetFunction.SUMIF (Intervalo ("C2: C10"), 150, Intervalo ("D2: D10"))End Sub

O procedimento acima só adicionará as células no intervalo (D2: D10) se a célula correspondente na coluna C = 150.

Fórmula de Soma

Quando você usa o WorksheetFunction.SUM para adicionar uma soma a um intervalo em sua planilha, uma soma estática é retornada, não uma fórmula flexível. Isso significa que quando seus números no Excel mudam, o valor que foi retornado pelo WorksheetFunction não mudará.

No exemplo acima, o procedimento TestSum somou Range (D2: D10) e o resultado foi colocado em D11. Como você pode ver na barra de fórmulas, esse resultado é uma figura e não uma fórmula.

Se algum dos valores mudar, portanto, no intervalo (D2: D10), o resultado em D11 será NÃO mudança.

Em vez de usar o WorksheetFunction.SUM, você pode usar o VBA para aplicar uma função de soma a uma célula usando o Fórmula ou FormulaR1C1 métodos.

Método de Fórmula

O método da fórmula permite que você aponte especificamente para um intervalo de células, por exemplo: D2: D10 conforme mostrado abaixo.

123 Sub TestSumFormulaIntervalo ("D11"). Fórmula = "= SOMA (D2: D10)"End Sub

Método FormulaR1C1

O método FromulaR1C1 é mais flexível, pois não o restringe a um determinado intervalo de células. O exemplo abaixo nos dará a mesma resposta que o anterior.

123 Sub TestSumFormula ()Intervalo ("D11"). FormulaR1C1 = "= SOMA (R [-9] C: R [-1] C)"End Sub

No entanto, para tornar a fórmula mais flexível, poderíamos alterar o código para ficar assim:

123 Sub TestSumFormula ()ActiveCell.FormulaR1C1 = "= SOMA (R [-9] C: R [-1] C)"End Sub

Onde quer que você esteja em sua planilha, a fórmula irá somar as 8 células diretamente acima dela e colocar a resposta em seu ActiveCell. O intervalo dentro da função SUM deve ser referido usando a sintaxe de linha (R) e coluna (C).

Ambos os métodos permitem que você use fórmulas do Excel Dinâmico no VBA.

Agora haverá uma fórmula em D11 em vez de um valor.

wave wave wave wave wave