Função SubTotal com Condição VBA

MR
Marcos Rieper

Especialista em Excel

08 de fevereiro de 2011 Atualizado 08 de julho de 2026 2 min de leitura
Função SubTotal com Condição VBA

Objetivo: Utilizar a função subtotal com uma condição de igualdade. Exemplo: Quantidade de veículos Gol em um intervalo de dados com filtro, ou a soma dos valores dos veículos GOL filtrados no intervalo.

A função subtotal tem por objetivo trabalhar com várias funções em dados filtrados, mas ás vezes é necessário que estas informações sejam filtradas  mesmo na exibição dos dados, como é o caso da figura acima, aonde estão sendo contados apenas os veículos GOL e somado apenas o valor destes mesmos veículos.

A função VBA abaixo realiza o retorno de um intervalo de dados que atende ao critério de filtro, sendo desta forma utilizado no lugar da seleção dos dados na função SubTotal.

'fSubTotalCondicao
'Esta função traz um range de dados conforme a condição determinada
'lRange = intervalo de busca de dados
'lRngValor = intervalo de valores para funções diferentes de contagem
Function fSubTotalCondicao(ByVal lRange As Range, ByVal vValor As Variant, Optional ByVal lRngValor As Range) As Range

    Application.Volatile

    Dim lRangeSelect    As Range
    Dim lRng            As Range
    Dim lCel            As Range
    Dim lSelect         As Range
    Dim lCol            As Long

    Set lRangeSelect = lRange.SpecialCells(xlCellTypeVisible)

    If lRngValor Is Nothing Then
        For Each lCel In lRangeSelect
            If lCel.Value = vValor Then
                If fSubTotalCondicao Is Nothing Then
                    Set fSubTotalCondicao = Range(CStr(lCel.Address))
                Else
                    Set fSubTotalCondicao = Union(Range(CStr(lCel.Address)), Range(CStr(fSubTotalCondicao.Address)))
                End If
            End If
        Next lCel
    Else
        lCol = lRngValor.Column
        For Each lCel In lRangeSelect
            If lCel.Value = vValor Then
                If fSubTotalCondicao Is Nothing Then
                    Set fSubTotalCondicao = Range(CStr(Cells(lCel.Row, lCol).Address))
                Else
                    Set fSubTotalCondicao = Union(Range(CStr(Cells(lCel.Row, lCol).Address)), Range(CStr(fSubTotalCondicao.Address)))
                End If
            End If
        Next lCel
    End If
End Function

A utilização da função é a seguinte:

fSubTotalCondicao(ByVal lRange As Range, ByVal vValor As Variant, Optional ByVal lRngValor As Range) As Range

  • lRange = Intervalo aonde será realizado o filtro
  • vValor = Valor que será filtrado
  • lRngValor = Intervalo aonde serão aplicadas opções diferentes de contagem, tal como soma por exemplo. Este parâmetro é opcional.

Para implementá-la você deve seguir o artigo: http://guiadoexcel.com.br/criando-funcoes-proprias-globais.

Abaixo o download do exemplo:

Download — baixe aqui: SubTotalComFiltro

Preencha seus dados para receber o link de download no seu e-mail.

Marcos Rieper

Principais recursos

Confira o que este material oferece para você.

Organização por data e etapas
Classificação automática
Ranking e destaques
Fluxos e etapas automáticas
Dashboard com indicadores
Atualização automática por fórmulas

Perguntas frequentes

O material é realmente gratuito?

Sim. O acesso é gratuito e não exige cadastro.

Preciso ter o Excel instalado?

Recomendamos o Excel 2013 ou superior para todos os recursos.

Como faço para receber atualizações?

As atualizações são automáticas dentro da própria planilha.

Funciona no Excel do Mac?

Sim, funciona no Excel para Windows e para Mac.

Funciona no celular?

É possível visualizar no app do Excel; a edição completa é no computador.

Planilhas relacionadas

Planilha de Fluxo de Caixa

Planilha de Fluxo de Caixa

(1.327)

R$ 89,90

Controle de Estoque

Controle de Estoque

(962)

R$ 69,90

Planilha Financeira Empresarial

Planilha Financeira Empresarial

(1.254)

R$ 79,90

Dashboard Financeiro no Excel

Dashboard Financeiro no Excel

(689)

R$ 49,90

Continue lendo

Curso Excel Master — Básico ao Avançado, VBA, PowerPoint e mais

Receba conteúdos e novidades direto no seu e-mail

Dicas, tutoriais, planilhas gratuitas e muito mais.

Não enviamos spam. Cancele quando quiser.

Download imediato

Acesso na hora após a compra

Compra 100% segura

Seus dados protegidos com SSL

Acesso vitalício

Use para sempre, sem mensalidades

Suporte via WhatsApp

Atendimento rápido e humanizado