Suma condicional segun formato de celda

26/05/2004 - 15:11 por msfromuy | Informe spam
Hola a todos, necesito realizar una suma condicional en funcion de que un conjunto de celdas tengan un formato (trama con determinado color o subrayado), alguna idea
sld
Miguel

Preguntas similare

Leer las respuestas

#1 Víctor
26/05/2004 - 18:36 | Informe spam
Con permiso de Fernando Arroyo, te dejo una página suya
donde quizá encuentres respuesta a lo que buscas:
http://www.excelsp.com/funcperso01....ón%
20ContarColorFondo

:-)

Hola a todos, necesito realizar una suma condicional en


funcion de que un conjunto de celdas tengan un formato
(trama con determinado color o subrayado), alguna idea?
slds
Miguel
.

Respuesta Responder a este mensaje
#2 Fernando Arroyo
26/05/2004 - 20:49 | Informe spam
Al tratarse de celdas con formato condicional, la cosa se complica un poco.

Yo he usado alguna vez dos funciones escritas por Chip Pearson (ColorIndexOfCF y ActiveCondition), junto con otra escrita por mí (ContarColor):


Function ContarColor(rango As Range, color As Long)
Dim rngC As Range

For Each rngC In rango.Cells
If rngC.FormatConditions.Count > 0 Then
If ColorIndexOfCF(rngC) = color Then ContarColor = ContarColor + 1
ElseIf rngC.Interior.ColorIndex <> color Then ContarColor = ContarColor + 1
End If
Next rngC

Set rngC = Nothing
End Function


Function ColorIndexOfCF(Rng As Range, Optional OfText As Boolean = False) As Integer

Dim AC As Integer
AC = ActiveCondition(Rng)

If AC = 0 Then
If OfText = True Then
ColorIndexOfCF = Rng.Font.ColorIndex
Else
ColorIndexOfCF = Rng.Interior.ColorIndex
End If
Else
If OfText = True Then
ColorIndexOfCF = Rng.FormatConditions(AC).Font.ColorIndex
Else
ColorIndexOfCF = Rng.FormatConditions(AC).Interior.ColorIndex
End If
End If

End Function



Function ActiveCondition(Rng As Range) As Integer

Dim Ndx As Long
Dim FC As FormatCondition

If Rng.FormatConditions.Count = 0 Then
ActiveCondition = 0
Else
For Ndx = 1 To Rng.FormatConditions.Count
Set FC = Rng.FormatConditions(Ndx)
Select Case FC.Type
Case xlCellValue
Select Case FC.Operator
Case xlBetween
If CDbl(Rng.Value) >= CDbl(FC.Formula1) And _
CDbl(Rng.Value) <= CDbl(FC.Formula2) Then
ActiveCondition = Ndx
Exit Function
End If

Case xlGreater
If CDbl(Rng.Value) > CDbl(FC.Formula1) Then
ActiveCondition = Ndx
Exit Function
End If

Case xlEqual
If CDbl(Rng.Value) = CDbl(FC.Formula1) Then
ActiveCondition = Ndx
Exit Function
End If

Case xlGreaterEqual
If CDbl(Rng.Value) >= CDbl(FC.Formula1) Then
ActiveCondition = Ndx
Exit Function
End If

Case xlLess
If CDbl(Rng.Value) < CDbl(FC.Formula1) Then
ActiveCondition = Ndx
Exit Function
End If

Case xlLessEqual
If CDbl(Rng.Value) <= CDbl(FC.Formula1) Then
ActiveCondition = Ndx
Exit Function
End If

Case xlNotEqual
If CDbl(Rng.Value) <> CDbl(FC.Formula1) Then
ActiveCondition = Ndx
Exit Function
End If

Case xlNotBetween
If CDbl(Rng.Value) <= CDbl(FC.Formula1) Or _
CDbl(Rng.Value) >= CDbl(FC.Formula2) Then
ActiveCondition = Ndx
Exit Function
End If

Case Else
Debug.Print "UNKNOWN OPERATOR"
End Select


Case xlExpression
If Application.Evaluate(FC.Formula1) Then
ActiveCondition = Ndx
Exit Function
End If

Case Else
Debug.Print "UNKNOWN TYPE"
End Select

Next Ndx

End If

ActiveCondition = 0

End Function



La sintaxis es:

=ContarColor(Rango;Color)

donde Color es el código del color que se quiere contar. Debo avisarte que si el formato condicional es "Fórmula", la función puede no ser capaz de evaluarla correctamente.
Un saludo.


Fernando Arroyo
MS MVP - Excel



"msfromuy" escribió en el mensaje news:
Esta buena la funcion pero no me soluciono el problema porque tengo formato condicional en las celdas que quiero sumar (son subtotales que los quiero totalizar)
slds
Miguel


Con permiso de Fernando Arroyo, te dejo una página suya
donde quizá encuentres respuesta a lo que buscas:
http://www.excelsp.com/funcperso01....ón%
20ContarColorFondo

:-)

>Hola a todos, necesito realizar una suma condicional en
funcion de que un conjunto de celdas tengan un formato
(trama con determinado color o subrayado), alguna idea?
>slds
>Miguel
>.
>
Respuesta Responder a este mensaje
#3 Fernando Arroyo
26/05/2004 - 21:07 | Informe spam
Víctor, no sólo tienes el permiso sino que me siento honrado al ver que soy citado por cualquiera de los que participáis en este foro :-))
Un saludo.


Fernando


"Víctor" escribió en el mensaje news:12c7f01c4433f$9bc5d210$
Con permiso de Fernando Arroyo, te dejo una página suya
donde quizá encuentres respuesta a lo que buscas:
http://www.excelsp.com/funcperso01....ón%
20ContarColorFondo

:-)

Hola a todos, necesito realizar una suma condicional en


funcion de que un conjunto de celdas tengan un formato
(trama con determinado color o subrayado), alguna idea?
slds
Miguel
.

Respuesta Responder a este mensaje
#4 msfromuy
26/05/2004 - 21:41 | Informe spam
Gracias Fernando
con ContarFondo() no me va a funcionar, voy a tener que reformar la funcion para que SUME y el otro problema que tengo es que tengo formato condicional
sld
Miguel
Respuesta Responder a este mensaje
#5 Fernando Arroyo
27/05/2004 - 10:17 | Informe spam
Mira si te sirve este pequeño ejemplo que acabo de subir a la red:

http://www.excelsp.com/ejemplos/sum...cional.xls

He modificado la funcion ContarColor y he escrito una nueva llamada SumarColor.
Un saludo.


Fernando Arroyo
MS MVP - Excel


"msfromuy" escribió en el mensaje news:
Gracias Fernando,
con ContarFondo() no me va a funcionar, voy a tener que reformar la funcion para que SUME y el otro problema que tengo es que tengo formato condicional.
slds
Miguel
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida