web-dev-qa-db-fra.com

Comment compter le texte d'une couleur de police différente dans Excel

J'ai une liste de noms qui ont été exportés d'une autre base de données vers Excel. Les noms de la liste qui vous intéressent sont surlignés en rouge. Je voudrais un moyen de le compter, c’est-à-dire que John Smith apparaît 5 fois au total dans une colonne mais 3 fois sur 5, son nom apparaît en surbrillance en rouge. J'aimerais donc voir combien d'instances de son nom apparaissent en rouge.

Je sais comment rechercher toutes les occurrences de son nom, par exemple = COUNTIF (A1: A100, "John Smith")

J'ai également eu de l'aide pour créer une fonction VB qui compte toutes les valeurs rouges (= SumRed) (une fois l'index de couleur spécifié) dans une feuille de calcul en utilisant ceci:

Function SumRed(MyRange As Range)
    SumRed = 0
For Each cell In MyRange
    If cell.Font.Color = 255 Then
        SumRed = SumRed + cell.Value
    End If
Next cell
End Function

Je ne trouve pas le moyen de combiner les deux conditions de comptage. Toute aide serait très appréciée!

8
Tony Amofah

Vous n'avez pas besoin de VBA pour cela, mais si vous voulez une solution VBA, vous pouvez choisir l'une des deux autres réponses. :)

Nous pouvons utiliser une formule Excel pour trouver la couleur de police d'une cellule. Voir cet exemple.

Nous utiliserons des macros XL4.

  1. Ouvrez le gestionnaire de noms
  2. Donnez un nom. Dis FontColor
  3. Tapez cette formule dans Refers To =GET.CELL(24,OFFSET(INDIRECT("RC",FALSE),0,-1)) et cliquez sur OK.

enter image description here

Explication de la formule

La syntaxe est

GET.CELL(type_num, reference)

Type_num is a number that specifies what type of cell information you want.
reference is the cell reference

Dans la formule ci-dessus, le nombre 24 vous donne la couleur de police du premier caractère de la cellule, sous la forme d'un nombre compris entre 1 et 56. Si la couleur de la police est automatique, renvoie 0. Et par conséquent l'inconvénient. Assurez-vous que toute la couleur de la police est le rouge. Nous aurions pu utiliser 64 mais cela ne fonctionne pas correctement.

OFFSET(INDIRECT("RC",FALSE),0,-1) fait référence à la cellule immédiate à gauche.

Maintenant, entrez cette formule dans une cellule =IF(AND(Fontcolor=3,B1="John Smith"),1,0) et copiez-la.

Note : La formule doit être entrée à droite de la cellule contenant le texte.

Screentshot

enter image description here

EDIT (10/12/2013)

Pour compter les cellules avec une couleur de fond spécifique, voir THIS link

15
Siddharth Rout

Je pense que vous y êtes presque, mais cela mérite une autre fonction. @User pari moi à la ligne de frappe :(

Function CoundRedAndText(MyRange As Range, Mytext as string) as long
    CoundRedAndText = 0
    For Each cell In MyRange
        If cell.Font.Color = 255 and cell.value like MyText Then
            CoundRedAndText = CoundRedAndText + 1 'you had cell.value but dont know why?
        End If
    Next cell
End Function

Usage, =CountRedAndText(A1:A25, "John Smith")

2
glh
For Each cell In Range("A1:A100")
    If cell.Font.Color = 255 And cell.Value = "John Smith" Then
        myCount = myCount + 1
    End If
Next
0
user2140261