Comprar a Coleção de 15.000 Macros, Funções e Fórmulas do Excel        Dicas  


Questão 12: Como Obter subtotais?

Minha planilha contem duas colunas adjacentes. Uma coluna contem códigos. A outra coluna contem Valores em Reais. Não há linhas em branco. Os códigos diferem no número de caracteres. Alem disso há códigos repetidos, mas não é possível dizer a priori quantos códigos diferentes há, nem quantos elementos há relativamente a cada código. É possível programar-se a obtenção de subtotais ?

Solução 12:

Há três respostas possíveis para sua questão. O numero de caracteres do código não é relevante. O que importa é que códigos iguais pertencentes ao mesmo grupo formem blocos. Aplicar um Data Sort na sua tabela deve ser então o primeiro passo.

Mostrando a Tabela
Se você quer obter Subtotais relativamente a cada grupo de códigos e um Total Geral escreva :

.Subtotal GroupBy:=1, Function:=xlSum, TotalList:=Array(2)

Solução 12:

Escondendo a Tabela. Se voce quer mostrar apenas os Subtotais por grupo de códigos e um Total Geral relativamente a soma do conjunto escreva :

.Subtotal GroupBy:=1, Function:=xlSum, TotalList:=Array(2)
.Parent.Outline.ShowLevels RowLevels:=2

Solução 12:

Escondendo a Tabela. Se você quer obter somente um SubTotal relativamente ao conjunto, sem levar em conta os códigos escreva :

.Subtotal GroupBy:=1, Function:=xlSum, TotalList:=Array(2)
.Parent.Outline.ShowLevels RowLevels:=1

Imaginemos que na sua tabela (na Sheet1), as células B4 e C4 contenha os Labels (Código, Valor em Reais) e os demais dados estejam no range B5:Cn (onde n é indeterminado). A rotina abaixo lhe servirá de guia :

Sub TestandoSubTotais( )
Worksheets(1).Activate
Cells(4, 2).Select
With Worksheets(1).Cells(4, 2).CurrentRegion
.Subtotal GroupBy:=1, Function:=xlSum, TotalList:=Array(2)
End With
End Sub