Telle en liste av celler med samme bakgrunnsfarge

stemmer
10

Hver celle inneholder tekst og bakgrunnsfarge. Så jeg har noen celler som er blå og noen som er røde. Hvilken funksjon bruker jeg å telle antall røde blodlegemer?

Jeg har prøvd =COUNTIF(D3:D9,CELL(color,D3))uten suksess (Hvor D3er rød).

Publisert på 08/09/2008 klokken 13:41
kilden bruker
På andre språk...                            


5 svar

stemmer
9

Excel har ingen måte å samle som attributt med det innebygde funksjoner. Hvis du er villig til å bruke noen VB, er alle fargerelaterte spørsmål besvart her:

http://www.cpearson.com/excel/colors.aspx

Eksempel danne site:

Den SumColor funksjon er en fargebasert analog av både SUM og SUMIF funksjon. Den lar deg angi separate områder for utvalget som har fargen indekser er å bli undersøkt og omfanget av celler med verdier som skal summeres. Hvis disse to områdene er de samme, det funksjons summerer de celler hvis fargen samsvarer med den angitte verdien. For eksempel, summerer den følgende formel verdiene i B11: B17 som fyllfarge er rød.

=SUMCOLOR(B11:B17,B11:B17,3,FALSE)

Svarte 08/09/2008 kl. 13:46
kilden bruker

stemmer
6

Regnearket formel, =CELL("color",D3)returnerer 1hvis cellen er formatert med farge for negative verdier (annet returnerer 0).

Du kan løse dette litt av VBA med. Sett dette i en VBA-kode modul:

Function CellColor(xlRange As Excel.Range)
    CellColor = xlRange.Cells(1, 1).Interior.ColorIndex
End Function

Deretter bruke funksjonen =CellColor(D3)for å vise .ColorIndextilD3

Svarte 08/09/2008 kl. 17:17
kilden bruker

stemmer
4

Jeg opprettet nettopp dette, og det ser enklere. Du får disse 2 funksjoner:

=GetColorIndex(E5)  <- returns color number for the cell

fra (celle)

=CountColorIndexInRange(C7:C24,14) <- returns count of cells C7:C24 with color 14

fra (celleområde, fargenummer du ønsker å telle)

Eksempelet viser prosent av celler med farge 14

=ROUND(CountColorIndexInRange(C7:C24,14)/18, 4 )

Lag disse 2 VBA-funksjoner i en modul (trykk Alt-F11)

åpne + mapper. dobbeltklikk på module1

Bare lim denne teksten nedenfor i og lukk modulen vinduet (det må lagre det da):

Function GetColorIndex(Cell As Range)
  GetColorIndex = Cell.Interior.ColorIndex
End Function

Function CountColorIndexInRange(Rng As Range, TestColor As Long)
  Dim cnt
  Dim cl As Range
  cnt = 0

  For Each cl In Rng
    If GetColorIndex(cl) = TestColor Then
      Rem Debug.Print ">" & TestColor & "<"
      cnt = cnt + 1
    End If
  Next

  CountColorIndexInRange = cnt

End Function
Svarte 30/08/2013 kl. 20:01
kilden bruker

stemmer
2

Jeg var nødvendig for å løse helt den samme oppgaven. Jeg har delt visuelt bordet bruke forskjellige bakgrunnsfarger for ulike deler. Googling internett jeg har funnet denne siden https://support.microsoft.com/kb/2815384 . Dessverre er det ikke løser problemet fordi ColorIndex refererer til noe uforutsigbar verdi, så hvis noen celler har nyanser av en farge (for eksempel forskjellige verdier av lysstyrke på fargen), teller den foreslåtte funksjons dem. Løsningen nedenfor er min fikse:

Function CountBgColor(range As range, criteria As range) As Long
    Dim cell As range
    Dim color As Long
    color = criteria.Interior.color
    For Each cell In range
        If cell.Interior.color = color Then
            CountBgColor = CountBgColor + 1
        End If
    Next cell
End Function
Svarte 11/01/2016 kl. 12:31
kilden bruker

stemmer
0

Ja VBA er veien å gå.

Men, hvis du ikke trenger å ha en celle med formel som auto-teller / oppdaterer antall celler med en bestemt farge, er et alternativ rett og slett å bruke 'Søk og erstatt' -funksjonen og formatere cellen til å ha riktig fargefyll.

Treffer 'Finn alle' vil gi deg det totale antall celler som finnes nederst til venstre i dialogboksen.

skriv bildebeskrivelse her

Dette blir spesielt nyttig hvis søkeområde er massiv. VBA skriptet vil være svært treg, men funksjonen 'Søk og erstatt' vil fortsatt være svært rask.

Svarte 12/09/2016 kl. 03:53
kilden bruker

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more