# Excel: villkorstyrd formatering
Author: vastberg

Hejsan. Jag har gjor en lista med 4 kolumner per rad och i kolumn 1 finns "starttid" och i kolumn 2 finns "sluttid" enligt följande:

**Startid    Sluttid   Plats   Område  
**09:00    10:30    GUP    TUB  
10:45    11:30    HÖK    TUB  
...

Jag skulle vilja ha en funktion som läser av aktuell tid ( kanske =NU() ) och jämför den med **starttid** och **sluttid** så att ifall aktuell tid ligger inom tidsspannet så blir bakgrundndsfärgen för denna rad grön och annars blir bakgrundsfärgen röd. Detta måste naturligvis uppdateras kontinuerligt så att man kan ha excelarket öppet.

Upptäckte ganska snart att jag hade alldeles för dåliga kunskaper i Excel för att kunna genomföra detta. Ni som vet bättre - är detta genomförbart, och i så fall hur?

 Mycket tacksam för svar!

## Comment 1
Author: johan

Du kan inte få det att uppdateras helt med automatik utan makron, men varje gång du skriver i bladet eller trycker F9 så uppdateras det.

1.  Markera tabellen och gå till Format, Villkorstyrd formatering
2.  Välj Formeln är i första listan
3.  Ange följande formel:  
    \=OCH($A2<=KLOCKSLAG(TIMME(NU()); MINUT(NU()); SEKUND(NU())); $B2>=KLOCKSLAG(TIMME(NU()); MINUT(NU()); SEKUND(NU())))
4.  Tryck på Formatera och formatera med grön bakgrundsfärg
5.  Tryck Ok

Varje gång du nu trycker på F9 så räknas bladet om och formateringen uppdateras.

Om du vill ha alla andra rader röda så formaterar du dom som vanligt med röd fyllningsfärg.

Bifogar en fil med ett exempel.

// Johan

## Comment 2
Author: vastberg

Underbart! tack Johan, helt suveränt1

Tyvärr hittar jag inte någon bifogad fil.

Mvh  
Martin V

## Comment 3
Author: vastberg

En sista fråga Johan ![Skrattande](../tiny_mce/plugins/emotions/images/smiley-laughing.gif)

 Du skrev i din kommentar att man inte kan få detta att uppdateras automatiskt utan macro... Går det att skiva ett macro som uppdaterar sidan exempelvis en gång per minut?

Mvh  
Martin V

## Comment 4
Author: johan

Ja, öppna Visual Basic Editorn (Alt+F11) och dubbelklicka på ThisWorkbook. Lägg in följande kod:

Private Sub Workbook\_Open()  
    Recalc  
End Sub

Skapa en ny modul (Infoga, Modul) och klistra in följande kod:

Public Sub Recalc()  
    ActiveSheet.Calculate  
    Application.OnTime Now + (1 / 24 / 60), "Recalc"  
End Sub

Spara arbetsboken, stäng den och öppna den igen.

// Johan

## Comment 5
Author: johan

Det verkar som att zip-filer inte får laddas upp, men skicka ett privat meddelanden till mig med din mailadress så skickar jag den den vägen.

(Klicka på min avatar till vänster, gå till fliken Kontakta)

## Comment 6
Author: vastberg

Super! Tack så mycket Johan, du är en klippa!

Har märkt en sak bara, när klockslaget går över till nästa dygn fungerar det inte, ex. 23:00 - 01:00.

Går det på något sätt att matcha datum och klockslag istället för enbart klockslag för att på detta sätt komma runt detta problem?

Mvh  
Martin

## Comment 7
Author: johan

Ja, det blir nästan bara enklare. Om du i cellerna skriver hela datum och klockslag kan du sedan kontrollera om det är större eller mindre än NU().

Det borde alltså blir:

\=OCH($A2<=NU(); $B2>=NU())

Men då gäller det som sagt att du skrivit hela datum och klockslag i cellerna, typ 2007-07-30 22:45.

## Comment 8
Author: vastberg

Oki, men tyvärr är det här ett schema som fortlöper oberoende av dag och datum, så då måste man väl uppdatera listan och ändra till dagens datum varje gång man ska använda den?

Dessutom kan inte kolumnbredden vara så bred att hela datumet och klockslag syns i cellerna, vilket kommer att göra det väldigt oöverskådligt då man bara kommer att kunna se en del av datumet.

Går det på något annat sätt att matcha formeln så att när kl går över 23:59 så matchas det på något annat sätt?
