20. februar 2017 - 16:28 Der er 8 kommentarer og
2 løsninger

Funktion til =COUNTIF kun i celler uden baggrundsfarver

Hej

Nogen som kan hjælpe med at tælle antal forekomst af "TEST" - men KUN tælle hvis cellen ikke er farvet.

=COUNTIF(E1:E10;"TEST")
20. februar 2017 - 16:54 #1
Jeg har engang lavet denne her - måske den kan hjælpe dig...
http://www.smartoffice.dk/Tips/LibrarySource.asp?App=Excel&Lib=ColoredCellsCount
Avatar billede kim1a Ekspert
20. februar 2017 - 16:54 #2
Det kan du desværre ikke uden enten vba eller også lave et filter.

Filteret kan sortere på baggrundsfarve og så kan du tælle forkomsterne af test efterfølgende.
20. februar 2017 - 18:29 #3
smartoffice_dk ser fint ud, mangler dog at tælle antal forekomst af "TEST" i celler som ikke er farvet...


VBA er fint.
20. februar 2017 - 19:00 #4
Der skal ikke så meget til - her er et eksempel
/Flemming
Public Function ColoredCellsCount(countArea As Range, countColor As Range, matchText As String) As Double
    'qqq.smartoffice.dk
    Application.Volatile
    Dim dRetVal As Double
    Dim rCell As Range
    Dim iColor As Integer
    For Each rCell In countArea
        If rCell.Interior.ColorIndex = countColor.Interior.ColorIndex And rCell.Value = matchText Then
            dRetVal = dRetVal + 1
        End If
    Next rCell
    ColoredCellsCount = dRetVal
    ' Clean up
    Set rCell = Nothing
End Function
20. februar 2017 - 21:52 #5
Tak Flemming, testet men kan IKKE få det til at fungere.

Dette i celle G26:
=ColoredCellsCount(E1:E6;"TEST")

Alle celler E1:E6 indeholder TEST - men E1 og E4 har baggrundsfarve, så de skal ikke tælles med,
Resultat i G26 skal være = 4
20. februar 2017 - 22:46 #6
Sæt lige en LCase omkring
And LCase(rCell.Value) = LCase(matchText) Then

Hvis du også vil fjerne mellemrum så
And Trim(LCase(rCell.Value)) = Trim(LCase(matchText)) Then
21. februar 2017 - 06:46 #7
Kan ikke finde noget sted i kode med:

Hvis du også vil fjerne mellemrum så

And Trim(LCase(rCell.Value)) = Trim(LCase(matchText)) Then


Kunne du lokkes til at skrive den fulde kode?


Tak.
21. februar 2017 - 07:50 #8
Public Function ColoredCellsCount(countArea As Range, countColor As Range, matchText As String) As Double
    'qqq.smartoffice.dk
    Application.Volatile
    Dim dRetVal As Double
    Dim rCell As Range
    Dim iColor As Integer
    For Each rCell In countArea
        If rCell.Interior.ColorIndex = countColor.Interior.ColorIndex And Trim(LCase(rCell.Value)) = Trim(LCase(matchText)) Then
            dRetVal = dRetVal + 1
        End If
    Next rCell
    ColoredCellsCount = dRetVal
    ' Clean up
    Set rCell = Nothing
End Function
21. februar 2017 - 08:40 #9
Testet, kan ikke få det til at fungere.

Kode sat ind i modul - og dette i celle G26 hvor resultat skal være 4

Dette i celle G26:
=ColoredCellsCount(E1:E6;"TEST")

Alle celler E1:E6 indeholder TEST - men E1 og E4 har baggrundsfarve, så de skal ikke tælles med,
Resultat i G26 skal være = 4


Hvad gør jeg forkert?
21. februar 2017 - 10:54 #10
Kunne se ud som om du mangler henvisningen til en celle, som har den farve du vil finde...

=ColoredCellsCount(  område der skal tælles  ;  en celle med den farve der skal findes  ;  teksten der skal findes  )
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester