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.

Você vai ajudar o desenvolvimento do site, compartilhando a página com seus amigos

wave wave wave wave wave