Just nu i M3-nätverket
Gå till innehåll
Vice Hövdingen

Senaste poster i Etikettfilter i pivottabell

Rekommendera Poster

Hej

 

Jag har en pivottabell där jag varje vecka uppdaterar värden. Som kolumnrubrik har jag veckonummer, och min fråga är om man automatiskt kan filtrera etikettfilter på 10 högsta värdena (dvs 10 senaste veckorna i mitt fall) likt det man kan göra i värdefiltret.

 

Tack på förhand!

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser

Jag har för mig det kan finnas en property som går att sätta i VBA men minns inte vad den hette.

 

Enklast är nog att

1: Sortera på dina etiketter (vecka)

2: lägg även in vecka som värdefält, räkna medel (borde bli samma som veckonumret som är värdefilter.

3: Lägga till visa top 10, basera på vecko-fältet bland värdena.

 

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser

jag minns nog fel VBA för att begränsa antal rader.

 

Lägg istället in en kolumn till i din datatabell där du räknar fram vilka veckor (de tio senaste är enkelt att räkna fram) och sätta ett tecken i kolumnen för rader, veckor, du vill ha med.

Lägg till det tecknet som filter på tabellen och du ser enbart dessa.

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser

Det var förtvivlat vad det skulle vara svårt då... Efter lite googlande och pusslande utifrån vad du skriver Monshi blev lösningen följande, Med start i Cell P4 och 10 celler neråt. Notera att det är en matrisformel.

 

{=INDEX(tblData[Vecka];PASSA(STÖRSTA(OM(ANTAL.OM($P$3:P3;tblData[Vecka])=0;ANTAL.OM(tblData[Vecka];"<"&tblData[Vecka]);"");1);ANTAL.OM(tblData[Vecka];"<"&tblData[Vecka]);0))}

 

I min tabell är det sedan enkelt att lägga in följande formel för att se om respektive vecka är bland de 10 största:

 

=OM(OCH([@Vecka]<=$P$4;[@Vecka]>=$P$13);"Ja";"Nej")

 

 

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser

Matrisformler är beräkningsintensiva. Borde gå att lösa enklare.

=OM([@Vecka]>STÖRSTA([Vecka];10);[@Vecka];"")

exempelvis.

eller i kortformat

=([@Vecka]>STÖRSTA([Vecka];10))*[@Vecka]

som dock ger nollvärde i alla veckor som inte ska visas.

 

 

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser

Nja, detta verkar förtvivlat svårt. Problemet är att respektive vecka kan förekomma många gånger i databasen, men vill ju ändå selektera ut de 10 hösta "unika" om ni förstår vad jag menar. Nedan skall alltså generera att de 10 senaste veckorna är vecka 4-13. I ert fall tar det ju bara de 10 högsta posterna, dvs 9-13.

 

Tack för er hjälp ändå så här långt!

 

13

13

13

12

12

12

11

10

10

9

9

8

8

7

7

7

6

5

5

4

4

3

3

2

2

2

1

1

osv...

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser
Postad (redigerade)

Om du inte har gluggar i din tidserie så borde "min" formel göra precis det. 

Alla veckonummer som är större än sista veckonumret-10 får en etta.

Dvs den tar alltid de 10 sista kalenderveckorna.

Men om du egentligen vill visa de 10 sista veckorna med data (typ hoppa över semestern) så blir det fel

15 timmar sedan, MH_resurrected säger:

=1*([@vecka]>(MAX([vecka])-10))

Redigerad av MH_resurrected
Skrev på mobil + Jag tror att jag blivit ordblind på gamla dar.

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser
19 timmar sedan, Vice Hövdingen säger:

Det var förtvivlat vad det skulle vara svårt då... Efter lite googlande och pusslande utifrån vad du skriver Monshi blev lösningen följande, Med start i Cell P4 och 10 celler neråt. Notera att det är en matrisformel.

 

{=INDEX(tblData[Vecka];PASSA(STÖRSTA(OM(ANTAL.OM($P$3:P3;tblData[Vecka])=0;ANTAL.OM(tblData[Vecka];"<"&tblData[Vecka]);"");1);ANTAL.OM(tblData[Vecka];"<"&tblData[Vecka]);0))}

 

I min tabell är det sedan enkelt att lägga in följande formel för att se om respektive vecka är bland de 10 största:

 

=OM(OCH([@Vecka]<=$P$4;[@Vecka]>=$P$13);"Ja";"Nej")

 

 

 

19 timmar sedan, Vice Hövdingen säger:

Gaaaaah jag ångrar mig. Har man för mycket data (dvs många tusen rader i tabellen) blir den formeln sjuuuuukt seg... Suck :angry:

 

På sidan:

https://exceljet.net/formula/nth-largest-value-with-duplicates

Visas en matrisformeln som gör samma som din, men författaren varierar formeln lite grand mellan cellerna och gör den lite effektivare. I din cell P4

=MAX(tblData[Vecka])

Och i P5 en matrisformel:

{=MAX(OM(tblData[Vecka]<P4;tblData[Vecka]))}

som dras ner till P13.

Jag slumpade fram 100000 rader och det körs fort. Och den hittar gluggar när jag kortar ner exempeltabellen. Kolla hur det blir i din.

 

Sen kan du skippa [@Vecka]<=$P$4 i din tabellformel. Alla veckonummer kommer att vara <=$P$4 eftersom det är max

=OM([@Vecka]>=$P$13;"Ja";"Nej")

 

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser

Äh, det är VECKOR vi talar om. 52 st.

Behövs inga matrisformler. Bara en stödtabell om 52 rader som max.

Skriv veckonummer i en ny kolumn, ny tabell.

Bredvid

=OM(ÄRFEL(PASSA(G2;$A$2:$A$30;0));"";G2)

där g2 är din lilla tabell med veckor

A2:A30 finns dina egentliga veckor

Och i kolumn brevid

=STÖRSTA(H2:H54;10)

och i din tabell bara en jämförelse som ovan om veckonumret är större än det i cellen med STÖRSTA i skriv veckonumret till ny kolumn och basera pivot på denna.

Exempelvis.

Borde inte ta mycket beräkningskraft. Om så kan  man alltid ta fram max-veckan och använda den som start för veckotabellen eller kapsla passa till att inte räknas om den inte måste.

 

 

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser

Skapa ett konto eller logga in för att kommentera

Du måste vara medlem för att kunna kommentera

Skapa ett konto

Skapa ett nytt konto på vårt forum. Det är lätt!

Registrera ett nytt konto

Logga in

Redan medlem? Logga in här.

Logga in nu



×
×
  • Skapa nytt...