Notifications
Clear all

Celula colorida não pode ser incluida em soma total

13 Posts
3 Usuários
0 Reactions
2,058 Visualizações
 gts1
(@gts1)
Posts: 0
New Member
Topic starter
 

Prezados, preciso de uma ajuda.

Preciso fazer que em uma serie de celulas somadas, ao pintar uma das celulas de verde (por exemplo) ela não seja mais incluida na soma total. De forma que se em algum momento eu pintasse todas as celulas, a soma total ficaria 0.

no aguardo,

Att,

gabriel

 
Postado : 24/08/2015 8:11 am
(@mprudencio)
Posts: 0
New Member
 

Disponibiliza um modelo (Layout) com alguns dados para teste isso ajuda na sua solução.

 
Postado : 24/08/2015 8:24 am
 gts1
(@gts1)
Posts: 0
New Member
Topic starter
 

Olá MArcelo, como faço isso?

 
Postado : 24/08/2015 8:47 am
 gts1
(@gts1)
Posts: 0
New Member
Topic starter
 

1
10
30
24
11
SOMA TOTAL 76

Caso eu pintasse a celula (1) de alguma cor, queria que a SOMA TOTAL a ignorasse (sem eu ter que apagar o numero ou a própia celula). Assim a soma total seria de 75.

É possível fazer esta condição, pois não consegui?

 
Postado : 24/08/2015 9:09 am
(@issamu)
Posts: 0
New Member
 

Olá!
O que você deseja fazer, eu só consigo visualizar uma solução com VBA.
Você terá que desenvolver uma UDF (User defined Function) que cumpra este propósito. Um exemplo de UDF simples para isso seria:

Public Function SOMASEMCOR(rng As Excel.Range) As Long
Dim sum As Long
Dim cell As Excel.Range
For Each cell In rng
    If cell.Interior.ColorIndex = -4142 Then
        sum = sum + cell.Value
    End If
Next cell
SOMASEMCOR = sum
End Function

Entretanto, a função não é volátil para alteração da cor da célula, ou seja, ela não se recalculará quando pintar a célula. A melhor alternativa que achei para esta situação por enquanto é usar o código ActiveSheet.Calculate no evento Selection_change da planilha, pois ainda não descobri uma forma de calcular a planilha quando só se altera a cor da célula. Estou curioso para saber se existe solução para isso. O código para o evento fica:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
ActiveSheet.Calculate
End Sub

Com a UDF desenvolvida, você deve aplicar a função na planilha como se fosse a função SOMA, por exemplo: =SOMASEMCOR(A2:A10)

Quando você pintar uma célula do intervalo e selecionar qualquer outra célula, a função vai se atualizar.

Abs!

 
Postado : 24/08/2015 10:40 am
(@mprudencio)
Posts: 0
New Member
 

Ja foi para minha lista de macros para uso futuro, na verdade ja vou fazer uso dela imediatamente.

 
Postado : 24/08/2015 10:58 am
(@issamu)
Posts: 0
New Member
 

Achei a solução para a questão da atualização da fórmula!!

No link abaixo tem duas soluções. A primeira, testei mas não consegui fazer funcionar... A segunda tem o arquivo disponível para download e funciona como esperado, só precisaria adicionar a linha Application.Volatile na UDF que passei. Testei e funcionou bem! Mais um dia de aprendizado!!

https://sites.google.com/site/e90e50fx/home/sum-by-color-calculate-when-color-changed

 
Postado : 24/08/2015 12:36 pm
 gts1
(@gts1)
Posts: 0
New Member
Topic starter
 

Boa noite a todos! Que ótimo que é possível resolver esta questão!

Só tem um porém, não entendi 99% do que vocês falaram para eu fazer.Rs.

Alguém com paciencia poderia explicar (talvez um passo-a-passo) de como/onde/que jeito inserir este "códigos" (ex: UDH, Volatile, linha aplication :shock: )? Isso me ajudaria e talvez a outros que não tenham noção aprofundada de excell também.

Muito obrigado,

Abraço,

Gabriel

 
Postado : 24/08/2015 9:48 pm
(@mprudencio)
Posts: 0
New Member
 

Faz assim:

Abre sua planilha com ela aberta abra o editor de vba Alt + F11

Na na tela aberta va em inserir modulo

copie o primeiro codigo que nosso colega Issamu escreveu e cole nessa pagina aberta (modulo1) o segundo codigo no lado esquerdo da tela tem uma coluna com todas as suas planilhas va em esta pasta de trabalho e cole o segundo codigo.

Na planilha digite =somasemcor(seu intervalo a ser somado) para atualizar o resultado utilize F2 Enter na celula que estiver essa formula.

 
Postado : 25/08/2015 7:52 am
 gts1
(@gts1)
Posts: 0
New Member
Topic starter
 

Não deu certo =/

Fiz conforme o colega falou. Código 1 no modulo1 e o segundo codigo na barra da esquerda em "ThisWorkbook". (Ai dei um salvar, não sei se era isso!)

Voltei na planilha, ele encontra a função =somasemcor, mas não faz nada quando pinto e aperto F2!

Alguma outra sugestão?

PS:

Os codigos que copiei no modulo1:

Public Function SOMASEMCOR(rng As Excel.Range) As Long
Dim sum As Long
Dim cell As Excel.Range
For Each cell In rng
If cell.Interior.ColorIndex = -4142 Then
sum = sum + cell.Value
End If
Next cell
SOMASEMCOR = sum
End Function

E no ThisWorkbook:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
ActiveSheet.Calculate
End Sub

 
Postado : 25/08/2015 8:26 am
 gts1
(@gts1)
Posts: 0
New Member
Topic starter
 

CONSEGUI!!! :D

Problema 2:

Quando eu tento usar a =somasemcor em mais de uma coluna ao mesmo tempo, a formula morre (#VALUE!). Se eu como números de uma unica e mesma coluna, ok. Se tento fazer essa soma de numeros de 2 ou mais colunas diferentes, erro!

O que poderia ser isso?

Muito obrigado

 
Postado : 25/08/2015 11:43 am
(@mprudencio)
Posts: 0
New Member
 

Tem que salvar como pasta habilitada para macros

Olha ae

 
Postado : 26/08/2015 7:39 am
(@mprudencio)
Posts: 0
New Member
 

CONSEGUI!!! :D

Problema 2:

Quando eu tento usar a =somasemcor em mais de uma coluna ao mesmo tempo, a formula morre (#VALUE!). Se eu como números de uma unica e mesma coluna, ok. Se tento fazer essa soma de numeros de 2 ou mais colunas diferentes, erro!

O que poderia ser isso?

Muito obrigado

Qto a este problema vc vai precisar fazer da seguinte forma =somasemcor(intervalo1)+somasemcor(intervalo2)+somasemcor(intervalo n)

 
Postado : 29/08/2015 3:54 pm