Notifications
Clear all

Função subtotal somando valores na horizontal?

4 Posts
2 Usuários
0 Reactions
1,417 Visualizações
(@renatovs)
Posts: 14
Eminent Member
Topic starter
 

Existe alguma função, ou algum método que eu posso somar valores não ocultos numa linha da planilha?
Pelo que procurei, a função subtotal apenas funciona para valores na vertical...
Preciso que, ao ocultar uma coluna, o valor dessa coluna não entre numa soma que está sendo feita numa determinada célula...

Muito obrigado!

 
Postado : 10/05/2012 8:00 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Veja no topico http://www.tomasvasquez.com.br/blog/microsoft-office/vba-somando-apenas-as-celulas-visiveis-no-autofiltro
se atende ao que espera.
Para considerar somente colunas ficará assim o codigo:

Function Soma_Celulas_Visiveis(Cells_To_Sum As Object)
    Application.Volatile
    For Each cell In Cells_To_Sum
        'If cell.Rows.Hidden = False Then
            If cell.Columns.Hidden = False Then
                Total = Total + cell.Value
            End If
        'End If
    Next
    Soma_Celulas_Visiveis = Total
End Function
 
Postado : 10/05/2012 11:02 am
(@renatovs)
Posts: 14
Eminent Member
Topic starter
 

Funciona mais ou menos...
Pelo que vi, esse código só funciona se primeiro eu ocultar as colunas e depois inserir a fórmula... aí ele só soma as células visíveis...
Mas no meu caso preciso deixar a fórmula pronta, e aí quando eu ocultar uma coluna, a fórmula atualiza-se automaticamente...

 
Postado : 11/05/2012 11:54 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

É isso é um problema pois o Esconder coluna aparentemente não gera (pelo menos não achei ainda) um evento para disparar a atualização do calculo.

Paliativos:
Então se "deixar" as formulas prontas e após esconder a(s) coluna(s) tecle "F9" (Força o recalculo manualmente)

Ou então cole o codigo abaixo na folha de codigo de "Esta pasta de trabalho", e sempre que mudar de celula vai recalcular a planilha

Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)

Calculate

End Sub
 
Postado : 11/05/2012 2:32 pm