2013-04-08 15 views
8

Mam listę nazw, które zostały wyeksportowane z innej bazy danych do programu Excel. Nazwy na liście, które są interesujące, są wyróżnione czerwoną czcionką. Chciałbym, żeby to policzyć, tj. John Smith pojawia się 5 razy w kolumnie, ale 3 z 5 razy, jego imię pojawia się podświetlone czerwoną czcionką. Chciałbym zobaczyć, jak wiele wystąpień jego nazwiska pojawia się na czerwono.Jak zliczać tekst o innym kolorze czcionki w programie Excel

W jaki sposób wyszukiwać wszystkie wystąpienia jego nazwiska, np. = COUNTIF (A1: A100, "John Smith")

Mam również pomoc w tworzeniu funkcji VB, która zlicza wszystkie wartości, które są czerwone (= SumRed) (po określeniu indeksu kolorów) w arkuszu przez używając tego:

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 

Po prostu nie mogę znaleźć sposobu na połączenie dwóch warunków zliczania. Każda pomoc będzie doceniona!

+0

'+ cell.value' tego nie robi wydaje się być w porządku? – glh

+0

Nie ma potrzeby stosowania VBA. Formuła programu Excel może również pomóc. –

Odpowiedz

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

myślę, że jesteś prawie tam, ale ten zasługuje na inną funkcję @user postawić mnie do puentą :(

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 

użytkowania, =CountRedAndText(A1:A25, "John Smith")

13

Nie potrzeba do VBA to, ale nadal, jeśli chcesz VBA Solution to możesz iść z jedną z dwóch pozostałych odpowiedzi :)

Możemy użyć formuły Excel, aby znaleźć Kolor czcionki komórki. Zobacz ten przykład.

Będziemy używać makr XL4.

  1. Otwórz Nazwa Menedżer
  2. Podaj nazwę. Powiedzieć FontColor
  3. Rodzaj ta formuła w odnosi się do =GET.CELL(24,OFFSET(INDIRECT("RC",FALSE),0,-1)) i kliknij OK

enter image description here

wyjaśnienie wzoru

składnia jest

GET.CELL(type_num, reference) 

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

W powyższym wzorze numer 24 podaje kolor czcionki pierwszego znaku w komórce, jako liczbę z zakresu od 1 do 56. Jeśli kolor czcionki jest automatyczny, zwraca 0. I stąd ta wada. Upewnij się, że cały kolor czcionki jest czerwony. Mogliśmy użyć 64, ale to nie działa poprawnie.

OFFSET(INDIRECT("RC",FALSE),0,-1) odnosi się do najbliższej komórki po lewej stronie.

Teraz wprowadź tę formułę w komórce =IF(AND(Fontcolor=3,B1="John Smith"),1,0) i skopiuj ją.

Uwaga: Formułę należy wpisać po prawej stronie komórki zawierającej tekst.

Screentshot

enter image description here

EDIT (10/12/2013)

Aby policzyć komórki z konkretnym Backcolor zobaczyć THIS Link

+0

+1 za tę elegancką i szczegółową alternatywę dla vba. Każdego dnia uczysz się czegoś nowego. – glh

+0

Mam wrażenie, że jest to bardzo nieużyteczny sposób, aby to zrobić. I wygląda na to, że zajmuje to ALOT z wyprzedzeniem. Uzyskując wszystkie dane i upewnij się, że możesz przenosić dane, wstaw kolumnę obok nazwy lub przenieś nazwę na koniec kolumny, aby umieścić w niej dane. Wydaje się również, że byłoby bardzo wolno, gdybyś powiedział, że 500 000 rekordów do sprawdzenia. Również moją największą wadą jest możliwość ponownego użycia, a co jeśli w przyszłości OP wymagałby liczenia każdej niepowtarzalnej kombinacji nazwy i koloru, wykonanie i debugowanie by zajęło dużo czasu, gdyby nie? – user2140261

+0

+1 - Aby znaleźć kolor czcionki (i kolor tła), dokładnie to właśnie szukałem - pozwalając mi napisać funkcję opartą na kolorze, ale bez uciekania się do VBA. Wielkie dzięki. – Unsliced

Powiązane problemy