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!
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.
FontColor
=GET.CELL(24,OFFSET(INDIRECT("RC",FALSE),0,-1))
et cliquez sur OK.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
EDIT (10/12/2013)
Pour compter les cellules avec une couleur de fond spécifique, voir THIS link
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")
For Each cell In Range("A1:A100")
If cell.Font.Color = 255 And cell.Value = "John Smith" Then
myCount = myCount + 1
End If
Next