PNG32 PNG32 PNG32 PNG32
PNG32
Forum Excel, VBA, VSTO, Exceltips, Excelhj�lp PNG32 drivs av Excelspecialisten    Logga in     English
PNG32
PNG32 PNG32
PNG32

Logga in

PNG32

Du är inte inloggad. Logga in eller registrera dig för att skriva inlägg eller svara på inlägg.

För frågor om forumet, kontakta oss på webmaster@excelforum.se

PNG32 PNG32
PNG32 PNG32
PNG32

Excelforum

PNG32

 
ForumForumDiskussionerDiskussionerExcelExcelAntal unika värden som villkor i formelAntal unika värden som villkor i formel
Föregående Föregående
 
Nästa Nästa
Nytt inlägg
 2017-10-05 22:58
 
Hej, första gången jag skriver här så gör mig lycklig! Jag har verkligen försökt Googla mig fram till ett svar men utan resultat. Jag eftersöker ett sätt att summera antal unika värden i en kolumn utifrån några övriga kriterier. Låt säga att jag driver en arkadhall och har ett register över användandet av mina maskiner där en kunds användande av en maskin genererar en rad i excel-arket. Det finns tre kolumner: Kolumn A innehåller kundens personnummer enligt ÅÅMMDD-XXXX Kolumn B innehåller uppgift om kön: "Man" eller "Kvinna" Kolumn C innehåller uppgift om vilken av mina fyra maskiner som användes: "Frogger", "Space Invader", "PacMan" eller "Donkey Kong". Nu vill jag analysera kundernas användarbeteende i min arkadhall. Varje rad motsvarar ett spel så jag kan enkelt se om vilken maskin som används mest, om det finns någon könsskillnader i användandet av maskiner osv. Jag kan enkelt skriva formler i en tom cell som automatiskt räknar ut hur många gånger en viss maskin använts av en man respektive kvinna. Vad datat i detta läge inte tar hänsyn till är hur många unika användare som exempelvis spelar Frogger. Det kan ju vara så att Frogger har använts flest gånger men av väldigt få användare. Detta vore bra för mig att veta. Det här med att sortera ut unika värden verkar vara tämligen krångligt. Jag är medveten om att jag kan skapa en tabell av mina data och sortera bort dubletter för att få kvar unika användare per maskin. Detta är jag inte intresserad av, mitt mål är att nå fram till en formel som automatisk räknar ut detta åt mig. Där jag alltså kan fortsätta fylla i mina löpande data vart efter folk spelar i min arkadhall och excelarket löpande uppdaterar statistiken åt mig. I formelväg har jag inte kommit längre än vad office supporten ger mig: https://support.office.com/sv-se/article/R%C3%A4kna-unika-v%C3%A4rden-bland-dubbletter-8d9a69b3-b867-490e-82e0-a929fbc1e273 Dessa formler tillåter mig att automatiskt beräkna antalet unika personnummer i Kolumn A. Då vet jag hur många unika användare jag har i min arkadhall. Jag skulle vilja använda detta som ett villkor i en formel så att jag kan få veta exempelvis hur många unika användare som spelat Frogger. Eller med ytterligare villkor: Hur många unika kvinnliga användare har spelat Donkey Kong. För att förtydliga, om följande tre likadana rader återfinns i mina data...: P nr Kön Maskin 040201-1234 Man Frogger 040201-1234 Man Frogger 040201-1234 Man Frogger ...så vill jag ha en formel som återger värdet 1, dvs svarar på frågan hur många unika män har spelat Frogger. Hoppas jag är supertydlig och hoppas någon kan hjälpa mig!
Nytt inlägg
 2017-10-05 23:03
 
Jag känner mig idiotförklarad men om någon till att börja med kan förklara varför alla mina radbrytningar försvann i ursprungsinlägget så kan jag kanske skriva om det i mer överskådlig design. Tack.
Nytt inlägg
 2017-10-06 09:34
 
 Ändrad av anonymous  på 2017-10-06 09:43:29

På din andra fråga är väl svaret att man alltid får kopiera inlägget innan man trycker på skicka. Om det ser ut som skit så redigerar man, klistrar in och testar olika kryss tills man råkar få till det rätt (som du förstår är jag inte någon större fan av formateringarna, eller ”meddela” på det här forumet....)

Din ursprungsfråga:
Har du kollat pivottabeller? Jag tror att de skulle ge dig en väldigt trevlig översikt. Om du t.ex lägger individ som radetikett och spel som KolumnEtikett så får du en bra översikt över hur många gånger olika individer spelat olika spel, hur många spel osv.

Men formellösning går det också. Det här är en ganska ineffektiv metod (beräkningskrävande). Men jag gillar "pedagogiken" i den (antar 100 rader och att du vill hitta unika individer som spelat frogger). 

 =PRODUKTSUMMA(($C$2:$C$101="Frogger")/ANTAL.OMF($A$2:$A$101;$A$2:$A$101;$C$2:$C$101;$C$2:$C$101))

Om du vill först hur den fungerar så kan du skapa en hjälpkolumn, t.ex i D och skriva in dn här formeln i D2

=ANTAL.OMF($C$2:$C$200;C2;$A$2:$A$200;A2)

Den berättar hur många rader med likadana kombinationer av spel/person det finns för varje rad. Om du ändrar formeln till:

=1/ANTAL.OMF($C$2:$C$200;C2;$A$2:$A$200;A2)

Så får varje rad en "vikt" beroende på hur många liknande rader det finns.  Om det t.ex finns 5 kombinationer av Nisse och packman så blir vikten 1/5. 
Det här betyder att summan av dina 5 rader = 1. Så om du summerar din hjälpkolumn så får du ut totala antalet unika kombinationer. 

När man lägger till produktsumma så berättar man för excel att man vill summera hela matrisen på en gång.  Det här ger t.ex det totala antalet unika individer:

=PRODUKTSUMMA(1/ANTAL.OM($A$2:$A$101;$A$2:$A$101))

Sen använder man villkoret (="frogger") för att berätta vilka individer man vill räkna (froggerspelare). Och Antal.OMF för att bara räkna de som har unilka kombinationer

 

 =PRODUKTSUMMA(($C$2:$C$101="Frogger")/ANTAL.OMF($A$2:$A$101;$A$2:$A$101;$C$2:$C$101;$C$2:$C$101))

 Ähh, lek runt

 

Nytt inlägg
 2017-10-06 14:18
 
Hej, tack för ett bra svar ano. Nya formler för mig så det tar ett tag förstå allt.

Angående Pivottabell så har jag koll på hur det funkar. I det här fallet handlar det om att jag försöker skapa ett dokument som automatiskt räknar ut vissa nyckeltal som vi följer i verksamheten (som tyvärr inte är en arkadhall, det blev bara ett kul exempel). Detta för att jag ska slippa vara den som en chef måste vända sig till för att få fram sina siffror alternativt den som måste lära alla chefer hur excel och pivottabeller med mera fungerar.

Jag gillar ditt sätt att ta fram unika värden, har inte stött på idén om att vikta dubbletter ännu. Det som ständigt slår mig är att det inte tagits fram någon färdig formel för att kunna använda sig unika värden på ett effektivt sätt. Jag hittar bara en massa olika, ofta briljanta, men tämligen avancerade lösningar på problemet.

Jag har tre följdfrågor:

1. Jag fick dina formler att fungera så länge jag höll mig till mitt fiktiva exempel. I min verksamhet så kommer de värden i exemplet motsvarar spelen inte vara textuella utan bestå av en fyrsiffrig kombination, t ex kan en kategori vara 1421 och en annan 1347. När jag prövade din formel men med ett siffervärde slutade formeln att fungera (ja, jag döpte självklart om kategorierna i kolumn C till sifferkategorierna innan jag prövade). Varför blir det så och finns det en lösning på det?

2. Nu förstår jag din formel lite för dåligt ännu för att kunna leka med den. Men hur gör jag om jag vill lägga till ytterligare ett villkor? Din formel ställer tar inte hänsyn till vilket kön de unika individerna som spelat Frogger har. Känns som man bör kunna lägga in två villkor, att det ska ha spelats Frogger och att spelaren ska vara man och sen räkna antal unika individer som uppfyller dessa kriterier. Har du en lösning på detta?

3. Din formel tycks endast fungera om jag anger intervall som faktiskt innehåller värden. Om jag har 100 rader med data så fungerar den (t ex C2:C101) men om jag endast har 99 rader med data (rad 101 är helt tom) så får jag #DIVIDION/0! Finns det någon enkel justering för detta, dvs att formeln inte ska ta hänsyn till tomma rader? Jag tänkte utifrån att mina data ständigt fylls på med nya rader vartefter och att jag då vill slippa gå in och justera intervallen hela tiden.

Jag håller tummarna för svar!
Nytt inlägg
 2017-10-09 09:44
 

Hej. PowerPivott skall klara av att räkna unika värden. Tyvärr har jag aldrig satt mig in P-Pivot eftersom det alltid kommer något annat emellan. Om du inte vill/kan använda PP så är du nog låst vid en massa speciallösningar.

Om du lägger dina rådata i en ”formaterad” tabell så kommer en kopplad pivottabell att få utökat dataområde automatiskt när data fylls på. Då behöver du bara lägga en instruktion till chefen att hen måste högerklicka och uppdatera. Med formler kopplade till pivoten så kan du presentera svaren i ett annat blad.

Svar på dina frågor

1.                   Om jag skall gissa så råkade du behålla citationstecknen trots att det var siffror. Dvs du skrev =”1347” istället för =1347

2.                Det beror på hur du vill definiera UNIK. I ditt arkadexempel så är t.ex KÖN en underkategori till personnummer (ett personnummer är alltid = samma kön). Dvs det skall inte ingå i skapandet av unika vikter (eftersom det är personnumret som gör individen unik). Då räcker det att lägga till ett extra villkor
=PRODUKTSUMMA(($B$2:$B$101="M")*($C$2:$C$101="Frogger")
/ANTAL.OMF($A$2:$A$101;$A$2:$A$101;$C$2:$C$101;$C$2:$C$101))
Om du vill kunna dela upp på ytterligare en egenskap som inte ingår i individen eller spelmaskin (t.ex veckodag) så måste du även ändra den högra delen av formeln (Antal.omf). Din ”viktning” måste ta hänsyn till den oberoende enheten och du får lägga till ett villkor till i antal.omf() T.ex B-kolumnen
=PRODUKTSUMMA(($B$2:$B$101=”Mån”)*($C$2:$C$101="Frogger")/ANTAL.OMF($A$2:$A$101;$A$2:$A$101;$C$2:$C$101;$C$2:$C$101;$B$2:$B$101;$B$2:$B$101))
OBS! att summan av alla veckodagar med unika personer/frogger blir större än summan av unika personer/frogger (eftersom samma person blir 2 unika om hen spelar måndag + tisdag).
Du måste ha järnkoll på vad u menar med egenskapen unik

3.                Det lättaste är att utgå ifrån en definierad tabell med rubriker (infoga-tabell). Du utökas ju områdena automagiskt när data fylls på. Dvs din formel med kön blir någonting i stil med:
=PRODUKTSUMMA((Tabell1[kön]="k")*(Tabell1[Maskin]="Frogger")
/ANTAL.OMF(Tabell1[personnummer];Tabell1[personnummer];Tabell1[Maskin];Tabell1[Maskin]))

Division/0 är tyvärr svår att slippa eftersom felmedelandet genereras även om du väljer att inte ta med raden i sumeringen.
Om vi antar att en rad alltid är helt tom/ helt ifylld så kan du låta personnumret representera raden.  Lägg in ett extra villkor så att det måste stå något i cellen för raden skall räknas.
 (Tabell1[personnummer]<>"")*…
Sen kan du även lägga in ett villkor i nämnaren så att vi fyller på en etta när det egentligen skall vara en 0:a.
/((Tabell1[personnummer]="")*1+ANTAL.OMF
Sammanslaget:
=PRODUKTSUMMA((Tabell1[personnummer]<>"")*(Tabell1[Maskin]="Frogger")
/((Tabell1[personnummer]="")*1+ANTAL.OMF(Tabell1[personnummer];Tabell1[personnummer];Tabell1[Maskin];Tabell1[Maskin])))

 

Men skulle även kunna tänka sig att använda OMFEL():
=PRODUKTSUMMA(OMFEL((Tabell1[Maskin]="Frogger")/(ANTAL.OMF(Tabell1[personnummer];Tabell1[personnummer];Tabell1[Maskin];Tabell1[Maskin]));0))

Men då måste du mat in det som en matrisformel (Ctrl+shift+enter)

Men jag tror som sagt var att det är något slags pivott som är smidigast för dig.

Nytt inlägg
 2017-10-09 10:10
 

Hmmm, det kanske är dags att uppdatera excel. Pivottabellerna från och med Excel 2013 klarar av att räkna uika värden: 

 https://stackoverflow.com/questions/11876238/simple-pivot-table-to-count-unique-values

ca 3 inlägg ner

Nytt inlägg
 2019-06-24 18:45
 

Jag kapar den här tråden. Är behov av att räkna unika värden i ett rådatadokument med ca 60000 rader.

Dessvärre finns det tomma celler på vissa rader och nedan uträkning ger #DIVISION/0 pga de tomma cellerna.

Hur löser jag problemet? Det måste väl finnas något jag kan lägga in så de tomma celler ignoreras?

 

anonymous skrev:

 =PRODUKTSUMMA(($C$2:$C$101="Frogger")/ANTAL.OMF($A$2:$A$101;$A$2:$A$101;$C$2:$C$101;$C$2:$C$101))

 

 

Nytt inlägg
 2019-06-25 09:03
 
Hej hej

Just nu ser jag dessvärre inget annat sätt än att klä din data så att alla rader har något värde. I formeln nedan så blir resultatet antal rader som har frogger i kolumn A och där kolumn Cs värden endast tas med en gång. Således kan du om du ersätter dina tomma värden med "Har inget värde" få fram rätt resultat med att ta bort 1 från ditt resultat.

=PRODUKTSUMMA(($C$2:$C$101="Frogger")/ANTAL.OMF($A$2:$A$101;$A$2:$A$101;$C$2:$C$101;$C$2:$C$101))-1

Även kolumn A måste vara komplett för att formeln ska fungera, denna är dock redan villkorad mot "frogger" så här behöver du inte ta bort något, utan original formeln fungerar rakt av så länge som du inte längre har tomma värden..

En alternativ lösning är naturligtvis att använda VBA. Inte världens lättaste uppgift då du har ganska mycket data som måste köras mot sig självt och därmed kräver dictionary metoder om man inte vill vänta i år och dar för att få ett resultat :).

mvh
Christian
Nytt inlägg
 2019-06-25 09:15
 
 Ändrad av Christian  på 2019-06-25 09:23:52
Hej igen

lyckades hitta en lösning till dig: Hej hej

=PRODUKTSUMMA(($C$2:$C$101="Frogger")/ANTAL.OMF($A$2:$A$101;$A$2:$A$101&"";$C$2:$C$101;$C$2:$C$101&""))

Om det är så att du har tomma värden i kolumn C så behöver du ta bort -1..
=PRODUKTSUMMA(($C$2:$C$101="Frogger")/ANTAL.OMF($A$2:$A$101;$A$2:$A$101&"";$C$2:$C$101;$C$2:$C$101&""))-1


mvh
Christian
Nytt inlägg
 2019-06-25 15:11
 

 Är behov av att räkna unika värden i ett rådatadokument med ca 60000 rader.

Vill du bara räkna unika värden utan resten av krånglet i originalfrågan?

Testa att kopiera din data-kolumn någon annanstans och gå till DATA->dataverktyg->ta bort dubbletter. Då får du facit och vet hur många unika det är.

I normalfallet det enklaste och effektivaste bortsett från en pivottabell..

 

Formelmässigt kan du hålla det enkelt. Men det blir en väldigt seg formel om du har  60 000 rader data eftersom det i princip blir 60 000 X60 000 uppslag i din enda formel. 

Om det bara är siffror:

=PRODUKTSUMMA((FREKVENS(A1:A60000;A1:A60000)>0)*1)

 

Om det kan vara text så kan du köra en förenklad variant av Christian formel. Den struntar i tomma celler så du behöver inte köra -1

=PRODUKTSUMMA(($A$1:$A$60000<>"")/ANTAL.OMF($A$1:$A$60000;$A$1:$A$60000&""))

 

Sen borde det gå att köra en variant med "MÄNGD()" eftersom man kan be den strunta i felmeddelanden. Men jag får inte till det.

Föregående Föregående
 
Nästa Nästa
ForumForumDiskussionerDiskussionerExcelExcelAntal unika värden som villkor i formelAntal unika värden som villkor i formel

PNG32 PNG32
Excelforum drivs av Excelspecialisten som bedriver utbildning i Excel och VBA, tillhandahåller support och hjälp med Excel, utvecklar program i Excel. Är ni i behov av en konsult inom Excel, VBA eller VSTO, eller söker en excelkurs, kontakta oss.
Copyright 2013 ExcelSpecialisten XLS AB   Användarvillkor  Personliga uppgifter