Just nu i M3-nätverket
Gå till innehåll

Summera inte tomma celler vid uträkningar (=SUMMA)


jbo
 Share

Rekommendera Poster

Jag vill i cellen D2 räkna ut skillnaden mellan värdena i cellerna C2 och B2, men ENDAST om det finns ett värde i cellen B2. Sedan vill jag på det sedvanliga sättet överföra denna formel till de respektive celler som följer därunder (dvs med +funktionen dra markören nedåt för önskat antal celler med samma formel överförd till dessa - i det här fallet alltså

C3, B3 och så vidare så långt som behövs).

 

Mer i detalj handlar det om skillnaden mellan tiderna (datum och klockslag) i kolumnerna C och B för ett antal rader nedåt bildande ett block (mestadels bestående av 2-8 rader beroende på vad som behövs för det blocket), varefter en summering av värdena för dessa rader görs på sista raden för detta block. Sedan följer en nytt block på samma vis, och så vidare tills en bestämd period med dagar är uppfylld (t.ex. en månad).

Det är dock så att cellerna i B-kolumnen många gånger skall vara utan värde (helt tomma) och skall i de fallen inte tas med i uträkningen, dvs tomma celler skall exkluderas från beräkningen, vilket förmodligen, och hellre, skulle innebära att Excel inte skall utföra någon beräkningen överhuvudtaget när en cell i B-kolumnen är tom.

 

När jag bara använder den enklaste formeln för uträkningen, dvs =SUMMA(C2-B2) räknar Excel ut summan korrekt så länge alla celler innehåller ett värde, men Excel räknar alltså även ut en summa när värdet i B-cellen (B2 i det här fallet) är tom - och då utgår Excel från att värdet i en tom cell motsvarar klockslaget 00:00:00, vilket alltså blir helt fel i det här fallet.

 

Frågan är alltså: Hur ställer jag upp rätt formel för att få Excel att räkna ut skillnaden mellan värdena i C- respektive B-cellerna ENDAST om cellerna har ett värde (dvs inte utföra beräkningen när det finns tomma celler i B-kolumnen)?

Poängen är som sagt att det sedan också enkelt skall gå att överföra formeln vidare nedåt i excelarket enl. ovan (d.v.s. block för block i.o.m. att sista raden i varje block, som beskrivits ovan, summerar det totala cellvärdena kolumn för kolumn för resp. block).

 

EDIT

Jag testade med att använda OM (=OM(B2>0;C2-B2)).

Det fungerar - om än inte på det mest eleganta viset (värdet för de celler som skall räknas ut görs korrekt; värdet som inte skall räknas ut returnerar värdet "FALSKT" - och det är enkelt att förnya formeln nedåt i excelarket på det vis jag beskrivit ovan).

Idealet hade alltså varit om Excel inte alls gör uträkningar om någon cell i B-kolumnen är tom. Så om någon har någon enkel och funktionell lösning för en hur en sådan formel skall se ut är jag fortfarande mycket intresserad...

Redigerad av jbo
Länk till kommentar
Dela på andra webbplatser

Jo, precis, jag upptäckte det efter en del testande, skrev in det som en EDIT - som inte blev postad förrän precis nu, men som sagt, det blir kanske inte den elegantaste lösningen - om det nu går att få till en sådan där Excel helt utesluter att beräkna värdet om en viss cell är tom.

Men tusen tack ändå Mikael63!

Länk till kommentar
Dela på andra webbplatser

En lösning kan vara att använda dig av LÄNGD i cellen D2

=IF(LEN(B2)=0;"";C2-B2)

Har engelsk version av Excel, men tror formeln heter LÄNGD i den svenska versionen av Excel

Om cellen B2 är tom kommer det bli blankt i cell D2, i annat fall visas resultatet av  beräkningen

 

Redigerad av Automan
  • Gilla 1
Länk till kommentar
Dela på andra webbplatser

5 minuter sedan, skrev Automan:

En lösning kan vara att använda dig av LÄNGD i cellen D2


=IF(LEN(B2)=0;"";C2-B2)

Har engelsk version av Excel, men tror formeln heter LÄNGD i den svenska versionen av Excel

Om cellen B2 är tom kommer det bli blankt i cell D2, i annat fall visas resultatet av  beräkningen

 

Tusen tack Automan!

Låter som det skulle fungera.

