Avatar billede gregorian Nybegynder
13. marts 2005 - 17:12 Der er 25 kommentarer og
1 løsning

betinget formatering - celle minus en

Har lavet et ekspempe hvor jeg har lavet 3 felter med betinget formatering
gregorian.dk/eksempel.xls

det mit spørgsmål lyder på er:
hvordan laver jeg et script der siger
HVIS feltet til venstre for er STØRRE end det nuværende SÅ baggrund = rød

HVIS feltet til venstre for er MINDRE end det nuværende SÅ baggrund = GRØN

HVIS feltet til venstre for er LIG end det nuværende SÅ baggrund = GUL

HVIS feltet til venstre for er ikke findes eller fejl SÅ baggrund = GUL



det er det jeg har gjort med betinget formatering på et enkelt felt, men hvordan gøres det så jeg ikke skal gøre det ved hvert eneste felt jeg opretter?

For skal bruge denne formatering på hundredevis af felter som har disse betingelser?

på forhånd mange tak
Avatar billede jkrons Professor
13. marts 2005 - 17:26 #1
Formater alle celler med gul baggrund.

Vækg så Formater - Betinget formatering for cellen i C

Læg denne betingelse ind: Formlen er: =C2>B2 og vælg Rød baggrund.

Tilføj en ny betingelse. Læg denne ind:

Formlen er: =C2<B2 og vælg Grønd baggrund.

Det skulle løse dit problem.
Avatar billede jkrons Professor
13. marts 2005 - 17:27 #2
Formater alle celler, der skal farves, med gul baggrund skulle der have stået.
Avatar billede gregorian Nybegynder
13. marts 2005 - 18:05 #3
glemte vist at tage højde for noget i min forklaring der.. hov!

de er ikke KUN 3 kolonner, men derimod 9 lige pt og det kan være der skal tilføjes flere. ..

så der skal egentlig se sådan her ud..

http://www.gregorian.dk/eksempel.xls
Avatar billede gregorian Nybegynder
13. marts 2005 - 18:06 #4
jKrons.. den metode som du har beskrevet ovenover gør jo at jeg skal formatere ALLE felterne og jeg har jo flere hundrede.. kan man ikke lave en form for macre til dette formål?
Avatar billede gregorian Nybegynder
13. marts 2005 - 18:54 #5
har lavet et andet eksempel som illustrere min løsning men mangler bare den automatiske formatering på felterne hvor tallene står.

www.gregorian.dk/eksempel2.xls

samme regler som jeg skriver i startspørgsmålet.
Avatar billede kabbak Professor
13. marts 2005 - 19:25 #6
denne gælder kun for eksempel.xls, altså vandret

du skal makere alle tal celler inden du kører den

Public Sub SkiftFarve()
For Each c In Selection
F = Selection.Columns.Count - 1
A = Selection.Columns(Selection.Columns.Count).Column - F
If c.Column <> A Then
If c.Offset(0, -1).Value > c.Value Then c.Interior.Color = vbGreen
If c.Offset(0, -1).Value = c.Value Then c.Interior.Color = vbYellow
If c.Offset(0, -1).Value < c.Value Then c.Interior.Color = vbRed
Else
c.Interior.Color = vbYellow
End If
Next

End Sub
Avatar billede kabbak Professor
13. marts 2005 - 20:01 #7
denne virker på 1 kolonne lodret og på mange vandret


Public Sub SkiftFarve()
Range("B2:K4".select , hvis du retter i denne linie til dit område, skal du ikke markere
f = Selection.Columns.Count - 1
For Each C In Selection
If f > 0 Then
A = Selection.Columns(Selection.Columns.Count).Column - f
If C.Column <> A And C <> "" And C.Offset(0, -1) <> "" Then
If C.Offset(0, -1).Value > C.Value Then C.Interior.Color = vbGreen
If C.Offset(0, -1).Value = C.Value Then C.Interior.Color = vbYellow
If C.Offset(0, -1).Value < C.Value Then C.Interior.Color = vbRed
Else
C.Interior.Color = vbYellow
End If
Else
R = Selection.Rows.Count - 1
B = Selection.Rows(Selection.Rows.Count).Row - R
If C.Row <> B And C <> "" And C.Offset(-1, 0) <> "" Then
If C.Offset(-1, 0).Value > C.Value Then C.Interior.Color = vbGreen
If C.Offset(-1, 0).Value = C.Value Then C.Interior.Color = vbYellow
If C.Offset(-1, 0).Value < C.Value Then C.Interior.Color = vbRed
Else
C.Interior.Color = vbYellow
End If
End If
Next
End Sub
Avatar billede gregorian Nybegynder
13. marts 2005 - 20:33 #8
det ser squ godt ud, men hvordan bruger jeg det :)
har ingen anelse om hvordan jeg bruger en macro? ,

