webForumDet fria alternativet

antal.omf med flera variabler i ett villkorsområde

Kontorsprogram

5 svar · 2 617 visningar · startad av DTWK

Medlem sedan okt. 20133 inlägg
Frågan#1

Hej,

Har en formel som ser ut såhär =ANTAL.OMF(Orginal!$C$2:Orginal!$C$26931;35;Orginal!$E$2:Orginal!$E$26931;"O+")

Jag letar alltså efter antal som har värdet 35 i kolumn C och O+ i kolumn E och det fungerar bra. Problemet är att jag inte letar efter bara 35, det är ok om värdet i kolumn C är 35 eller 36 eller 38. En variant är ju att skriva

=SUMMA(ANTAL.OMF(Orginal!$C$2:Orginal!$C$26931;35;Orginal!$E$2:Orginal!$E$26931;"O+");ANTAL.OMF(Orginal!$C$2:Orginal!$C$26931;36;Orginal!$E$2:Orginal!$E$26931;"O+");ANTAL.OMF(Orginal!$C$2:Orginal!$C$26931;38;Orginal!$E$2:Orginal!$E$26931;"O+"))

men det känns onödligt krångligt och med tanke på att det här är en av ett hundratal liknande formler jag ska skriva, vore skönt om det fanns ett smidigare sätt.

Tacksam för hjälp

mvh

Edit: Gäller naturligtvis Excel och jag har version 2007

Medlem sedan nov. 201253 inlägg
#2

Produktsumma?

kräver dock att du använder Excels villkorslogik istället för OCH/ELLER. Det är enklare än det ser ut. Om du skriver ett villkor inom parentes så returneras sant(1) eller falskt(0). vilket gör att du kan summera antalet rader som uppfyller villkor.

********Intro**********
Exempel (för en rad)
(C1=35) Ger sant=1 om C1 är 35

(C1=35)*(E1="0+") ger ett (1) om båda villkoren är uppfyllda och 0 om minst ett av villkoren är ogiltigt (samma sak som OCH() om du bara skulle göra det för en rad)

Vill du istället räkna ELLER så kan du testa det här (obs. du måste ha koll på antalet parenteser):

(((C1=35)+(C1=36)+(C1=38))>0)
Dvs minst ett av villkoren behöver vara uppfyllt
Och/eller blir så här:
(((C1=35)+(C1=36)+(C1=38))>0)*(E1="0+")
Dvs C1 skall vara ett av de tre värden och E1 skall vara = 0+
********/Intro**********

Ok, det där var ju kul för en rad i taget. Nu kommer magiken, nämligen vår älskade produktsumma som gör att vi kan summera alla celler i ett intervall

Säg att E1 måste vara = "0+"
Och c skall vara 35 eller 36 eller 39...
Då fungerar det här:

=PRODUKTSUMMA((E1:E100="0+")*1;(((C1:C100=35)+(C1:C100=36)+(C1:C100=39))>0)*1)

Egentligen kan du skriva det kortare, men då blir det så svårt att hålla reda på parantesträsket
=PRODUKTSUMMA((E1:E100="0+")*(((C1:C100=35)+(C1:C100=36)+(C1:C100=39))>0))

Vill du ha intervall blir det marginellt lättare det skulle du egentligen klara med antal.omf:

Det här skulle t.ex hitta de rader där E="0+" och c är mellan 35 och 39
=PRODUKTSUMMA((E1:E100="0+")*1;(C1:C100>=35)*(C1:C100<=39))
Motsvarar
=ANTAL.OMF(E1:E100;"0+";C1:C100;">=35";C1:C100;"<=39")

Man skulle egentligen villa köra OCH samt ELLER, men det funkar inte bra i produktsumma

Medlem sedan okt. 20133 inlägg
#3

Tack! Det var många intressanta alternativ. Nu går jag hem för dagen men ska prova imorgon. Tack igen :)

Medlem sedan nov. 201253 inlägg
#4

Google is tha shit

Och om får tummen ur och Googlar hittar man de riktigt bra sakerna. Kolla sista posten i den här tråden:
http://www.ozgrid.com/forum/showthread.php?t=27600

Det här blir äckligt elegant:
=PRODUKTSUMMA(1*(E1:E100="0+");1*ÄRTAL(PASSA(C1:C100;{35;36;38};0)))

Borde dessutom fungera utan strul.

Fast det är klart, dina långa adresser förstör det vackra lite grand.
=PRODUKTSUMMA(1*(Orginal!$E$2:$E$26931="0+");1*ÄRTAL(PASSA(Orginal!$C$2:$C$26931;{35;36;38};0)))

Vad sägs om att använda lite namngivna områden bara för estetikens skull? :OO

Medlem sedan okt. 20133 inlägg
#5

=PRODUKTSUMMA(1*(E1:E100="0+");1*ÄRTAL(PASSA(C1:C100;{35;36; 38};0)))
gillar jag mest men får den inte att fungera. Resultatet blir 0 så jag testade att bryta ner den då får jag #VÄRDEFEL! på (PASSA(C1:C100;{35;36;38};0)) och FALSKT på ÄRTAL(PASSA(C1:C100;{35;36;38};0))

Däremot fungerar =ANTAL.OMF(E1:E100;"0+";C1:C100;">=35";C1:C100;"<=39") som jag oxå gillar men den fungerar ju inte så bra när det inte är intervall eftersom den blir jättelång då. Som tur är är det mesta jag gör intervall så det får nog bli den varianten :)

Medlem sedan nov. 201253 inlägg
#6

Hej, min gissning är att du råkade få med Webforums mellanslag före 38?

Eftersom det är matrisformler går inte att kontrollera utanför Produktsumma eller anger att det är en matrisformel.

Delarna är alltså:
=PRODUKTSUMMA(1*(E1:E100="0+"))
respektive
=PRODUKTSUMMA(1*ÄRTAL(PASSA(C1:C100;{35;36;38};0)))

Hmm, Vad händer om man klistrar in det som kod? går det att kopiera då?

=PRODUKTSUMMA(1*(Orginal!$E$2:Orginal!$E$26931="0+");1*ÄRTAL(PASSA(Orginal!$C$2:Orginal!$C$26931;{35;36;38};0)))
259 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
125 ms — deklarationer (db)
0 ms — hämta statistik (cache)
131 ms — hämta tråd, inlägg och bilagor (db)
124 ms — ändringar (db)