Notifications
Clear all

somar grupos de números entre zeros

6 Posts
1 Usuários
0 Reactions
1,962 Visualizações
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Boa tarde,
tenho, em uma coluna, diversos valores, inclusive zeros. Por exemplo

1
4
0
0
3
1
0
2

No exemplo acima, preciso obter a soma de cada grupo separado pelos zeros, ou seja, 5 , 4 e 2. Preciso também saber o total de grupos, nesse caso igual a 3.

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 07/11/2010 4:36 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Caro Fatto, Boa Noite.

Acho que tem muito pouca informação para poder lhe passar alguma sugestão que seja realmente efetiva para solucionar o que você precisa.

a) O aparecimento dos zeros(0) tem algum padrão?

b) Pode haver a ocorrência de zeros em todas as células do intervalo solicitado?

c) Pode acontecer de não ter zeros nas células do intervalo solicitado?

d) A sugestão pode usar alguma coluna auxiliar para montar a resolução do problema?

Aguardo resposta.

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 07/11/2010 7:50 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Boa tarde Mazzaropi,
Desculpe a demora.
a) Os zeros ocorrem de forma aleatória.
b) Pode ocorrer sim de todo o intervalo ser de zeros.
c) Também pode acontecer de não aparecer nenhum zero no intervalo.
d) Podem ser usadas outras células para a solução.

Desde já agradeço seu interesse em me ajudar.

Grande abraço!

Francisco.

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 08/11/2010 9:22 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Se servir uma solução em VBA, cole a rotina abaixo em um Modulo e depois associe a mesma a um Botão ou tecla de atalho.

Supondo que os Valores estão na Coluna A os resultados serão mostrados na Coluna B.
Se quiser o resultado em outra Coluna, altere o valor em destaque :
ActiveSheet.Cells(consulta - 1, 2).Value = Valor

Sub SomaDescartaZero()
Dim Valor
Dim consulta As Integer
Dim FimBase

'Conta a qde de itens na Coluna A
FimBase = Range("a60000").End(xlUp).Row
'Começa na Linha 2(A2)
For consulta = 2 To FimBase

    While ActiveSheet.Cells(consulta, 1).Value <> "0"
        If IsEmpty(ActiveSheet.Cells(consulta, 1)) Then
            ActiveSheet.Cells(consulta - 1, 2).Value = Valor
            Valor = 0
        End If
        
        Valor = ActiveSheet.Cells(consulta, 1).Value + Valor
        consulta = consulta + 1
        
            If consulta > FimBase Then
                ActiveSheet.Cells(consulta - 1, 2).Value = Valor
            Exit Sub
            End If
    Wend

        If Valor = 0 Then
            ActiveSheet.Cells(consulta - 1, 2).Value = ""
        Else
            ActiveSheet.Cells(consulta - 1, 2).Value = Valor
        End If
    
    Valor = 0

    Next

End Sub

[]s

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 08/11/2010 7:22 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Olá Mauro,
Desculpe pela demora.
Sua solução funciona direitinho para mim.
Só que a coluna onde estão os números é a K e o resulatado deve ser na U.
Como eu não entendo de VBA peço, se possível, que me explique como faço essas mudanças no código.
Desde já fico muito agradecido.

Francisco

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 09/11/2010 10:26 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Francisco, as Colunas K e U equivalem respectivamente a numeração 11 e 21, é só contar as Colunas, então, para contar os valores na Coluna K, altere :

'Conta a qde de itens na Coluna A
FimBase = Range("a60000").End(xlUp).Row, para "k60000"

após isso, a linha abaixo :
'Começa na Linha 2
For consulta = 2 To FimBase

Define a variável como Linha 2, então temos :

.Cells(consulta, 1) ou seja .Cells(Linha, Coluna) = .Cells(linha 2 coluna 1(A)), adaptando para as Colunas que quer ficaria :
.Cells(consulta, 11) = Linha 2 Coluna K

e

Cells(consulta - 1, 21) Linha Incrementada em consulta = consulta + 1, Coluna U

é só fazer as alterações na segunda parte das linhas nos numeros referentes às Colunas.

[]s

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 09/11/2010 8:23 pm