CONTAR.SI BASADO EN COLORES

08/07/2006 - 00:05 por SHADOWER | Informe spam
Ojalá alguien me pueda ayudar con esto.

Tengo un listado de nombres, algunos estan en color negro, otros en rojo,
otros en verde y otros son hipervínculos, por lo tanto se ven azules.

Necesito hacer una fórmula que me cuente cada grupo por separado, es decir,
cuantos rojos, verdes, negros y azules (hipervículos) tengo en el listado.

De antemano gracias.
 

Leer las respuestas

#1 Héctor Miguel
08/07/2006 - 05:47 | Informe spam
hola, 'anonimo/a' !

... listado de nombres, algunos... en color negro... rojo... verde y otros son hipervinculos, por lo tanto se ven azules.
... formula que me cuente cada grupo por separado... cuantos rojos, verdes, negros y azules (hiperviculos) tengo en el listado.



op1: definir nombres usando macro-funciones de excel4 [p.e.] en la celda contigua a la que se quiere 'monitorear'
suponiendo que tu listado de nombres es la columna 'A' [el primero en 'A1'], selecciona la celda B1' y...
a) define un nombre [insertar / nombre / definir...] p.e. ColorFuente
b) usa la siguiente formula en el campo de 'se refiere a:' -> =indicar.celda(24,!a1)+0*hoy()
c) [todavia en 'B1' como celda activa] pulsa {F3} -> selecciona 'el nombre' definido -> pulsa {enter}
-> OJO: si tu excel es en ingles... deberas cambiar 'indicar.celda' por: -> 'get.cell' ;)
si tu excel es en otro idioma... :-\\ [habra que averiguar la traduccion correcta} :D
-> 'nota' el signo '!' y la referencia relativa a la celda a la izquierda ['A1'] de la seleccion ['B1']
la expresion +0*hoy() ES para volver 'volatil' el nombre asignado

-> despues puedes utilizar la funcion contar.si [sobre la columna 'B'] para contar los numeros del color que deseas ;)

-> otras opciones para obtener los formatos [hay 53 caracteristicas disponibles] son...
13 - color fondo
20 - negrita
21 - italica
22 - subrayado
23 - tachado
38 - color de superficie [fore-ground] cuando esta 'combinado'
39 - color de fondo [back-ground] cuando esta 'combinado'
IMPORTANTE: toma nota que 'este' tipo de nombres puede ser 'catastrofico' en versiones anteriores a 2002/xp...
cuando copias celdas que los usan a otras hojas/libros :-((

op2: definir una funcion personalizada +/- como la siguiente:
en un modulo de codigo 'normal' ==Function ContarColor(ByVal Rango As Range, ByVal Color) As Long
Dim Celda As Range, Total As Integer
If TypeName(Color) = "Range" Then Color = Color.Cells(1, 1).Font.ColorIndex
If Not IsNumeric(Color) Then Exit Function
For Each Celda In Rango
ContarColor = ContarColor - (Celda.Font.ColorIndex = Color)
Next
End Function

- este ejemplo 'supone' que la celda 'C1' tiene el mismo color de fondo que deseas contar en el rango 'A1:A5001
=ContarColor(A1:A500,C1)
- suponiendo que conoces que el numero de color que deseas contar en el # 3
=ContarColor(A1:A500,3)
- OJO si el color que necesitas contar es el color 'automatico'...
NO se debe 'buscar' el cero [0] sino el -4105 [color de fuente] o el -4142 [color de fondo]
=>ojo que 'mi' separador de argumentos es la coma<= ;)

con la op1 se podria correr el riesgo de desestabilizar al excel [si se copian celdas que usen macro-funciones entre hojas/libros] :-(
[ademas de que] al parecer, el uso de macro-funciones de excel4 dejara de tener 'soporte' a partir de la version de Office-12 :-\

puedes definir funciones 'similares' [como sumar en lugar de contar, color de fondo en lugar de color de fuente, etc.] ;)

si cualquier duda [o informacion adicional]... comentas ?
saludos,
hector.

Preguntas similares