ERROR en Formula SUMAR.SI

27/01/2008 - 13:41 por Rafa | Informe spam
Saludos para todos.

Intento con la siguiente formula, sumar según el color que indico en la
celda C122,
las celdas de datos existente con dicho color en el rango D109:U109 y que a
su
vez corresponda a la fila del mes actual.
Los meses están en A109:A120
Lógicamente los datos de Enero están en D109:U109
los datos de Febrero en D110:U110
etc.
=SUMAR.SI(A109:A120;"mmmm";SUMACOLORES(D109:U109;C122);"")
Resultado ¡¡ error por introducir demasiados datos!! .
¿Es posible hacer lo que intento?
¿Como corregir esta formula para que me funcione?
Decir también que si me funciona correctamente, si en una celda pongo:
=SUMACOLORES(D109:U109;C122)

Muchas gracias a todos por vuestra ayuda.

Preguntas similare

Leer las respuestas

#1 Héctor Miguel
28/01/2008 - 20:53 | Informe spam
hola, Rafa !

1) (hasta donde se) la sintaxis de la funcion sumar.si no admite encadenar (otras) funciones para su segundo argumento:
=sumar.si(<rago_comparacion>,criterio_a_cumplir,<rango_a_sumar_si_diferente_a_rango_comparacion>)

2) el argumento criterio en la formula que expones: -> "mmmm" se refiere a una comparacion TEXTUAL (es decir):
las celdas deberan contener (textualmente) "mmmm" (no precisamente algun dato de fechas con solo el mes) -?-

3) (supongo que) la funcion "sumacolores" es una funcion personalizada que (solamente) esta usando una variable
(probablemente la funcion misma) para sumar/acumular/... los valores de cuyas celdas se va cumpliendo la condicion de color
(pero) no esta devolviendo una "matriz" que pueda ser "empatada" con otra matriz para una segunda comparacion (fechas ?)

convendria si expones el codigo de tu funcion (sumacolores) y el tipo de datos de tu columna de fechas (no solo el "formato")
ademas, si la columna de fechas esta "ordenada"... para que incluir filas/celdas/... "fuera de su alcance de cada periodo" -???-

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

__ la consulta original __
Intento con la siguiente formula, sumar según el color que indico en la celda C122,
las celdas de datos existente con dicho color en el rango D109:U109 y que a su vez corresponda a la fila del mes actual.
Los meses estan en A109:A120
Logicamente los datos de Enero estan en D109:U109
los datos de Febrero en D110:U110
etc.
=SUMAR.SI(A109:A120;"mmmm";SUMACOLORES(D109:U109;C122);"")
Resultado ¡¡ error por introducir demasiados datos!! .
Es posible hacer lo que intento?
Como corregir esta formula para que me funcione?
Decir también que si me funciona correctamente, si en una celda pongo:
=SUMACOLORES(D109:U109;C122)
Respuesta Responder a este mensaje
#2 Rafa
28/01/2008 - 21:55 | Informe spam
La verdad es que soy bastante principiante en este trabajo de codigos VBA
y leyendo muchisimo las preguntas de los demas usuarios y las respuestas
de las personas que si entendeis mas, guardo las que pienso me podrian
servir algun dia
y asi aprender algo.

Este es el codigo que utilizo para que me funcione correctamente
la formula =SUMACOLORES(D109:U109;C122)

Function SUMACOLORES(Datos As Range, LetraColor As Range) As Double
On Error Resume Next
Dim Suma1 As Double, Color As Integer, celda As Range
Color = LetraColor.Font.ColorIndex
For Each celda In Datos.Cells
If celda.Font.ColorIndex = Color Then
Suma1 = Suma1 + celda.value
End If
Next
SUMACOLORES = Suma1
End Function

Con la formula: =SUMAR.SI(A109:A120;"mmmm";SUMACOLORES(D109:U109;C122);"")
lo que intentaba es evitarme estar modificando manualmente y todos los meses
la formula: =SUMACOLORES(D109:U109;C122) cambiandola en Febrero de D109:U109
a D110:U110
luego en Marzo poniendo D111:U111; en ABRIL D112:U112 etc. pero bueno si no
hay mas remedio
tampoco seria un trabajo insoportable.
Es de agradecerte Hector tu esfuerzo en querer atenderme y tratar de
ayudarme.
Pero si ves muy complicado esto que expongo, no te esfuerzes, ya has echo
suficiente
al contestarme. Ya te estoy agradecido.



"Héctor Miguel" escribió en el mensaje
news:
hola, Rafa !

1) (hasta donde se) la sintaxis de la funcion sumar.si no admite encadenar
(otras) funciones para su segundo argumento:

=sumar.si(<rago_comparacion>,criterio_a_cumplir,<rango_a_sumar_si_diferente_a_rango_comparacion>)

2) el argumento criterio en la formula que expones: -> "mmmm" se refiere a
una comparacion TEXTUAL (es decir):
las celdas deberan contener (textualmente) "mmmm" (no precisamente
algun dato de fechas con solo el mes) -?-

3) (supongo que) la funcion "sumacolores" es una funcion personalizada que
(solamente) esta usando una variable
(probablemente la funcion misma) para sumar/acumular/... los valores de
cuyas celdas se va cumpliendo la condicion de color
(pero) no esta devolviendo una "matriz" que pueda ser "empatada" con
otra matriz para una segunda comparacion (fechas ?)

convendria si expones el codigo de tu funcion (sumacolores) y el tipo de
datos de tu columna de fechas (no solo el "formato")
ademas, si la columna de fechas esta "ordenada"... para que incluir
filas/celdas/... "fuera de su alcance de cada periodo" -???-

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

__ la consulta original __
Intento con la siguiente formula, sumar según el color que indico en la
celda C122,
las celdas de datos existente con dicho color en el rango D109:U109 y que
a su vez corresponda a la fila del mes actual.
Los meses estan en A109:A120
Logicamente los datos de Enero estan en D109:U109
los datos de Febrero en D110:U110
etc.
=SUMAR.SI(A109:A120;"mmmm";SUMACOLORES(D109:U109;C122);"")
Resultado ¡¡ error por introducir demasiados datos!! .
Es posible hacer lo que intento?
Como corregir esta formula para que me funcione?
Decir también que si me funciona correctamente, si en una celda pongo:
=SUMACOLORES(D109:U109;C122)




Respuesta Responder a este mensaje
#3 Héctor Miguel
29/01/2008 - 00:47 | Informe spam
hola, Rafa !

Este es el codigo que utilizo para que me funcione correctamente la formula =SUMACOLORES(D109:U109;C122)
Function SUMACOLORES(Datos As Range, LetraColor As Range) As Double
On Error Resume Next
Dim Suma1 As Double, Color As Integer, celda As Range
Color = LetraColor.Font.ColorIndex
For Each celda In Datos.Cells
If celda.Font.ColorIndex = Color Then
Suma1 = Suma1 + celda.value
End If
Next
SUMACOLORES = Suma1
End Function
Con la formula: =SUMAR.SI(A109:A120;"mmmm";SUMACOLORES(D109:U109;C122);"")
lo que intentaba es evitarme estar modificando manualmente y todos los meses la formula: =SUMACOLORES(D109:U109;C122)
cambiandola en Febrero de D109:U109 a D110:U110 luego en Marzo poniendo D111:U111; en ABRIL D112:U112 etc.
pero bueno si no hay mas remedio tampoco seria un trabajo insoportable...



1) el "detalle" (y tal como te comentaba en el mensaje anerior) es que la funcion que estas usando:
a) NO "expone" una matriz de resutados
b) sirve exclusivamente para "acumular" un contador de las suma/cuenta del color "solicitado"

2) lo que no has comentado es el tipo de datos (columna fechas) donde tratas de usar la funcion sumar.si(..."mmmm"...) -???-
(fechas reales ?... textos con solo el mes de cada fecha ?... algun formato especial ?... -???-)

3) estos detalles podrian "hacer la diferencia" entre definir solo una funcion personalizada o utilizar dos o mas -?-

saludos,
hector.
Respuesta Responder a este mensaje
#4 Rafa
29/01/2008 - 09:37 | Informe spam
Perdón de nuevo si no se explicarme correctamente:
En la columna A109:A120, tengo el detalle de los meses
a los que corresponde los datos de esa fila.
A109=a la palabra "Enero" (texto) sin ningún otro detalle de día
A110=Febrero (texto)etc.
y en cada fila desde D109:U109 están los datos que corresponden a Enero
en la fila D110:U110 los datos que corresponden a Febrero.
Estos datos numéricos que aparecen en cada fila, los cambio manualmente de
color
digamos para "validar" o para saber que están controlados, el resto que no
he
cambiado de color son los que intento sumar para saber que cantidad tengo
pendiente

Muchas gracias por tu ayuda.


"Héctor Miguel" escribió en el mensaje
news:
hola, Rafa !

Este es el codigo que utilizo para que me funcione correctamente la
formula =SUMACOLORES(D109:U109;C122)
Function SUMACOLORES(Datos As Range, LetraColor As Range) As Double
On Error Resume Next
Dim Suma1 As Double, Color As Integer, celda As Range
Color = LetraColor.Font.ColorIndex
For Each celda In Datos.Cells
If celda.Font.ColorIndex = Color Then
Suma1 = Suma1 + celda.value
End If
Next
SUMACOLORES = Suma1
End Function
Con la formula:
=SUMAR.SI(A109:A120;"mmmm";SUMACOLORES(D109:U109;C122);"")
lo que intentaba es evitarme estar modificando manualmente y todos los
meses la formula: =SUMACOLORES(D109:U109;C122)
cambiandola en Febrero de D109:U109 a D110:U110 luego en Marzo poniendo
D111:U111; en ABRIL D112:U112 etc.
pero bueno si no hay mas remedio tampoco seria un trabajo insoportable...



1) el "detalle" (y tal como te comentaba en el mensaje anerior) es que la
funcion que estas usando:
a) NO "expone" una matriz de resutados
b) sirve exclusivamente para "acumular" un contador de las suma/cuenta
del color "solicitado"

2) lo que no has comentado es el tipo de datos (columna fechas) donde
tratas de usar la funcion sumar.si(..."mmmm"...) -???-
(fechas reales ?... textos con solo el mes de cada fecha ?... algun
formato especial ?... -???-)

3) estos detalles podrian "hacer la diferencia" entre definir solo una
funcion personalizada o utilizar dos o mas -?-

saludos,
hector.

Respuesta Responder a este mensaje
#5 Héctor Miguel
30/01/2008 - 00:49 | Informe spam
hola, Rafa !

En la columna A109:A120, tengo el detalle de los meses a los que corresponde los datos de esa fila.
A109=a la palabra "Enero" (texto) sin ningun otro detalle de dia A110=Febrero (texto) etc.
y en cada fila desde D109:U109 estan los datos que corresponden a Enero en la fila D110:U110 los datos que corresponden a Febrero.
Estos datos numericos que aparecen en cada fila, los cambio manualmente de color... para "validar" o para saber que estan controlados
el resto que no he cambiado de color son los que intento sumar para saber que cantidad tengo pendiente



(probablemente) te servira definir dos funciones personalizadas por si despues decides conocer por diferentes colores-condicion -?-
(basicamente) la unica que necesitas es la primera (de este ejemplo) para jugar con una matriz devuelta con el color de cada celda
que puedes combinar con la funcion sumaproducto de la manera tradicional, solo que OJO:
toma en cuenta que un simple cambio de color/formato/... en las celdas NO dispara ningun evento, es necesario un re/calculo de excel :-((

1) cambia tu funcion por la siguiente (en un modulo de codigo normal)
Function Color_celdas(Rango As Range) As Variant
' Application.Volatile
Dim Colores As Variant, Col As Byte
With Rango.Areas(1).Rows(1)
ReDim Colores(1 To .Columns.Count)
For Col = 1 To .Columns.Count
Colores(Col) = .Range("a1").Offset(, Col - 1).Interior.ColorIndex
Next
End With
Color_celdas = Colores
End Function

2) para conocer la suma de celdas NO coloreadas (el valor "constante" de una celda sin color es -4142)
usa sumaproducto +/- asi: =sumaproducto(--(color_celdas($d109:$u109)=-4142),$d109:$u199)

si suponemos que prefieres condicionar al color de otra "determinada" celda (digamos C$108)

3) agrega la siguiente funcion personalizada el mismo modulo estandar:
Function Color_muestra(Rango As Range) As Long
Color_muestra = Rango.Range("a1").Interior.ColorIndex
End Function

4) cambia la formula +/- a lo siguiente: =sumaproducto(--(color_celdas($d109:$u109)=color_muestra(c$108)),$d109:$u109)

(obviamente) mis supuestos podrian ser diferentes de tu realidad (?) asi que...
si cualquier duda (o informacion adicional)... comentas ?
saludos,
hector.

p.d. no olvides considerar que mi sistema usa como separador de argumentos a la coma ',' NO al punto y coma ';' :D
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida