webForumDet fria alternativet

Uträkning av värden

8 svar · 724 visningar · startad av SoulGod

SoulGodMedlem sedan aug. 20051 200 inlägg
#1

Jag vill ha en uträkning, som visar hur många "värden" det finns.
T.ex att räkna ut hur många det finns av dessa:
1
1
1
2
2
2
2
3
3

Då skall t.ex "1" bara räknas som en, även om den finns med flera gånger ...
Så detta skall alltså ge svaret "3"
Vad är koden?
/martin

SirPeterMedlem sedan feb. 200115 571 inlägg
#2

Är det i Excel du menar eller?

Engelsk version: =COUNTIF(A:A;1)

Svensk version: =ANTAL.OM(A:A;1)

Förutsatt att det handlar om A-kolumnen vill säga.

SoulGodMedlem sedan aug. 20051 200 inlägg
#3

Förlåt, missade att skriva .. *ler*
Jo, det är excel...
Dock får jag inte din "lösning" att fungera..

Får svaret "0"
Och ja, det ligger i a-kolumnen.

MindreVetandeMedlem sedan okt. 2005371 inlägg
#4

Svensk excel och svensk windows? Då skall SirPeter's formel fungera. Om du har engelsk windows får du byta ut ; mot ,

Möjligt fel 2 Kommer data från något annat program?
Är du säker på att det är inmatat som tal? Markera kolumnen och gå till menyn: Data->text till kolumn->avgränsade fält->nästa-> ta bort alla kryss och tryck slutför

Tveksamhet Men vad är det du vill veta egentligen? är det antal 1:or osv eller vill du veta hur många unika värden du har?

Exempel för att hitta antal unika värden (förutsätter att din lista är sorterad)
=PRODUKTSUMMA((A1:A9<>A2:A10)*1)
Obs förskjutningen! 1-9 jämfört med 2-10. I princip räknar den antal celler som är anorlunda än den som står nedanför.
Motsvarar en matrisformel i stil med:
{=ANTAL(OM(A1:A9<>A2:A10;1))}
men det tycker jag är krångligare.

SirPeterMedlem sedan feb. 200115 571 inlägg
#5

MindreVetande skrev:

Svensk excel och svensk windows? Då skall SirPeter's formel fungera. Om du har engelsk windows får du byta ut ; mot ,

Icke. Jag kör engelskt rakt över och där är det semikolon.
Menar du inte tvärtom isf?

MindreVetandeMedlem sedan okt. 2005371 inlägg
#6

SirPeter skrev:

Icke. Jag kör engelskt rakt över och där är det semikolon.
Menar du inte tvärtom isf?

Nej, men jag var väldigt otydlig. Menade engelska landsinställningar i windows, inte själva språket (kontrollpanelen, nationella alternativ)? Tror det är listavgränsaren som bestämmer skilljetecken i excelformler.

Det är en rörig smet, språk i excel och landsinställningar i windows.

SoulGodMedlem sedan aug. 20051 200 inlägg
#7

Ber om ursäkt, gjorde ett dåligt exempel.
Ett fält skall vara text-baserad.
Alltså räkna hur många "olika" värden det finns.
Så om t.ex "jippi" står med 5 ggr, skall det bara räknas 1 ggn....

Hur gör jag ? =)
Svensk OS & Svensk Excel

MindreVetandeMedlem sedan okt. 2005371 inlägg
#8

SoulGod skrev:

Ett fält skall vara text-baserad.
Alltså räkna hur många "olika" värden det finns.
Så om t.ex "jippi" står med 5 ggr, skall det bara räknas 1 ggn....

Det bästa jag kan komma på är exemplet jag gav:

=PRODUKTSUMMA((A1:A60<>A2:A61)*1)

där A1:A60 är list-området du är ute efter (utan rubriker, du kan låta det vara lite för "långt" om du vill ha plats med flera värden) och A2:A61 är samma område förskjutet ett steg nedåt.

Kräver att du sorterar listan.

******Tillägg*******
Se även
http://support.microsoft.com/default.aspx?scid=kb%3Bsv%3B268001
Men det är en krånglig matrisformel, särskilt om du vill använda textvärden. Jag föredrar produktsumma, även om den kräver sortering.

MindreVetandeMedlem sedan okt. 2005371 inlägg
#9

=PRODUKTSUMMA((A1:A60<>"")/ANTAL.OM(A1:A60;A1:A60&""))

Blev tvungen att googla lite på kvällen. Det här måste vara den optimala formlen.
=PRODUKTSUMMA(1/ANTAL.OM(A1:A60;A1:A60))

produktsumma är ett sätt att summera matriser utan att göra matrisformler, dvs den jobbar med hela matrisen A1-A60Xen annan matris.
I det här fallet summerar vi bara ihop en matris bestående av 1/[antalförekomster av värdet i Ax i A1:A60]
För cell A1 kollar den hur många gånger värdet i A1 finns i matrisen A1:A60
ANTAL.OM(A1:A60;A1:A60)
sen tar den A2 osv

men vi är inte intreserade av summan av förekomster utan 1/antal förekomster
1/ANTAL.OM(A1:A60;A1:A60)
Varför? Det syns enklast genom att titta på ett exempel:
Om T.ex värdet "jippi" finns 3 gånger så kommer man att summera 1/3 + 1/3 + 1/3=1

Smart eller? Helt oberoende av ordningen på cellerna.

Problemet är att den här formeln inte klarar av tomma celler i området. Om cell Ax är tom skulle man kunna tro att ANTAL.OM(A1:A60;A1:A60) returnerar antal tomma celler. NEJ man kommer att få 0 i retur och 1/ingenting är som bekant inte speciellt trevligt i dator/mattesamanhang.

Men lyckligtvis är det några som tänkt till och lagt ut sina tankar på nätet:
=PRODUKTSUMMA((A1:A60<>"")/ANTAL.OM(A1:A60;A1:A60&""))

steg1, kolla om cell Ax är tom:
Eftersom det "egentligen" är en matrisformel så tolkas en parantes som ett vilkor, dvs (A1:A60<>"") blir bara sant (Sant=1) om Ax har ett värde, dvs man dividerar bara om den skall ingå i summan (annars skulle tomma celler räknas som ett värde.

Det borde gå att ersätta den delen av formeln med 1 och minska summan med 1 istället
typ
=PRODUKTSUMMA(1/ANTAL.OM(A1:A60;A1:A60&""))-1
men då får man ett mystiskt fel som jag inte listat ut vad det beror på...

Slutet av formeln är lite knepigare, det är ett fulknep för att slippa 1/0 vid tomma celler
ANTAL.OM(A1:A60;A1:A60&"")
det avslutande &"" är ett sätt att lägga till en nollsträng i "sök efter" istället för ett felmeddelande. Det betyder att den faktiskt hittar något och man slipper "/0 fel"

137 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
134 ms — hämta tråd, inlägg och bilagor (db)