Denna delen av 99 uppdateras inte längre utan har arkiverats inför framtiden som ett museum.
Här kan du läsa mer om varför.
Mac-nyheter hittar du på Macradion.com och forumet hittar du via Applebubblan.

Numbers: Funktionen - SUMMA.OM

Tråden skapades och har fått 57 svar. Det senaste inlägget skrevs .
  • Medlem
  • International user
  • 2011-05-24 16:57

@M. Sundbom
Det har ju ju faktiskt helt rätt i och tack återigen för en ovärderlig hjälp!

Kom fram till att allt handlar ju om hur man placerar förutsättningarna. Det du gjorde i din funktion va att tala om för den att om den är mindre än ett värde så gör du "si" och om det är större än ett annat värde så gör du "så", samtidigt har du sagt till den att om du varken är "si" eller "så" så gör du på ett helt annat sätt och i mitt fall var det om det vore ett värde mellan de två andra..

Det är väl också det som är det kluriga i det hela, att kläcka idén om hur man ska formulera sina förutsättningar så att tre eller fler förutsättningar kan tolkas som endast SANT eller FALSK (som endast är två förutsättningar).
Nåväl, tack!

  • Medlem
  • International user
  • 2012-02-15 20:15

Har på sistone haft lite problem med funktionen "=MEDEL", alltså att helt enkelt ta fram ett medelvärde av ett par celler. Då inga av dessa celler är fyllda med ett tal får jag åter en röd triangel i cellen som skall återge medelvärdet som säger att "Tal kan inte divideras med noll".

Borde inte funktionen i sig fatta att om alla celler är tomma så skall den själv återge talet noll och inte indikera ett fel (en röd triangel)? Det är alltså först då jag fyller i en av cellerna som ett medel räknas ut och ersätter den röda triangeln. Några tips?

Det är logiskt att det blir ett fel. Medelvärdet av ingenting finns inte. Och varför skulle funktionen ge just talet 0? Om man antog att 0/0 var en tillåten operation skulle väl talet 1 ligga närmare till hands. MEDEL() fungerar likadant i Excel.

För att slippa se felmeddelandet när det saknas underlag för att beräkna medelvärdet så kan du använda:
=OM(ÄRFEL(ref);"";MEDEL(ref))

Eller om du verkligen vill ha en nolla:
=OM(ÄRFEL(ref);;MEDEL(ref))

  • Medlem
  • International user
  • 2012-02-16 06:28