- går ud fra det er en macro nemmelig?
og kan det gøres på den måde at, når man åbner excel arket så kører den macroen for hver kolonne?
Avatar billede kabbak Professor
13. marts 2005 - 20:36 #9
hvordan ser dataerne ud, skal der sammenlignes lodret eller vandret.
Avatar billede gregorian Nybegynder
13. marts 2005 - 20:44 #10
det er bare tal.. alle er kommatal.
og de skal sammenlignes lodret
Avatar billede kabbak Professor
13. marts 2005 - 20:57 #11
Kan jeg få et hint om hvilke kolonner og række fra og til ;-))
Avatar billede gregorian Nybegynder
13. marts 2005 - 21:04 #12
sorry.
x1 y1 z1
x2 y2 z2
x3 y3 z3
x4 y4 z4

x2 skal sammeligne om den er større, mindre eller lig x1
x3 skal sammeligne om den er større, mindre eller lig x2
x4 skal sammeligne om den er større, mindre eller lig x3

y2 skal sammeligne om den er større, mindre eller lig y1
y3 skal sammeligne om den er større, mindre eller lig y2
y4 skal sammeligne om den er større, mindre eller lig y3

z2 skal sammeligne om den er større, mindre eller lig z1
z3 skal sammeligne om den er større, mindre eller lig z2
z4 skal sammeligne om den er større, mindre eller lig z3

x1, y1, z1 skal ikke sammenligne med nogen da der ikke er et felt ovenover.

den skal sammenligne forrige resultat med det nuværende.
Avatar billede kabbak Professor
13. marts 2005 - 21:17 #13
Højreklik på din arkfane, vælg vis programkode.

Sæt denne kode derind, den kører når du skifter fra og til arket

Private Sub Worksheet_Activate()
Dim K As Integer, RW As Long, C As Range
Col = Array("X", "Y", "Z") ' de kolonner der skal tjekkes
SRW = 1 ' startrække
SLRW = 4 ' Slutrække
For K = 0 To UBound(Col)
For RW = SRW To SLRW
Set C = Cells(RW, Col(K))
If RW <> SRW Then
If C.Offset(-1, 0) <> "" Then
If C.Offset(-1, 0).Value > C.Value Then C.Interior.Color = vbGreen
If C.Offset(-1, 0).Value = C.Value Then C.Interior.Color = vbYellow
If C.Offset(-1, 0).Value < C.Value Then C.Interior.Color = vbRed
Else
  C.Interior.Color = vbYellow
End If
Else
C.Interior.Color = vbYellow
End If
Next
Next
Set C = Nothing
End Sub
Avatar billede kabbak Professor
13. marts 2005 - 21:21 #14
en lille rettelse
Private Sub Worksheet_Activate()
Dim K As Integer, RW As Long, C As Range
Col = Array("X", "Y", "Z") ' de kolonner der skal tjekkes
SRW = 1 ' startrække
SLRW = 10 ' Slutrække
For K = 0 To UBound(Col)
For RW = SRW To SLRW
Set C = Cells(RW, Col(K))
If RW <> SRW Then
If C.Offset(-1, 0) <> "" And C <> "" Then
If C.Offset(-1, 0).Value > C.Value Then C.Interior.Color = vbGreen
If C.Offset(-1, 0).Value = C.Value Then C.Interior.Color = vbYellow
If C.Offset(-1, 0).Value < C.Value Then C.Interior.Color = vbRed
Else
  C.Interior.Color = vbYellow
End If
Else
C.Interior.Color = vbYellow
End If
Next
Next
Set C = Nothing
End Sub
Avatar billede gregorian Nybegynder
13. marts 2005 - 21:26 #15
har en ting som jeg godt lige vil have implenteret deri..
hvis feltet som den sammenligner fra er tomt så skal den bare være "ingen farve"
altså

x1 y1 z1
x2 y2 z2
x3 y3 z3
x4 y4 z4

