Avatar billede iubgr Nybegynder
04. oktober 2002 - 07:36 Der er 13 kommentarer og
1 løsning

Betinget formattering

Hej,

I en kolonne anvender jeg betinget formattering. De data som opfylder det betingede format, ønsker jeg herefter at slette på en gang. Hvordan gøres det smartest?

Jeg har forsøgt at anvende F5/speciel, og markere betingede formater, men jeg kan ikke få det til at virke.
Avatar billede katborg Praktikant
04. oktober 2002 - 07:44 #1
Kan du ikke bruge "Autofilter" til at udvælge dataene ?

Ved autofilter kan du nøjes med at se dem du vælger, og dermed meget nemt slette dem.
04. oktober 2002 - 08:25 #2
De celler der opfylder kriterierne ligger måske indenfor et interval - så kan du evt. sorterer dine data og nemt udvælge rækkerne manuelt.

Med kendskab til kriterierne eller din betinget formattering kan der nemt laves en lille makro, som gør jobbet for dig - slet indhold eller hele rækken.
Avatar billede bigbucks Nybegynder
04. oktober 2002 - 08:28 #3
Jeg må give katborg ret - betinget formattering er ikke det rigtige at vælge (det er jo netop til _formattering_ - og en sletning er vel ikke formattering).
Jeg ved ikke om autofilter kan gøre det. Men hvad med at lave en ekstra kolonne ved siden af med følgende formel: =HVIS(A1>0;A1;" ")
I dette tilfælde har jeg sat betingelsen til at A1 skal være større end nul (men det sætter du selv). Hvis betingelsen er opfyldt vises indholdet af cellen (A1) - hvis betingelsen ikke er opfyldt vil cellen være tom.
04. oktober 2002 - 08:34 #4
bigbucks>> betinget formattering er vel netop til validering af data, og der er ingen problemer i at lave et VBA gennemløb, som checker f.eks. baggrundsfarven. Men ja, det kan løses på mange andre måder.
Avatar billede sjap Praktikant
04. oktober 2002 - 08:40 #5
Man kan da gøre som flemming foreslår: f.eks. give baggrunden en bestemt farve og så modificeres en af baks makroer (http://tommy.bak.homepage.dk/colorfunctions.xls) til at slette cellen hvis den har en bestemt farve. Det skulle da nok være muligt.

Selvfølgelig kan makroen også laves, så den selv kontrollerer indholdet og efterfølgende sletter celler - altså helt uden betinget formatering. Men det er vel en smagssag.
Avatar billede bigbucks Nybegynder
04. oktober 2002 - 08:41 #6
flemmingdahl>> Det kan være du har ret - men når jeg kigger i betinget formatering, ser jeg kun rene formateringsmuligheder (dvs. forskellige måder at vise teksten på). Men jeg vil ikke lægge hovedet på blokken ;-)
04. oktober 2002 - 08:50 #7
bigbucks>> hvis du kombinerer betinget formatering (baggrundsfarve) med f.eks. http://www.win-consult.com/Tips/LibrarySource.asp?App=Excel&Lib=ColoredCellsCount eller en af "bak's" makroer, så kan du nemt få en masse oplysninger ud af dine data eller gøre noget ved dem.
Avatar billede bak Forsker
04. oktober 2002 - 08:55 #8
Jeg tror bigbucks har ret.
Jeg mener ikke at det er muligt at chekke på valideringsfarven.
Heller ikke via VBA, da Interior.ColorIndex checker på originalfarven.
04. oktober 2002 - 09:36 #9
BAK>> Du kan godt checke på Interior.ColorIndex med vba også på valideringsfarven.
Prøv blot med en celle og vis index'et med
MsgBox Range("A1").Interior.ColorIndex
Standard rød hedder -4142
Avatar billede bak Forsker
04. oktober 2002 - 09:53 #10
Flemming-> jeg går lige til møde og har ikke mulighed for at chekke, men hvis det er rigtigt så er det bare rigtig godt :-)
04. oktober 2002 - 09:57 #11
""Selvfølgelig"" er det rigtigt når jeg skriver det - LOL
Avatar billede bak Forsker
04. oktober 2002 - 11:07 #12
Flemming-> jeg har nu testet og kan ikke få det til at virke.
hvis cellen ikke har en farveformatering (med alm. farver) vil MsgBox Range("A1").Interior.ColorIndex returere -4142 uanset om den er betinget formateret eller ej.
Hvis man så farver cellen sort (alm. farve) vil den give 1 uanset om betinget formatering har farvet cellen rød bagefter
04. oktober 2002 - 11:41 #13
Ja, jeg havde ikke testet ordenligt..! Men denne her laver en select på alle celler med betinget formatering, som har ColerIndex 3.

Sub TestForCondFormat()
    Dim c As Range, r As Range, r1 As Range, r2 As Range
    With ActiveSheet
    'Check for Conditional Formatting
        Set c = .Cells.SpecialCells(xlCellTypeLastCell)
            c.FormatConditions.Add Type:=xlCellValue, Operator:=xlEqual, Formula1:="0"
        If .Cells.SpecialCells(xlCellTypeAllFormatConditions).Count > 1 Then
            c.FormatConditions.Delete
            Set r = .Cells.SpecialCells(xlCellTypeAllFormatConditions)
            'Pick out those cells with same conditional formatting Interior
            'but only those cells where the formatting condition has been met
            For Each r1 In r
                If r1.FormatConditions(1).Interior.ColorIndex = 3 And _
                    r1 = 2 Then
                    If r2 Is Nothing Then
                        Set r2 = r1
                    Else
                        Set r2 = Union(r2, r1)
                    End If
                End If
            Next r1
            If Not r2 Is Nothing Then
                r2.Select
            Else
                MsgBox "No Conditional formatting exists"
                c.FormatConditions.Delete
            End If
        End If
    End With
End Sub
04. oktober 2002 - 11:43 #14
pas dog lige på linien c.Formatconditions.Delete
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
Kategori
Excel kurser for alle niveauer og behov – find det kursus, der passer til dig

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