Jag förstår hur du tänker även om det fortfarande känns som om att det borde ligga naturligt i funktionen i sig att den ska återge noll (eller ännu bättre (som du nämner); ett, vid ett fel.

Tack för dina exempel. Var något i den stilen jag sökte. Det jag inte visste var att det fanns funktioner som kan returnera värden vid fel. Hittade dock en som heter OMFEL som funkar bra:
=OMFEL(MEDEL(ref);"")

  • Medlem
  • International user
  • 2012-03-09 15:59

Har svårt att hitta lösning på följande två problem:

* Jag vill kunna konvertera en två separat klockslag till ett decimaltal fast i två skilda celler där timman står i ena cellen och minuterna (decimalen) står i en annan. T.ex. skall cellerna 12:00 och 13:25 resp. återge värde "1" i en cell och värde "4" i en annan cell. Tidslängden är ju 1:25 h och i blir därför 1,4 i decimalform, problemet är att jag vill skilja på resultaten så de återges i olika celler.

*Försöker hitta en lösning på hur man återger en sekvens eller en följd. Vill nämligen att en och samma funktion ska gälla för samtliga underliggande rader fast vara specifik för den raden utan att jag ska behöva skriva om funktionen för varje underliggande rad.

Ponera att jag har en funktion i stil med denna: =OM(B1="B738";SANT;FALSKT)
Nu vill jag att samma funktion ska gälla för raden under, alltså enligt följande: =OM(B2="B738";SANT;FALSKT)
Men jag har ca 500 sådana rader och vill inte behöva skriva om alla dessa manuellt bara för att de ska gälla för B1,B2,B3 osv.
Har hört att det finns något som kallas "Macro" som borde lösa detta automatiskt men hittar inte vettig information om detta.

Tack på förhand!

Ursprungligen av iPilot:

Har svårt att hitta lösning på följande två problem:

* Jag vill kunna konvertera en två separat klockslag till ett decimaltal fast i två skilda celler där timman står i ena cellen och minuterna (decimalen) står i en annan. T.ex. skall cellerna 12:00 och 13:25 resp. återge värde "1" i en cell och värde "4" i en annan cell. Tidslängden är ju 1:25 h och i blir därför 1,4 i decimalform, problemet är att jag vill skilja på resultaten så de återges i olika celler.

Ponera att tidpunkt 1 är i cell A1 och tidpunkt 2 i cell B1. Då kan man göra så här (i respektive cell):

KVOT(TID.TILL.TIM(B1-A1), 1)
REST(TID.TILL.TIM(B1-A1), 1)

Citat:

*Försöker hitta en lösning på hur man återger en sekvens eller en följd. Vill nämligen att en och samma funktion ska gälla för samtliga underliggande rader fast vara specifik för den raden utan att jag ska behöva skriva om funktionen för varje underliggande rad.

Ponera att jag har en funktion i stil med denna: =OM(B1="B738";SANT;FALSKT)
Nu vill jag att samma funktion ska gälla för raden under, alltså enligt följande: =OM(B2="B738";SANT;FALSKT)
Men jag har ca 500 sådana rader och vill inte behöva skriva om alla dessa manuellt bara för att de ska gälla för B1,B2,B3 osv.
Har hört att det finns något som kallas "Macro" som borde lösa detta automatiskt men hittar inte vettig information om detta.

Men, det är väl bara att ta tag i lilla runda plutten i nedre högra hörnet på cellen och fylla nedåt? Då ändras ju formelinnehållet till att återspegla aktuell rad. Du får ursäkta ifall jag missuppfattat din fråga alldeles.

  • Medlem
  • International user
  • 2012-03-10 00:46
Ursprungligen av Samuel K:

Ponera att tidpunkt 1 är i cell A1 och tidpunkt 2 i cell B1. Då kan man göra så här (i respektive cell):

KVOT(TID.TILL.TIM(B1-A1), 1)
REST(TID.TILL.TIM(B1-A1), 1)

Det var en god idé och funkar delvis, problemet är dock att då jag använder mig av funktionen "=REST" återges decimalen som 0,4 (från det ursprungliga 1,4). Jag söker dock en lösning där decimalen återges som ett heltal i den angivna cellen, i detta fall "4". Går det att lösa?

Ursprungligen av Samuel K:

Men, det är väl bara att ta tag i lilla runda plutten i nedre högra hörnet på cellen och fylla nedåt? Då ändras ju formelinnehållet till att återspegla aktuell rad. Du får ursäkta ifall jag missuppfattat din fråga alldeles.

Funkar klockrent! Ibland är saker bara för enkla..

Multiplicera det resultat du får från REST med 10? Typ REST(TID.TILL.TIM(B1-A1), 1)*10?

  • Medlem
  • International user
  • 2012-03-10 22:58
Ursprungligen av suddgummi:

Multiplicera det resultat du får från REST med 10? Typ REST(TID.TILL.TIM(B1-A1), 1)*10?

Det var en enkel och bra lösning men av olika anledningar skapade den lite andra problem. Lyckades dock lösa dessa så allt är nu frid och fröjd!

Nu återstår dock ett sista problem. Samtliga funktioner är lösta och det som återstår är nu att kopiera dessa funktioner/celler så att resten av kalkylen funkar på precis samma sätt. Men då jag kopierar cellerna och klistrar in dem på ett annat ställe där jag vill att cellerna ska funka likadant så så kopieras samtliga funktioner korrekt men däremot inte de villkorliga formateringarna.

Tyvärr kan jag heller inte göra som det nämndes tidigare att dra i den lilla plutten i nedre högra hörnet för att låta andra celler funka på samma sätt. Detta med anledning av att jag har celler i kolumnen som är ihopslagna och då tillåts jag inte dra ner plutten längre ner än dit nästa ihopslagna cell finns. Kan också poängtera att de celler som faktiskt markeras genom dragning av plutten heller inte får med den villkorliga formateringen utan endast själva funktionen i sig.

Gör jag något fel eller är systemet byggt så att den villkorliga formateringen aldrig kan kopieras till andra celler utan måste läggas in manuellt i varje enskild cell?

Ursprungligen av iPilot:

Gör jag något fel eller är systemet byggt så att den villkorliga formateringen aldrig kan kopieras till andra celler utan måste läggas in manuellt i varje enskild cell?

Det är gjort så att rad-/kolumnreferenserna per default är relativa till den aktuella cellen, för att det ska vara smidigt att t.ex. kopiera in samma formel i en hel kolumn utan att man ska behöva ändra referenserna på varje rad. Man kan ändra det och få absoluta referenser genom att sätta $ före.

Med $ före kolumnangivelsen (t.ex. $A1) blir kolumnreferensen absolut och ändras inte om formeln kopieras till en annan cell. Sätter man $ före radangivelsen (A$1) blir det tvärtom, medan referensen blir helt konstant med $ före båda (t.ex. $A$1).

  • Medlem
  • International user
  • 2012-03-11 13:28
Ursprungligen av Samuel K:

Det är gjort så att rad-/kolumnreferenserna per default är relativa till den aktuella cellen, för att det ska vara smidigt att t.ex. kopiera in samma formel i en hel kolumn utan att man ska behöva ändra referenserna på varje rad. Man kan ändra det och få absoluta referenser genom att sätta $ före.

Med $ före kolumnangivelsen (t.ex. $A1) blir kolumnreferensen absolut och ändras inte om formeln kopieras till en annan cell. Sätter man $ före radangivelsen (A$1) blir det tvärtom, medan referensen blir helt konstant med $ före båda (t.ex. $A$1).

Jag är med men jag förstår inte hur det ska hjälpa mig att få med den villkorliga formateringen? Jag är ju intresserad av att låta kolumnreferenserna var relativa eftersom samma formel skall gälla för hela kolumnen men somsagt vara relativ till sina rader men också att den villkorliga formateringen skall följa med och vara relativ till sin aktuella rad.

Du får ursäkta om jag missuppfattat dig nu men jag kan inte direkt kalla mig själv en avancerad användare av detta system. Uppskattar dock all hjälp jag får!

Haha, oj. Jag kan nog bara ha läst sådär en hälften av orden i ditt förra inlägg tror jag Har tyvärr ingen koll på hur man gör det där.

Den villkorliga formateringen kommer väl med om man använder målarpenseln? Den kopierar ju cellformatering.

  • Medlem
  • International user
  • 2012-03-11 19:45
Ursprungligen av suddgummi:

Den villkorliga formateringen kommer väl med om man använder målarpenseln? Den kopierar ju cellformatering.

Har sökt som en tok efter målarpenseln men finner inget. Vart hittar jag den och hur använder jag den?

Har nu lyckats få över funktion och villkorlig formatering men det problem som uppstår är att funktionerna som kopieras till de nya cellerna blir relativa till de nya raderna (precis som jag vill ha det) men de villkorliga formateringen följer med som absoluta, alltså precis samma som gällde från cellerna jag kopierade från och inte relativa till de nya raderna jag kopierat till.

Fattar inte varför det ena ska va si och det andra så, varför kan inte bara allt följa samma princip?? Allt följer med och är relativt, enkelt!

Jag mindes fel. Det är i Excel den finns. I Numbers har du "copy style" under Format-menyn (du gör paste style sen). Då ska den ta med villkorsstyrda formateringar.

  • Medlem
  • International user
  • 2012-03-11 21:16
Ursprungligen av suddgummi:

Jag mindes fel. Det är i Excel den finns. I Numbers har du "copy style" under Format-menyn (du gör paste style sen). Då ska den ta med villkorsstyrda formateringar.

Var precis det jag fann då jag sökte på google om målarpensel för Numbers. Testade det i samma veva men det funkade inte på så sätt att den villkorliga formateringen inte följde med som relativ utan följde med som om jag kopierat cellen och klistrat in den som vanligt.

Har kontrollerat så funktionerna står som relativa.

  • Medlem
  • International user
  • 2012-03-17 00:30

Har nu läst mig fram till att Numbers inte stödjer relativ villkorlig formatering. Hoppas verkligen detta ändras till nästa uppdatering. Ska jag vara helt ärlig har jag märkt av många begränsningar i Numbers jämfört med Excel. Samtidigt som jag tycker om att arbeta med Numbers så tycker jag det är väldigt synd att det inte är lika fullständigt i funktioner etc.

Nåväl, har en fråga som jag nu letat i timmar efter (!!):
Jag vill ha en enkel funktion liknande =OM som utför en ekvation om en viss text eller ett visst tecken förekommer i en cell.
Ponera att jag vill att funktionen ska räkna ut en sak om tecknet ":" förekommer i en cell där det står en tidsangivelse, t.ex. 20:00.

I och med att tidsangivelserna alltid kommer vara olika så kan jag ej göra enligt följande =OM(B2="20:00";SANT;FALSKT)
Jag skulle vilja få systemet att förstå att om tecknet ":" finns med så ska den räkna ut funktionen. Och detta berodde alltså återigen på att tiderna alltid kommer vara olika, så det enda konstanta som alltid kommer förekomma är just tecknet ":" oavsett tid.

Om tidsangivelsen är angiven som en sträng, dvs att ":" finns i cellen och inte bara är ett visningsformat, så borde det här fungera:

OM(OMFEL(SÖK(":";B2);FALSKT);SANT)

Om däremot cellen verkligen är tids- eller datumformaterad och alltså inte innehåller ":" (tiden motsvarar egentligen en siffra relativt ett referensdatum) kommer inte formeln att fungera. Testa då denna formel istället.

=OM(OMFEL(TIDVÄRDE(B2);FALSKT);SANT)

  • Medlem
  • International user
  • 2012-03-17 13:43

Mycket tacksam för din hjälp M. Sundbom!
Använde mig av exempel två.

Ytterligare ett dilemma som jag dock tror kan bli svårare att knäcka. Är i behov att göra en tidsindelning som inte riktigt följer standarden. Använder mig av KVOT och REST i vissa celler och jag vill låta tidsangivelserna (i decimalform) avrundas på ett annat sätt än standarden (att 6 minuter motsvarar 0,1). Jag vill få det att funka enligt följande:

Decimal/Minuter
0,1/0-8
0,2/9-14
0,3/15-20
0,4/21-26
0,5/27-32
0,6/33-38
0,7/39-44
0,8/45-50
0,9/51-56
1,0/57-62
1,1/63-

Osv osv...
Summan är alltså att första 0,1 ska motsvara de första 9 minuterna och sen ska det fortsätta i ett mönster motsvarande 6 minuter.

  • Medlem
  • International user
  • 2012-03-18 01:32

I brist på annat kan jag passa på att fråga hur man kan räkna ut skillnaden mellan två klockslag som sträcker sig över midnatt? Ponera att jag vill räkna ut antal timmar mellan 22:00 och 02:00, resultatet bör bli 04:00 timmar.
Jag får dock -18:00 om jag använder mig av någon av följande funktioner:

=E20-G20
=OMFEL(KVOT(TID.TILL.TIM(G20-E20);1);99)

Efter mycket letande (åter igen..) har jag bara kommit fram till att Number än en gång inte stödjer detta! Att man istället måste "lura systemet" med en funktion likt denna:

=OM(ELLER(ÄRTOM(B2);ÄRTOM(C2));"";KLOCKSLAG(0;0;AVRUNDA((OM(TIDVÄRDE(C2)>TIDVÄRDE(B2);0;1)+TIDVÄRDE(C2)-TIDVÄRDE(B2))24*6060;0)))

Dels förstår jag den inte just nu (börjar bli rätt sent) och dels får jag den inte att funka (syntaxfel).
Det måste väl finnas någon enklare funktion för detta där programmet automatiskt känner igen att man gått över till nästa dygn?

Jag vet inte hur dina ingångsdata är definierade, men om man använder ett talformat som innehåller både datum och tidpunkt kommer datumskarven inte påverka differensen. Visningsformatet kan ställas in att bara visa tt.mm om det är så du vill ha det. Det viktiga är att ha ett referensdatum i botten, även om det är oväsentligt i sammanhanget.

(Din långa formel saknar två * eller / beroende på om du försöker omvandla från dag till sekund eller tvärtom.)

  • Medlem
  • International user
  • 2012-03-20 16:58
Ursprungligen av M. Sundbom:

Jag vet inte hur dina ingångsdata är definierade, men om man använder ett talformat som innehåller både datum och tidpunkt kommer datumskarven inte påverka differensen. Visningsformatet kan ställas in att bara visa tt.mm om det är så du vill ha det. Det viktiga är att ha ett referensdatum i botten, även om det är oväsentligt i sammanhanget.

(Din långa formel saknar två * eller / beroende på om du försöker omvandla från dag till sekund eller tvärtom.)

Är inte helt hundra på vad du menar i första stycket men jag ser nu att jag lyckats lösa det genom lite olika avrundningar etc. Har inte prövat ut det till 100% ännu men återkommer om problemet kvarstår.

Beträffande den långa formeln så skulle jag vilja kombinera den med en annan funktion men får det inte att gå ihop helt och finner inte felet. Skulle vilja kombinera följande funktioner:

=OM(ELLER(ÄRTOM(B2);ÄRTOM(C2));"";KLOCKSLAG(0;0;AVRUNDA((OM(TIDVÄRDE(C2)>TIDVÄRDE(B2);0;1)+TIDVÄRDE( C2)-TIDVÄRDE(B2))*24*60*60;0)))

=OMFEL(KVOT(TID.TILL.TIM(C2-B2);1);99)

Tanken är att tiden som räknas ut (t.ex. 01:54) ska konverteras till decimalform och sendan ska jag räkna ut kvot/rest på denna. Tidigare använde jag mig endast av den kortare av de två formlerna men måste nu kombinera den med den långa formeln så att Numbers accepterar tider som passerar midnatt.

Efter lite mek kommer jag fram till följande:

=OMFEL(ELLER(ÄRTOM(B2);ÄRTOM(C2));99;(KVOT(TID.TILL.TIM((KLOCKSLAG(0;0;AVRUNDA((OM(TIDVÄRDE(C2)>TIDVÄRDE(B2);0;1)+TIDVÄRDE(C2)-TIDVÄRDE(B2))*24*60*60))));0)))

Vart tänker jag fel?

Vore toppen om någon kan hjälpa mig med denna:

=OM(SUMMA(F2:F7)-(SUMMA(G2:G7)>0;SUMMA(F2:F7)-(SUMMA(G2:G7);0)))

Jag kan inte begripa vad som är fel, jag är ingen hejare på matte men denna trodde jag faktiskt att jag förstått plus att formeln funkar som den skall i NeoOffice!

  • Medlem
  • International user
  • 2012-05-16 09:11
Ursprungligen av NettySpetty:

Vore toppen om någon kan hjälpa mig med denna:

=OM(SUMMA(F2:F7)-(SUMMA(G2:G7)>0;SUMMA(F2:F7)-(SUMMA(G2:G7);0)))

Jag kan inte begripa vad som är fel, jag är ingen hejare på matte men denna trodde jag faktiskt att jag förstått plus att formeln funkar som den skall i NeoOffice!

Precis som M. Sundbom visas I sin funktion så handlar allt om vart du placerar dina parenteser. I övrigt ser funktionen korrekt ut.

Så här kanske?

=OM((SUMMA(F2:F7)-SUMMA(G2:G7))>0;SUMMA(F2:F7)-SUMMA(G2:G7);0)

Tyckte jag hade testat alla varianter med parenteser men tydligen inte just den där!

=OM((SUMMA(F2:F7)-SUMMA(G2:G7))>0;SUMMA(F2:F7)-SUMMA(G2:G7);0)

Vill ni förklara varför där är två parenteser kring ((SUMMA(F2:F7)-SUMMA(G2:G7)) i den första delen men inte den andra (vad nu de olika delarna här kallas.

1000 tack!

OM() har här tre argument åtskilda av semikolon. Det får inte finnas parenteser som omfattar flera argument.

Den yttre parentesen i (SUMMA(F2:F7)-SUMMA(G2:G7)) kan tas bort. Jag satte dit den för säkerhets skull då jag var osäker på om > utvärderas före minus (hade inte numbers på den datorn).

  • Medlem
  • International user
  • 2016-03-14 19:57

Liten fundering på samma spår; Skapar ett kalkylblad i Numbers för att summera lön. Jag har 3 olika OB-tillägg som jag behöver nästla in i mina OM-funktioner.

OB A - Storhelg
OB B - Helg samt alla dagar mellan 22-06
OB C - Fredag efter 19

OB A är ju inte svår eftersom den omfattar hela dagen så på den kan man lätt ta antal arbetstimmar multiplicerat med OB-tilägget. Problemet blir på OB B- och C. Några idéer om hur dessa ska bakas in i en OM-funktion?

Fråga två: finns det en möjlighet för Numbers att automatiskt känna av (baserat på datumet som man fyller i i cellen) om datumet infaller på en helg t.ex.? I dagsläget måste man kryssa i en kryssruta manuellt för att tala om för systemet att OB-tilägget ska tillfalla.

Bevaka tråden