Suma condicional

18/10/2007 - 10:46 por Dr. Trucho | Informe spam
¡Hola!
Necesito saber cómo hacer una suma de las celdas que cumplan los siguientes
requisitos:
- color de la celda
- contenido de la celda.

La idea es "ver el color de la celda -> si cumple una condición, ver el
contenido -> si cumple otra condición, sumar 1; si no, no sumar 1".

Hay un módulo que me cuenta las celdas por el color, con lo que parte del
problema lo tengo medio resuelto (espero...).

¿Hay alguna manera de hacer esto? Gracias por adelantado.

Un saludo.

Preguntas similare

Leer las respuestas

#1 Héctor Miguel
18/10/2007 - 20:06 | Informe spam
hola, !

Necesito saber como hacer una suma de las celdas que cumplan los siguientes requisitos:
- color de la celda
- contenido de la celda.
La idea es "ver el color de la celda -> si cumple una condicion, ver el contenido -> si cumple otra condicion, sumar 1; si no, no sumar 1".
Hay un modulo que me cuenta las celdas por el color, con lo que parte del problema lo tengo medio resuelto (espero...).
Hay alguna manera de hacer esto? Gracias por adelantado.



prueba usando la funcion sumaproducto (p.e.)
=sumaproducto(--(aqui_tu_funcion_de_colores),--(aqui_el_mismo_rango = aqui_tu_condicion))

si cualquier duda (o informacion adicional)... comentas ?
saludos,
hector.
Respuesta Responder a este mensaje
#2 Dr. Trucho
19/10/2007 - 09:31 | Informe spam
¡Hola!

"Héctor Miguel" wrote:

hola, !
prueba usando la funcion sumaproducto (p.e.)
=sumaproducto(--(aqui_tu_funcion_de_colores),--(aqui_el_mismo_rango = aqui_tu_condicion))

si cualquier duda (o informacion adicional)... comentas ?
saludos,
hector.



Pues no, no ha servido. Gracias, de todas formas.

A ver si expandiendo la explicación...

El problema es contar el número de celdas, según las condiciones:
- color de fondo (cuatro colores; pero esto está solucionado)
- contenido (cuatro posibilidades).

La idea es que, mediante una fórmula, pueda hacer una suma en base al color
y al contenido de la celda. De esta manera, sacar 16 celdas (4 colores, 4
contenidos) en las que se muestren los resultados.

He probado con SUMA y con SUMA.SI, pero no hay maneras.

No sé si el problema es que el conteo de las celdas coloreadas lo hace una
función.

Gracias, y un saludo.
Dr. Trucho
Respuesta Responder a este mensaje
#3 Héctor Miguel
19/10/2007 - 14:29 | Informe spam
hola, (...) ?

1) ya estaras enterado que no existe funcion "integrada" en excel que cuente/sume por condicion de colores

2) debes saber que tampoco existe un "evento" que pueda detectar un (simple) cambio de formato (como aplicar colores)

3) para lo primero se requiere escribir codigo para una funcion personalizada y para lo segundo volver dicha funcion "volatil"

4) para "estar en condiciones" de poder ofrecer alguna propuesta de -posible- solucion...
-> es necesario que expongas detalles mas... "concretos" (los que no se pueden ver desde este lado del mensaje) p.e.

a) cual es el rango y como/donde es que "se condiciona" el color ?
para esto es necesario que expongas el codigo de la funcion que ya estas utilizando y algun "ejemplo" del uso

b) cual es (o de donde se puede tomar) la condicion adicional al color que ya tienes solucionado con la funcion que mencionas

c) es probable que pueda agregarse algun argumento a la funcion que ya utilizas...
o que (al final de cuentas) SI resute "funcional" el uso de la funcion sumaproducto (como te recomendaba inicialmente) -???-

si cualquier duda (o informacion adicional mas... concreta/precisa/detallada/...)... comentas ?
saludos,
hector.

__ la consulta original __
prueba usando la funcion sumaproducto (p.e.)
=sumaproducto(--(aqui_tu_funcion_de_colores),--(aqui_el_mismo_rango = aqui_tu_condicion))



Pues no, no ha servido. Gracias, de todas formas.
A ver si expandiendo la explicacion...
El problema es contar el numero de celdas, segun las condiciones:
- color de fondo (cuatro colores; pero esto esta solucionado)
- contenido (cuatro posibilidades).

La idea es que, mediante una formula, pueda hacer una suma en base al color y al contenido de la celda.
De esta manera, sacar 16 celdas (4 colores, 4 contenidos) en las que se muestren los resultados.

He probado con SUMA y con SUMA.SI, pero no hay maneras.

No se si el problema es que el conteo de las celdas coloreadas lo hace una funcion.
Respuesta Responder a este mensaje
#4 Dr. Trucho
22/10/2007 - 09:44 | Informe spam
1) ya estaras enterado que no existe funcion "integrada" en excel que


cuente/sume por condicion de colores
Lo estoy, gracias. Este problema ya está solucionado. Hay una función que
encontré, y que se tiene que escribir como módulo, que me cuenta, en base al
color de fondo de una celda concreta, el número de veces (la suma) de un
rango determinado. Lo que escribo en la celda es:
"=fórmula(celda_donde_está_el_color_original;rango)"

2) debes saber que tampoco existe un "evento" que pueda detectar un (simple) cambio de formato (como aplicar colores)


También. Gracias.

3) para lo primero se requiere escribir codigo para una funcion personalizada y para lo segundo volver dicha funcion "volatil"

4) para "estar en condiciones" de poder ofrecer alguna propuesta de -posible- solucion...
-> es necesario que expongas detalles mas... "concretos" (los que no se pueden ver desde este lado del mensaje) p.e.

a) cual es el rango y como/donde es que "se condiciona" el color ?
para esto es necesario que expongas el codigo de la funcion que ya estas utilizando y algun "ejemplo" del uso


El código de la función:

Function ContarColorFondo(rngCeldaColor, rngRangoAContar As Range) As Double
If rngCeldaColor.Cells.Count <> 1 Then Exit Function
Dim rngCelda As Range, dblAcumulado As Double, intColorMuestra As Integer

intColorMuestra = rngCeldaColor.Interior.ColorIndex

For Each rngCelda In rngRangoAContar
If rngCelda.Interior.ColorIndex = intColorMuestra Then dblAcumulado =
dblAcumulado + 1
Next rngCelda

ContarColorFondo = dblAcumulado
End Function


b) cual es (o de donde se puede tomar) la condicion adicional al color que ya tienes solucionado con la funcion que mencionas

c) es probable que pueda agregarse algun argumento a la funcion que ya utilizas...
o que (al final de cuentas) SI resute "funcional" el uso de la funcion sumaproducto (como te recomendaba inicialmente) -???-


No resulta funcional, porque lo que hace esa función, finalmente, es una
multiplicación. Lo que busco es una suma _relativamente_ condicional.

Trato de detallar al máximo mi problema:
Tengo 9 páginas, con cuatro columnas cada una, y un numero variable de filas
(éstas, abarcan desde una fila, hasta 350).

El orden de las columnas es:
- un número
- un nombre
- una empresa (con cuatro posibilidades: empresa1, empresa2, empresa3,
empresa4); esta es la columna sobre la que tengo que hacer el conteo
- una respuesta booleana (SI/NO)

El problema es que tengo que hacer un conteo de la tercera columna (en la
que figuran las empresas), para saber cuántas empresas han hecho cuánto
trabajo. La solución (y no sé cómo hacerlo) es contar, sobre esta columna,
cuántas líneas tienen, como contenido, _empresa1_; cuántas tienen _empresa2_;
cuántas _empresa3_; y cuántas _empresa4_.

El resultado tiene que ir en otra página.

Espero haber detallado lo suficiente mi problema.

Un saludo.
Respuesta Responder a este mensaje
#5 Héctor Miguel
23/10/2007 - 00:07 | Informe spam
hola, (...) ???

ok... entendido. el "problema" es que la funcion que te encontraste (cuyo codigo expones):
1) NO "expone" una matriz de resutados
2) sirve exclusivamente para "acumular" un contador de las coincidencias del color "solicitado"

prueba definiendo otra funcion que si exponga una matriz con el resultado de los colores (no importa cual sea)

Function Color_celdas(Rango As Range) As Variant
Dim Colores As Variant, Sig As Integer
With Rango.Areas(1).Columns(1)
ReDim Colores(1 To .Rows.Count)
For Sig = 1 To .Rows.Count
Colores(Sig) = .Range("a" & Sig).Interior.ColorIndex
Next
End With
Color_celdas = Application.Transpose(Colores)
End Function

dicha funcion personalizada la podras combinar (p.e.) con la de sumaproducto +/- como sigue:
=sumaproducto(--(Color_celdas(A2:A16)=3);--(A2:A16="empresaX"))

(obviamente) puedes hacer modificaciones/adaptaciones/mejoras/... al codigo de la funcion propuesta ;)

si cualquier duda (o informacion adicional)... comentas ?
saludos,
hector.

__ la consulta original __
... Lo que escribo en la celda es: "=formula(celda_donde_esta_el_color_original;rango)"
El codigo de la funcion:
Function ContarColorFondo(rngCeldaColor, rngRangoAContar As Range) As Double
If rngCeldaColor.Cells.Count <> 1 Then Exit Function
Dim rngCelda As Range, dblAcumulado As Double, intColorMuestra As Integer
intColorMuestra = rngCeldaColor.Interior.ColorIndex
For Each rngCelda In rngRangoAContar
If rngCelda.Interior.ColorIndex = intColorMuestra Then dblAcumulado = dblAcumulado + 1
Next rngCelda
ContarColorFondo = dblAcumulado
End Function

c) es probable que pueda agregarse algun argumento a la funcion que ya utilizas...
o que (al final de cuentas) SI resute "funcional" el uso de la funcion sumaproducto (como te recomendaba inicialmente) -???-



No resulta funcional, porque lo que hace esa funcion, finalmente, es una multiplicacion.
Lo que busco es una suma _relativamente_ condicional.

Trato de detallar al maximo mi problema:
Tengo 9 paginas, con cuatro columnas cada una, y un numero variable de filas (estas, abarcan desde una fila, hasta 350).

El orden de las columnas es:
- un numero
- un nombre
- una empresa (con cuatro posibilidades: empresa1, empresa2, empresa3, empresa4)
esta es la columna sobre la que tengo que hacer el conteo
- una respuesta booleana (SI/NO)

El problema es que tengo que hacer un conteo de la tercera columna (en la que figuran las empresas)
para saber cuantas empresas han hecho cuanto trabajo.
La solucion (y no se como hacerlo) es contar, sobre esta columna
cuantas lineas tienen, como contenido, _empresa1_; cuantas tienen _empresa2_; cuantas _empresa3_; y cuantas _empresa4_.

El resultado tiene que ir en otra pagina...
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida