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

 
ForumForumDiskussionerDiskussionerExcelExcelhitta 50 / 50 enkelthitta 50 / 50 enkelt
Föregående Föregående
 
Nästa Nästa
Nytt inlägg
 2023-04-18 05:30
 

Hej igen,

Är osäker på vad du syftar på för gammal funktion. SUMMA.OM(F) kan man under vissa omständighter ersätta med funktionen PRODUKTSUMMA.

INDEX, PASSA (MATCH är samma som PASSA i engelsk Excel) är en bättre och mer flexibel lösning än LETARAD() (VLOOKUP på engelska),

Måste lösningen vara baserad på Excelformler?

Ett enkelt alternativ för att snabba upp prestandan är ju i annat fall att skriva lite kod i VBA.

Nytt inlägg
 2023-04-18 16:29
 
 >>Den där lösningen ser mycket intressant ut, men det tillåter inga tomma celler väl<<

Tråden är för lång så jag orkar inte ta reda på varför du har 3 kolumner. Men det spelar ingen roll. Om du kör A's hjälpkolumn i D istället så borde det bli likadant

Nollvärden/tomma borde inte vara något problem. Du använder ju bara hjälpkolumnen för att hitta brytpunkten. Så i cell D1 blir det den vanliga =SUMMA(A:A)*0,5

sen kan du hämta A-värdet precis likadant. Eller med hjälp av N() för att städa eventuell osynligt skräp i A-kolumnen och omvandla falskt "o-tomma" celler till tal (0) i hjälpkolumnen (om de "tomma" cellerna i A innehåller resterna av en formel eller liknande. Annar skall det funka rakt av)

support.microsoft.com/office/a624cad1...

i D2 blir det då: 

= D1-N(A2)

Sen spelar det ingen roll om det finns 0:or/tomma celler i A-kolumnen. Brytpunkten mellan +- hamnar på samma ställe i alla fall

Använd Filter för att ta fram de data du vill titta på för helt vanlig summa, antal och min-värden. Typ:

=SUMMA(FILTER(A:A;D:D>0))

=ANTAL(FILTER(A:A;D:D>0))

=MIN(FILTER(A:A;D:D>0))

Om du vill var 100% säker på att inga tomma A-värden kommer med så kan du inkludera A-kolumnen i filtret också:

=ANTAL(FILTER(A:A;(D:D>0)*(A:A<>"")))

=MIN(FILTER(A:A;(D:D>0)*(A:A<>"")))

=SUMMA(FILTER(A:A;(D:D>0)*(A:A<>"")))

OSV.  Man kan tro att Filter skulle kräva en massa kraft eftersom man i princip skapar osyndliga hjälpkolumner. Men när jag slumpar fram 100k rader och kör FILTER på det så märks det knappast.

Jag skulle vilja säga att ditt aktuella problem passar klockrent för ett upplägg med hjälpkolumner. Även om det skulle finnas en supersmart funktion som gör allt i ett steg är det inte värt besväret. Om du skulle ha miljontals rader så skulle det förmodligen vara värt att köra en PowerPivot eller PowerQuery (eller byta till en databashanterare). Men krångla inte till det i onödan.

Nytt inlägg
 2023-04-18 17:14
 

 Ah, såg direkt vad jag måste göra för investering, uppgradera mitt office, kör det mesta i gamla excel 2010 då jag tycker den fungerar bättre och snabbare än 2019 som jag också har, tyvärr verkar det ha tillkommit en del nya formler i senaste utgåvan, bl.a. FILTER, det verkar vara en intressant formel, får kolla vidare på den.

Tackar så länge

Nytt inlägg
 2023-04-18 17:16
 

 Behöver absolut inte vara just formler, jag har redan en del VBA kod som jag inte har kunskap i, och tyvärr inte heller möjlighet att få hjälp därifrån längre.

Nytt inlägg
 2023-04-19 12:52
 

 Ja, filter är guld värt. Det behövs inte i ditt fall, men allt blir mycket enklare.

Om du skaffar 365 får du vara beredd på en lite chock. Det är en större ändring än vanligt. Men klart värt det.

Framför allt har "filosofin" kring matrisformler bytt ut helt och hållet . Nu behandlas allt som Matrisformler (som om du tidigare matat in med Ctrl+shift+enter) och du måste aktivt be excel att behandla en formel rad för rad (med @-tecken). Det är ett jätteframsteg, men när du konverterar kommer du att få en del obegripliga @-tecken i dina gamla formler.

 

De här borde funka även i Excel 2010 om du har fått till hjälpkolumnerna (typ Gondi's tips)

antal

=PRODUKTSUMMA((D:D>0)*(A:A<>""))

Minsta (funktionen"hållaren" Mängd)

=MÄNGD(15;6;A:A/((D:D>0)*(A:A<>""));1)

Summa

=PRODUKTSUMMA((D:D>0)*(A:A<>"")*(A:A))

elle, om du har skräp i A:

=PRODUKTSUMMA((D:D>0)*(A:A<>"")*OMFEL((A:A)*1;0))

Nytt inlägg
 2023-04-19 19:43
 
 Ändrad av Gondi  på 2023-04-20 10:40:28

God kväll på er,

Joker, nu har jag gjort en "Excel2010-vänlig" version åt dig så länge du kör 64-bitars Excel, annars kommer du nästan garanterat få slut på minne med ett så stort dataset som 700K rader och 105 kolumner. Bara det blir ju över 70 miljoner celler. 32-bitars Excel har en minnesbegränsning i teorin på 2GB per arbetsbok. Oracle har dock påvisat att redan efter en minnesanvändning på drygt 700 MB kan 32-bitars Excel börja uppträda oförutsägbart.

(docs.oracle.com/applications/smartview/710/SVICG/memory_usage_considerations_for_smart_view_with_excel_32-bit_and_64-bit.htm)

Jag har iallafall vidareutvecklat mitt förslag till "version 2.0". Nu behöver man inga hjälpkolumner och det finns dessutom inte en enda cellreferens i Excels adressformat (A1:B2), alla cellreferenser använder namngivna adressområden och fält för att förhoppningsvis optimera för stora dataset.

Så här ser version 2.0 ut.

Tabellreferenser

Tabell: tbTalserie

Tabell rubrikrad: tbTalserie[#Rubriker]

Kolumn A: [A]

Kolumn B: [B]

Kolumn C: [C]

Namngivna områden

Cell E2: RadA

Cell E3: RadB

Cell E4: RadC

Cell E7: Grans

Formler rubriker

A1: =SUMMA(tbTalserie[A])%

B1: =SUMMA(tbTalserie[B])%

C1: =SUMMA(tbTalserie[C])%

F1: ="Poster totalt: "&ANTAL(tbTalserie[A])*KOLUMNER(tbTalserie)

Formler hämta värden

A2: =OM(ELLER(Grans<=0;Grans>100);"";INDEX(tbTalserie[A];RadA))

A3: =OM(ELLER(Grans<=0;Grans>100);"";INDEX(tbTalserie[A];RadB))

A4: =OM(ELLER(Grans<=0;Grans>100);"";INDEX(tbTalserie[A];RadC))

B2: =OM(ELLER(Grans<=0;Grans>100);"";INDEX(tbTalserie[B];RadA))

B3: =OM(ELLER(Grans<=0;Grans>100);"";INDEX(tbTalserie[B];RadB))

B4: =OM(ELLER(Grans<=0;Grans>100);"";INDEX(tbTalserie[B];RadC))

C2: =OM(ELLER(Grans<=0;Grans>100);"";INDEX(tbTalserie[C];RadA))

C3: =OM(ELLER(Grans<=0;Grans>100);"";INDEX(tbTalserie[C];RadB))

C4: =OM(ELLER(Grans<=0;Grans>100);"";INDEX(tbTalserie[C];RadC))

Formler hitta cellrader

D2: =OM(ELLER(Grans<=0;Grans>100);"";"A"&RadA+RAD(tbTalserie[[#Rubriker];[A]]))

D3: =OM(ELLER(Grans<=0;Grans>100);"";"B"&RadB+RAD(tbTalserie[[#Rubriker];[B]]))

D4: =OM(ELLER(Grans<=0;Grans>100);"";"C"&RadC+RAD(tbTalserie[[#Rubriker];[C]]))

E2: =OM(ELLER(Grans<=0;Grans>100);"";MINSTA(OM(DELSUMMA(9;FÖRSKJUTNING(tbTalserie[A];;;RAD(tbTalserie[A])-RAD(tbTalserie[[#Rubriker];[A]])))/SUMMA(tbTalserie[A])%>=Grans;(RAD(tbTalserie[A]))-RAD(tbTalserie[#Rubriker]));1))

E3: =OM(ELLER(Grans<=0;Grans>100);"";MINSTA(OM(DELSUMMA(9;FÖRSKJUTNING(tbTalserie[B];;;RAD(tbTalserie[B])-RAD(tbTalserie[[#Rubriker];[B]])))/SUMMA(tbTalserie[B])%>=Grans;(RAD(tbTalserie[B]))-RAD(tbTalserie[#Rubriker]));1))

E4: =OM(ELLER(Grans<=0;Grans>100);"";MINSTA(OM(DELSUMMA(9;FÖRSKJUTNING(tbTalserie[C];;;RAD(tbTalserie[C])-RAD(tbTalserie[[#Rubriker];[C]])))/SUMMA(tbTalserie[C])%>=Grans;(RAD(tbTalserie[C]))-RAD(tbTalserie[#Rubriker]));1))

Formler räkna poster

F2: =ANTAL(FÖRSKJUTNING(tbTalserie[A];;;RadA))&" / "&ANTAL(tbTalserie[A])

F3: =ANTAL(FÖRSKJUTNING(tbTalserie[B];;;RadB))&" / "&ANTAL(tbTalserie[B])

F4: =ANTAL(FÖRSKJUTNING(tbTalserie[C];;;RadC))&" / "&ANTAL(tbTalserie[C])

Det är alltihop på ett enda arbetsblad i mindre än 25 formler.

Nu är det bara att testköra om du vill och se om det fungerar bättre utan miljontals hjälpceller och externa referenser.

Lycka till!

Nytt inlägg
 2023-04-22 06:25
 

 Ursäkta dröjsmålet med svar på din tabell, har varit mycket jobb men nu har jag suttit några timmar men hur svårt ska det vara, får ändå inte till det, frustrerande, följande behöver jag nog få klarhet i, en del celler visar rätt men långt ifrån alla men tror dock det "bara" är några få fel som jag behöver rätta till för att kunna testköra.

Är det 3 olika tabeller, i så fall behövs ju 3 olika tabellnamn eller ?

Jag får värden i A1, B1, C1 dock får jag 0,43 istället för 43% osv. provade formatera om just de cellerna till procent men det verkar inte vara rätt.

F1 får jag samma som du så den verkar ju vara rätt.

E2 till E4 blir 0 i alla 3 så det kan vara rätt bara jag får till resten.

A2 till D4 får jag REFERENS fel i alla.

Jag hade A1 till F4 som tabell först och då kunde man ju inte se formlerna som jag kopierade in, ser ju ändå ut som det ska kunna vara en tabell där uppe, men är osäker.

D1, här provade jag skriva som det står i din skärmdump men det kanske är en dold formel där också ?

E1 likaså, ingen formel eller finns det något dolt där också ?

E6 likaså, eller är även dessa en egen tabell ?

Följande hittar jag inte heller var jag ska ange och google tror sig bara hitta till microsoft hjälp och den vet man ju att den inte ger något som ger rätt svar, tyvärr, jag provade högerklick och skriva men det verkar ju inte vara så enkelt.

Tabell rubrikrad: tbTalserie[#Rubriker]

Kolumn A: [A]

Kolumn B: [B]

Kolumn C: [C]

Namngivna områden

Cell E2: RadA

Cell E3: RadB

Cell E4: RadC

Cell E7: Grans

Förstår inte hur det kan vara så hopplöst, tacksam för all hjälp än så länge i alla fall.

Nytt inlägg
 2023-04-22 07:12
 
 Ändrad av Gondi  på 2023-04-22 08:17:40

God morgon Jokern!

Man måste göra allt i rätt ordning:

  1. För att skapa de namngivna områdena RadARadBRadC och Grans så skriver du bara in orden uppe till vänster där cellens namn står. Exempelvis där det står E2 skriver du RadA, E3 RadB, E3 RadC. och i E7 Grans.

  2. För att skapa en tabell (tbTalserie) av dataområdet behöver du bara markera det och trycka Ctrl+T, eller på menyraden välja "Formatera som tabell". Excel kommer namnge tabellen som "Tabell1" eller något liknande. För att ändra namnet kan du antingen gå in i Namnhanteraren som återfinns under menyalternativet "Formler", eller klicka någonstans i tabellen och sen klicka på "Tabellverktyg" längst uppe på Excelmenyn. Om du har skrivit AB och C som rubriker i tabellen kommer Excel automatiskt namnge dem som tbTalserie[A] osv. tbTalserie[#Rubriker] skapas också automatiskt av Excel. Det är alltså en tabell (tbTalserie) med tre kolumner [A]:[C], inte tre olika tabeller.

  3. Om du använder Excel 2010 måste formlerna i cell E2, E3 och E4 anges som matrisformler genom att trycka Ctrl+Shift+Enter - istället för bara Enter. Excel kommer då automatiskt omge formlerna med "Curly brackets" { och }.

E2: {=OM(ELLER(Grans<=0;Grans>100);"";MINSTA(OM(DELSUMMA(9;FÖRSKJUTNING(tbTalserie[A];;;RAD(tbTalserie[A])-RAD(tbTalserie[[#Rubriker];[A]])))/SUMMA(tbTalserie[A])%>=Grans;(RAD(tbTalserie[A]))-RAD(tbTalserie[#Rubriker]));1))}

E3: {=OM(ELLER(Grans<=0;Grans>100);"";MINSTA(OM(DELSUMMA(9;FÖRSKJUTNING(tbTalserie[B];;;RAD(tbTalserie[B])-RAD(tbTalserie[[#Rubriker];[B]])))/SUMMA(tbTalserie[B])%>=Grans;(RAD(tbTalserie[B]))-RAD(tbTalserie[#Rubriker]));1))}

E4: {=OM(ELLER(Grans<=0;Grans>100);"";MINSTA(OM(DELSUMMA(9;FÖRSKJUTNING(tbTalserie[C];;;RAD(tbTalserie[C])-RAD(tbTalserie[[#Rubriker];[C]])))/SUMMA(tbTalserie[C])%>=Grans;(RAD(tbTalserie[C]))-RAD(tbTalserie[#Rubriker]));1))}

Cellerna E1 och D1 är bara vanlig text, där kan du skriva vad du vill.

 

Nytt inlägg
 2023-04-22 09:42
 

God morgon Gondi

Tack för snabbt svar idag, nu är det nära, det var att det är matris som var svaret.

Men jag har stött på nya problem, jag tänkte ju hårdtesta detta nu med 757k rader, borde väl gå bra tänkte jag, men när jag kopierar in den texten, endast värden så får jag bara 275 / 2437 i kolumn A, totala antalet borde vara 173250 i kolumn 1, och datorn varvar upp och fortsätter räkna men den verkar inte orka den mängden trots att det bara är 3 kolumner, antagligen räknade den väl kanske bara så långt ner som den vant sig vid men jag kom ju även på att jag kommer ju inte att få rätt värden ändå, blir knepigt att förklara detta men får försöka.

Tänk dig att jag istället för % satserna i A1:A3 vill sätta egna där istället eftersom jag inte kommer att kunna skriva ut de miljoner rader som behövs för att komma upp rätt summa och jag vill ju i kolumn A i detta fall komma upp i 21,5% då det är 50% av 43, även om jag bara kan skriva ut rader så jag bara kommer upp i summan 35%.

Därför jag försöker nöja mig med att "bara" behöva skriva ut raderna för högsta %siffran, den vänstra eftersom svaret jag vill komma åt blir ju samma för de övriga 2, i detta fall 192 / 2187 MEN som sagt för min nästa beräkning så är det bara 192 som är det relevanta då förklaringen ligger ju då i följande resultat som visat sig överlägset:

100% = 2187

50% =192

50% = 1995

Alltså i poäng räknat fördelningen att 8,78% står för 50%

Övriga 91,22% står också för 50%

Omräknat i enklare förståelse och avrundat till 9% / 91% så skulle det betyda att det går åt 91 stycken amatörer för att vara jämnspelande mot 9 proffs :)

Nåväl, frågan är om det blir möjligt att göra detta om jag inte ens kan kopiera in så många värden för att uppnå 50%, man vet ju inte hur långt ner det går, det enda man med säkerhet vet är att ju lägre %sats desto längre ner behöver man gå för att uppnå 50%.

 

Nytt inlägg
 2023-04-22 09:57
 

Hej igen,

Mitt förslag är att ta det "steg-för-steg".

  1. Se först till att få den befintliga tabellen att fungera med de befintliga värden och födelningen 43-31-26 och 6561 poster.
  2. Lägg till poster några i taget. kanske i steg om först 6561, sen 2 * 6561, sen 10 * 6561 för att fastställa var det slutar fungera, så kan vi gemensamt åtgärda det om det går.
  3. När det fungerar med kanske 150K rader kan du sen göra ditt slutgiltiga test med 700K rader.

Efter ovan fungerar kan vi labborera med att ändra procentsatserna för fördelningen dynamiskt genom att mata in dem som parametrar liknande gränsvärdet du söker.

Föregående Föregående
 
Nästa Nästa
ForumForumDiskussionerDiskussionerExcelExcelhitta 50 / 50 enkelthitta 50 / 50 enkelt

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