• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

Variabele top 5 maken

Status
Niet open voor verdere reacties.

DaviddeV1990

Gebruiker
Lid geworden
30 jul 2011
Berichten
61
Ik ben opzoek naar een formule die er voor zorgt dat ik een top 5 kan tonen op basis van een gekozen datum, week, maand of jaar.

Volgend testbestand maakt een en ander wellicht duidelijker:Bekijk bijlage Testbestand.xlsx

Aan de opmaak van de tabel kan ik helaas niks veranderen. Het dient dus echt met formules te worden opgelost of eventueel een macro. De data zit niet altijd in dezelfde kolom. Als ik dus een top 5 van week 14 wil hebben, dan zit de data hiervoor nu in kolom K, maar deze kan later in een andere kolom zitten.

Wie kan mij uit de brand helpen! Enorm bedankt alvast!

Met vriendelijke groet,
David de Vogel
 
Dat topic was ook van mij. ;) Helaas is daar geen goed antwoord uitgekomen. De vraag is overigens iets anders dan toen, vandaar dit nieuwe topic. Hoop dat je mij kunt helpen!
 
David, je hebt nu een platgeslagen draaitabel geplaatst, waarvoor het wel mogelijk is een topX van te maken met een macro zoals sylverster-ponte heeft gedaan.

maar zou je toch een voorbeeldje met je database en de werkende draaitabel. Ik ben ervan nagenoeg overtuigd dat ik een voorbeeld kan maken met werkende draaitabellen en waarbij gebruikers alleen de selectielijsten hoeven te gebruiken zoals jij aangaf graag te willen en die ook voor je vorige vraag kan werken. alleen de data uit je vorige voorbeeld bevat geen datums en weeknummers die hier wel voorkomen en nodig zijn.

misschien dat je zelf al de oplossing kan uitwerken op basis van deze video van datapig technoligies, maar anders maak ik graag een voorbeeld je voor je..
 
Bedankt voor de reacties! Vooral met het filmpje wordt het veel wijzer. Waar ik nu nog mee zit is:

1) Er wordt in het filmpje gesproken over dat je "BALTIMORE-PHILY" moet aanpassen naar Range("G1").Text. Bij mij staat die "G1" op een andere sheet dan de sheet waar de PivotTables staan, hoe los ik dit op? Ik zag dat je niet iets kon doen zoals Sheet!G1 o.i.d. Hoe kan het wel?

2) Hoe los ik nu nog het probleem met de data op? Dus alleen week 17 of alleen dag 14-04-2012 of alleen jaar 2012?

In ieder geval enorm bedankt, want ik ben al wel weer een stap verder!
 
Je sheet verwijzing in VBA moet dan zoiets worden als Sheets("Sheet2").Range("G1'), waarbij "sheet2" dan natuurlijk moet verwijzen naar de naam van jou tabblad

voor het 2e probleem, staan die weeknummers in de datatabel in een kolom of alleen in je draaitabel? ik vind het werken met die platgeslagen draaitabel in het testbestand dat je hier hebt neergezet erg onhandig.. er zit wel een hiërarchie in je gegeven jaar? maand > week > datum
Ik denk zo uit mijn hoofd dat ik een cel met gegevensvalidatie zou maken met Dit jaar, vorig jaar, Deze maand, vorige maand, kies maand, Deze week, vorige week, kies week, en aan die keuzes een gedefineerde naam koppelen die de juiste waarde maakt dus "dit jaar" = Jaar(vandaag()) en deze maand word maand(vandaag()) vorige maand is -1 erachter en dat dan op de juiste draaitabel filter toe te passen zodat de juiste data word getoond,
 
Je sheet verwijzing in VBA moet dan zoiets worden als Sheets("Sheet2").Range("G1'), waarbij "sheet2" dan natuurlijk moet verwijzen naar de naam van jou tabblad

voor het 2e probleem, staan die weeknummers in de datatabel in een kolom of alleen in je draaitabel? ik vind het werken met die platgeslagen draaitabel in het testbestand dat je hier hebt neergezet erg onhandig.. er zit wel een hiërarchie in je gegeven jaar? maand > week > datum
Ik denk zo uit mijn hoofd dat ik een cel met gegevensvalidatie zou maken met Dit jaar, vorig jaar, Deze maand, vorige maand, kies maand, Deze week, vorige week, kies week, en aan die keuzes een gedefineerde naam koppelen die de juiste waarde maakt dus "dit jaar" = Jaar(vandaag()) en deze maand word maand(vandaag()) vorige maand is -1 erachter en dat dan op de juiste draaitabel filter toe te passen zodat de juiste data word getoond,

Dat eerste dacht ik zelf ook. Ik krijg dan echter de melding "Run-time error: '1004': Unable to get the PivotTables property of the Worksheet class". De volgende regel wordt vervolgens gemarkeerd:
Code:
    ActiveSheet.PivotTables("Draaitabel2").PivotFields("Winkel afdeling"). _
        CurrentPage = Sheets("Admin").Range("B248").Text

Daar kom ik dus niet uit want volgens mij staat alles goed. Op de sheet Admin staat immers in B248 de gekozen Winkel afdeling.

Wat betreft het andere gedeelte van mijn vraag, het ziet er als volgt uit: VoorbeeldPivotTable.jpg
Ik kan helaas niet de hele pivottable als bijlage toevoegen aangezien bepaalde gegevens uit deze pivottable geheim zijn. Hoop dat dit ook al iets meer zegt? Weken, periodes en jaren worden zoals te zien is op de afbeelding wel steeds afgesloten met "'...' Total". Misschien dat daar iets mee gedaan kan worden?
 
wat het eerste probleem betreft, probeer het eens met Sheets("Admin").Range("B248").Value ik dacht dat .text ergens anders voor is al weet ik zo niet voor wat. .value geeft op zeker de inhoud van B248
ik zie geen reden waarom je een waarde niet van een ander blad kan halen, behalve als je code in het werkblad staat en niet in een aparte module (bijv module1)

wat je afbeelding van de pivot.. ik zou dus een 2e pivot maken waarbij ook het jaar, maand, week en datum in de rapportage filter komen en daarna met de velden die ik beschreef de filters aansturen. Vervolgens op het veld artikelnummer een top 5 filter maken dan toont die pivot altijd alleen een top5 en de rapportagefilters bepalen over welke periode en dat totaal word getoond.
eventueel kan je nog zodanig je macro maken dat elke keuze (dit jaar, deze maand, deze week) leid tot een specifieke draaitabel die dan opnieuw opgebouwd word.
 
wat het eerste probleem betreft, probeer het eens met Sheets("Admin").Range("B248").Value ik dacht dat .text ergens anders voor is al weet ik zo niet voor wat. .value geeft op zeker de inhoud van B248
ik zie geen reden waarom je een waarde niet van een ander blad kan halen, behalve als je code in het werkblad staat en niet in een aparte module (bijv module1)

wat je afbeelding van de pivot.. ik zou dus een 2e pivot maken waarbij ook het jaar, maand, week en datum in de rapportage filter komen en daarna met de velden die ik beschreef de filters aansturen. Vervolgens op het veld artikelnummer een top 5 filter maken dan toont die pivot altijd alleen een top5 en de rapportagefilters bepalen over welke periode en dat totaal word getoond.
eventueel kan je nog zodanig je macro maken dat elke keuze (dit jaar, deze maand, deze week) leid tot een specifieke draaitabel die dan opnieuw opgebouwd word.

Het eerste deel van de vraag is gelukt. Bedankt daarvoor!

Wat betreft het tweede deel van mijn vraag, is het niet mogelijk om bijvoorbeeld in rij 9 (zie afbeelding uit eerdere post) te zoeken naar "04 Total" en als "04 Total" gevonden is dat vervolgens die kolom wordt gepakt? Volgens mij zou ik daar mee geholpen zijn en kan ik het verder zelf oplossen. Is dat mogelijk? En zo ja, hoe? Bedankt in ieder geval!
 
dat zal vast kunnen, maar dat is waar ik afhaak... enerzijds omdat je met jou platgeslagen voorbeeld niet hetzelfde kan als met een "levende draaitabel" anderzijds omdat ik denk ddat het door de opmaak van de draaitabel een heel ingewikkelde formule of vba code word..
 
dat zal vast kunnen, maar dat is waar ik afhaak... enerzijds omdat je met jou platgeslagen voorbeeld niet hetzelfde kan als met een "levende draaitabel" anderzijds omdat ik denk ddat het door de opmaak van de draaitabel een heel ingewikkelde formule of vba code word..

Opzich gaat het er nu niet meer over of het een Pivottable is of niet. Het gaat mij er alleen om dat ik de kolom wil pakken met de data die ik nodig heb. De rest van de formules om een top 5 op te stellen heb ik zelf al. Nu moet ik echter handmatig (bijvoorbeeld) kolom N selecteren omdat daar de gegevens voor periode 4 in staan. Ik zoek dus alleen nog maar naar een formule die zegt dat ik bijvoorbeeld kolom N moet hebben omdat in N8 "04 Total" staat. Al het overige werk is dus al gedaan. Kun je mij daar nog wel mee helpen? Zou voor mij erg fijn zijn! :-)
 
Ik heb in het testbestandje de volgende formule gezet.

Code:
=VERGELIJKEN(B47;A5:X5;0)

die geeft als resultaat 11 dat staat gelijk aan kolom K waar dus 14 Total staat.

dus deze formule vind de kolom op basis van de celinhoud. de uitkomst is het kolomnummer, dit kolomnummer kun je dan in je al bestaande formule gebruiken,
 

Bijlagen

Ik heb in het testbestandje de volgende formule gezet.

Code:
=VERGELIJKEN(B47;A5:X5;0)

die geeft als resultaat 11 dat staat gelijk aan kolom K waar dus 14 Total staat.

dus deze formule vind de kolom op basis van de celinhoud. de uitkomst is het kolomnummer, dit kolomnummer kun je dan in je al bestaande formule gebruiken,

Dat laatste begrijp ik niet, in de al bestaande formules staat bijvoorbeeld K:K omdat ik dat zelf heb ingevuld. Maar nu weet ik dat 14 Total in de 11e kolom is. Echter heb ik alleen '11'. Hoe maak ik van die 11 vervolgens K:K?
 
tsja, nu zijn we echt wel op het punt dat je ofwel een testbestand met die formule gaat plaatsen of het houd zo'n beetje op.. ik heb al vele aannames gedaan om je op weg te helpen maar ik ben niet helderziend dus kan niet zien hoe jou formule er uit ziet. er zijn vele manieren om een cel of kolom aan te roepen maar alleen door het zien van de formule in de context van een voorbeeld bestand, dan kan ik misschien vinden wat je aan moet passen maar uit mijn hoofd gaat me dat niet meer lukken..
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan