Foro de Ayuda Excel | ||
| Soluciona tus problemas con Excel |
| | |||||||
| Registrarse | Preguntas Frecuentes | Lista de Foreros | Calendario | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
| | LinkBack | Herramientas | Desplegado |
|
#1
| |||
| |||
| Hola... el titulo de esta consulta lo dice todo, es decir. Yo tengo varias celdas con diferentes colores de texto... de tal manera que cuando yo quiera sumar por ejemplo: los datos estan en a1 hasta h10 y tengo importes en color rojo, azul y verde (podria tener mas colores) y en la celda a12 le asigno el formato de color azul y le pido que me sume ese rango. si posteriormente le cambio el color del texto a la celda a12 por el color rojo... que sume las celdas según el color de formato donde coloque la funcion... espero haya sido claro en el apoyo que les solicito... gracias por todo. |
|
#2
| |||
| |||
| Hola Vaguilarpau. Con este código puedes sumar por color, modifícalo a tus necesidades: Public Sub Sumarporcolor() If Range("A1") <> 1 And ActiveCell = Range("A1") Then Range("A1").Interior.ColorIndex = xlNone End If If Range("A1") = 1 And Range("A1").Interior.ColorIndex = xlNone Then Range("A1").Interior.ColorIndex = 37 End If t = 0 For a = 2 To 50 If Range("a" & a).Interior.ColorIndex = 37 Then t = t + Range("a" & a) Next a Range("A1") = t End Sub Ahora, si quieres crear una UDF, prueba con este código: 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 En la celda donde quieras la suma coloca: =SUMACOLORES(A1:A10,B1) En este ejemplo sumaría los valores de las celdas A1:A10 cuyo color de letras coincidan con el color de letra de B1 En resumen, la sintaxis de la función es: =SUMACOLORES(rango a sumar, celda con el color a sumar) Si lo que tienes es celdas rellenas con color, entonces cambia Color = LetraColor.Font.ColorIndex por Cells.Interior.ColorIndex _______________________________________________ Un saludo desde Barranquilla, la Puerta de Oro de Colombia |
|
#4
| |||
| |||
| vaguilarpau: Me satisface haber podido ayudarte. Estamos aquí para eso. __________________________________________ Un saludo desde Barrnquilla, la Puerta de Oro de Colombia |
|
#5
| |||
| |||
| Innegablemente me tendré que fusilar esta UDF esta buenisisima !!! fusilar.-termino usado frecuentemente en mex. que significa entre otras cosas copiar/apropiarse de la idea/usarla para beneficio o en sentido más rudo y descarado -plagio-
__________________ Salu2 ST |
|
#6
| |||
| |||
| Hola... encopntre una debilidad... cuando los colores de texto se los asigno via formato condicional donde manipulo el color del texto segun la condicion... este es ignorado por la funcion... se podrá hacer algo al respecto ? y otra observacion, ya que coloque la funcion y cambio alguna cantidad de color, la funcion no se actualiza automaticvamente... podra haber solucion y fuera automatica... Gracias y recuerden no es exigencia, es busqueda de soluciones... gracias. |
|
#7
| |||
| |||
| Cita:
Código: Function SumaColor_ST(rango As Range, color As Range) As Integer
n = 0
For Each c In rango
If c.Interior.ColorIndex = color.Interior.ColorIndex Then
n = n + c.Value
End If
Next c
SumaColor_ST = n
End Function aclaro no el texto o fuente,sino el color interior de la celda.
__________________ Salu2 ST Última edición por ST_ fecha: 23/10/08 a las 22:37:48. |
|
#9
| |||
| |||
| Hola Juanchyr Simplemente cambia en cualquiera de las macros que utilices el término de la suma asociado al rango por 1, tal que por ejemplo en la función de : ST: n = n + c.Value por n = n + 1 Antonio1: t = t + Range("a" & a) por t = t + 1 Antonio2: Suma1 = Suma1 + celda.Value por Suma1 = Suma1 + 1 Con eso debería valerte. Un saludo desde Vitoria |
|
#10
| |||
| |||
| Cita:
Saludos |
| Herramientas | |
| Desplegado | |
| |