2013-04-08 19 views
8

Ho un elenco di nomi che sono stati esportati da un altro database in excel. I nomi nella lista che sono di interesse sono evidenziati in caratteri rossi. Mi piacerebbe un modo per contarlo, cioè John Smith appare 5 volte in una colonna, ma 3 delle 5 volte, il suo nome viene evidenziato in caratteri rossi. Quindi mi piacerebbe vedere quante istanze del suo nome appaiono rosse.Come contare il testo di un diverso colore di carattere in excel

So come cercare tutte le istanze del suo nome, ad es. = COUNTIF (A1: A100, "John Smith")

Ho anche avuto aiuto nella creazione di una funzione VB che conta tutti i valori che sono rossi (= SumRed) (una volta specificato l'indice di colore) in un foglio di lavoro di utilizzando questo:

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 

Non riesco a trovare un modo per combinare le due condizioni di conteggio. Qualsiasi aiuto sarebbe molto apprezzato!

+0

'+ cell.value' questo doesn sembra giusto? – glh

+0

Nessuna necessità per VBA. Anche la formula di Excel può essere d'aiuto. –

risposta

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

Penso che ci sei quasi, ma questo merita un'altra funzione @user mi scommettere per la battuta finale :(

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")

13

Non hai bisogno di VBA per ma se vuoi una soluzione VBA puoi andare con una delle altre due risposte :)

Possiamo usare la formula di Excel per trovare il colore del carattere di una cella. Vedi questo esempio.

Utilizzeremo macro XL4.

  1. Aprire il nome del gestore
  2. Dare un nome. Dire FontColor
  3. Tipo questa formula nel riferisce Per =GET.CELL(24,OFFSET(INDIRECT("RC",FALSE),0,-1)) e fare clic su OK

enter image description here

Spiegazione della formula

La sintassi è

GET.CELL(type_num, reference) 

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

Nella formula precedente il numero 24 fornisce il colore del carattere del primo carattere nella cella, come un numero compreso tra 1 e 56. Se il colore del carattere è automatico, restituisce 0. E quindi lo svantaggio. Assicurarsi che l'intero colore del carattere sia rosso. Avremmo potuto usare 64 ma non funziona correttamente.

OFFSET(INDIRECT("RC",FALSE),0,-1) si riferisce alla cella immediata sulla sinistra.

Immettere ora questa formula in una cella =IF(AND(Fontcolor=3,B1="John Smith"),1,0) e copiarla.

Nota: La formula deve essere immessa nella parte destra della cella che contiene il testo.

Screentshot

enter image description here

EDIT (10/12/2013)

Per contare le celle con specifico backcolor vedere THIS collegamento

+0

+1 per questa elegante e dettagliata alternativa a vba. Si impara qualcosa di nuovo ogni giorno. – glh

+0

Mi sembra che questo sia un modo molto poco utile per farlo. E sembra che ci vuole molto prima del tempo impostato. Ottenere tutti i dati e assicurarsi di poter spostare i dati in giro, inserire una colonna accanto al nome o spostare il nome alla fine delle colonne per inserirlo in esso. Sembra anche che sarebbe estremamente lento se dovessi dire 500.000 record da controllare. Inoltre, la mia più grande colpa è la riutilizzabilità, e se nel futuro OP avessi bisogno di un conteggio di ciascun nome e combinazione di colori univoci, ciò richiederebbe molto tempo per l'esecuzione e il debug non sarebbe? – user2140261

+0

+1 - Per trovare il colore del carattere (e il colore di sfondo), questo è esattamente quello che stavo cercando - permettendomi di scrivere una funzione basata sul colore, ma senza ricorrere a VBA. Grazie molto. – Unsliced