I svensk version blir det väl:

=OM(LÄNGD(B2)=0;"";C2-B2)

Skall testa senare i dag/kväll, eller imorgon natt.

Står lite annat på agendan nu...

Länk till kommentar
Dela på andra webbplatser

Var tvungen att kasta in formeln innan jag stängde ned.

- Jovisst fungerar det, celler som inte skall beräknas blir tomma, övriga korrekt uträknade :) 

Även om själva funktionen (uträkningsresultatet) blir detsamma ser det faktiskt mycket trevligare ut.

Den enda invändningen jag nu har är riktad mot mig själv - jag är för mycket nybörjare för att förstå syntaxen i den här formeln. Men det borde väl gå att hitta något ställe där man förklarar logiken och dess ingående element. Om det är någon som känner till en bra sådan webbplats är det såklart trevligt med en länk...

Länk till kommentar
Dela på andra webbplatser

5 minuter sedan, skrev Mikael63:

=OM(B2>0;C2-B2;"")

 

Toppen!

Testat och lika bra resultat som Automans, men detta var ju än mer enkelt och elegant :)!

Tyvärr har jag lika lite koll på syntaxen här - d.v.s. vad semikolonet och citattecknen på slutet har för funktion ( vad de står för). Vore toppen att få en bra länk till var man kan lära sig om detta då det ju kommer att dyka upp mängder med andra liknande tillfällen.

 

Länk till kommentar
Dela på andra webbplatser

Bägge formlerna ger samma slutresultat, men håller med om att Mikael63:s är snyggare än min

 

=OM(B2>0;C2-B2;"")

 

B2>0 är villlkoret som testas i OM formeln

C2-B2 är vad som sker om villkoret är sant, dvs. att B2 är större än 0

"" innebär att inget skrivs ut om villkoret är falsk

Du använder semikolon för att separera villkoren

 

=OM(VILLKOR;OM SANT GÖR FÖLJANDE;OM FALSK GÖR FÖLJANDE)

Mitt exempel ger samma resultat, men kollar istället om det finns något i cellen

 

=OM(LÄNGD(B2)=0;"";C2-B2)

dvs.

=OM(LÄNGDEN AV INNEHÅLLET I CELL B2 ÄR 0;OM SANT, SKRIV INTE UT NÅGOT;OM FALSKT RÄKNA UT SKILLNADEN)

Det brukar ofta finnas flera olika sätt att göra uträkningar och villkor i Excel, men jag är bara en novis i detta sammanhang. @MH_ är dock master Yoda när det gäller Excel och den som verkar ha oceaner av kunskap inom detta område.

 

 

 

Redigerad av Automan
  • Gilla 2
Länk till kommentar
Dela på andra webbplatser

1 timme sedan, skrev Automan:

Bägge formlerna ger samma slutresultat, men håller med om att Mikael63:s är snyggare än min

 

=OM(B2>0;C2-B2;"")

 

B2>0 är villlkoret som testas i OM formeln

C2-B2 är vad som sker om villkoret är sant, dvs. att B2 är större än 0

"" innebär att inget skrivs ut om villkoret är falsk

Du använder semikolon för att separera villkoren

 


=OM(VILLKOR;OM SANT GÖR FÖLJANDE;OM FALSK GÖR FÖLJANDE)

Mitt exempel ger samma resultat, men kollar istället om det finns något i cellen

 


=OM(LÄNGD(B2)=0;"";C2-B2)

dvs.

=OM(LÄNGDEN AV INNEHÅLLET I CELL B2 ÄR 0;OM SANT, SKRIV INTE UT NÅGOT;OM FALSKT RÄKNA UT SKILLNADEN)

Det brukar ofta finnas flera olika sätt att göra uträkningar och villkor i Excel, men jag är bara en novis i detta sammanhang. @MH_ är dock master Yoda när det gäller Excel och den som verkar ha oceaner av kunskap inom detta område.

 

 

 

Tusen Tack!

Som novis gläder jag mig åt att det även finns de med en master Yoda i pedagogik - din beskrivning är både tydlig och enkel utan att göra avkall på det formellt korrekta.

Då har jag syntaxen för dessa delar klar för mig och kan, tror jag just nu i alla fall, börja använda den mer kreativt...

  • Tack 1
Länk till kommentar
Dela på andra webbplatser

 Share

×
×
  • Skapa nytt...