hvis x3 y3 z3
    x4 y4 z4
er tomme skal de ikke farvelægges som gul. gul er KUN til hvis den er den samme værdi som den ovenstående. der skal altså bare laves et tjek på at den kun skal gøre det hvis der står en talværdi i feltet
Avatar billede bak Forsker
13. marts 2005 - 21:40 #16
her er et eksempel med betinget formatering..Bare fordi jeg kedede mig :-)

http://www.tbdl.dk/excel/eksempel2.xls
Avatar billede kabbak Professor
13. marts 2005 - 21:44 #17
Bak jeg troede aldrig du kedede dig ;-))

her er en den skal erstatte den anden, den vorker når arket beregnes.

Private Sub Worksheet_Calculate()
Dim K As Integer, RW As Long, C As Range
Col = Array("X", "Y", "Z") ' de kolonner der skal tjekkes
SRW = 1 ' startrække
SLRW = 10 ' Slutrække
For K = 0 To UBound(Col)
    For RW = SRW To SLRW
        Set C = Cells(RW, Col(K))
        If RW <> SRW Then
            If C.Offset(-1, 0) <> "" And C <> "" Then
                If IsNumeric(C.Offset(-1, 0)) And IsNumeric(C) Then
                    If C.Offset(-1, 0).Value > C.Value Then C.Interior.Color = vbGreen
                    If C.Offset(-1, 0).Value = C.Value Then C.Interior.Color = vbYellow
                    If C.Offset(-1, 0).Value < C.Value Then C.Interior.Color = vbRed
                Else
                If IsNumeric(C) Then
                  C.Interior.Color = vbYellow
                  Else
                  C.Interior.ColorIndex = xlNone
                End If
                End If
            Else
            If IsNumeric(C) And C <> "" Then
                  C.Interior.Color = vbYellow
                  Else
                  C.Interior.ColorIndex = xlNone
                End If
        End If
        Else
          C.Interior.Color = vbYellow
        End If
    Next
Next
Set C = Nothing

End Sub
Avatar billede kabbak Professor
13. marts 2005 - 21:47 #18
men bak du kan jo sikkert tune denne kode, så har du jo noget at lave
Avatar billede bak Forsker
13. marts 2005 - 21:51 #19
*lol*
Avatar billede gregorian Nybegynder
13. marts 2005 - 21:58 #20
jeg takker mange gange for jeres ekspertise ..
til kabbak: tak for hjælpen til udforming af macroen
til bak:    mange tak for det rigtige gode eksempel på betinget formatering.
det som jeg syntes var brugbart var af få af vide hvad jeg skulle skrive i formel feltet. og et spørgsmål til det. hvad betyder OG ?

tja. i har begge løst mit problem, men dog mest kabbak.
Bak håber det er fair nok at jeg giver kabbak pointene.
Avatar billede kabbak Professor
13. marts 2005 - 22:00 #21
Du får et svar, så man jo se om der falder noget af. ;-))
Avatar billede gregorian Nybegynder
13. marts 2005 - 22:04 #22
DOG.. så dur den sidste kode ikke.´, som kabbak har skrevet.
den virker kun på kolonne B og ikke c,d,e,f osv.
Avatar billede kabbak Professor
13. marts 2005 - 22:05 #23
hvad mener du , har du rettet i denne

Col = Array("X", "Y", "Z") ' de kolonner der skal tjekkes
Avatar billede bak Forsker
13. marts 2005 - 22:06 #24
Jeg fandt en fejl i eksemplet som nu er rettet.
Det er helt iorden at give kabbak pointene, da han jo har løst opgaven på den måde du ønskede :-)

=OG( B3 < B2; B2 <> "")
betyder at der er to betingelser der skal være opfyldt begge to før end at der skal farves fx grøn. Nemlig at cellen skal være mindre end den ovenstående og at den ovenstående ikke må være blank
Avatar billede gregorian Nybegynder
13. marts 2005 - 22:20 #25
har lige siddet og rodet med det.. ved ikke lige hvor fejlen lå. men rettede og klippede lidt sammen fra begge scripts og det virker nu.

rigtig mange tak for hjælpen begge 2.
har at få lidt forståelse af VB syntaksen.
Avatar billede kabbak Professor
13. marts 2005 - 22:22 #26
tak for point
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
Vi har et stort udvalg af Excel kurser. Find lige det kursus der passer dig lige her.

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