• 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.

Minimum en maximum in draaitabel opvragen obv criteria

Status
Niet open voor verdere reacties.

Djibril

Gebruiker
Lid geworden
18 nov 2010
Berichten
37
Beste,

ik heb een draaitabel met column labels "Jaar" en "Kwartaal", als Row label heb ik "Gebruikersnaam" en als Value heb ik "Average of Score"
Nu is het mijn doel om voor elk jaar en elk kwartaal (dit zijn dus de criteria) de minimum en maximum score met bijhorende Gebruikersnaam weer te geven in aparte cellen op een ander tabblad.
Dit lijkt haalbaar, maar alleen heb ik geen idee hoe ik dit kan verwezenlijken...
Heeft iemand van jullie een idee?

Vriendelijke groeten,
Djibril
 
Laatst bewerkt:
ik ben zelf niet zo bedreven in draaitabellen.

maar op de plaats waar je gemiddelden kunt selecteren kun je toch ook kiezen voor min of max.

is dit geen oplossing voor het probleem.
 
Jammer genoeg niet: zo wordt er immers geen rekening gehouden met de criteria van jaar en kwartaal
 
een beetje in de richting zoals Oeldere al zei,
gebruikersnaam jaar en kwartaal in je rijgedeelte en vervolgens min en max van je score in het datagedeelte (dus 2 keer je score en die dan aanpassen naar min en max)
 
Thanks, dit begint al aardig in de buurt te komen van wat ik wil hebben!
Dus nu heb ik al de max en min score per kwartaal kunnen opvragen.

Deze pivottabel zal echter geüpdated worden voor toekomstige kwartalen (telkens met een verschillend aantal user names) en wat ik uiteindelijk wil bereiken is het automatiseren van de actie dat voor elk kwartaal in een aparte sheet wordt weergegeven wat de max en min score is (dit is nu al bereikt) maar ook welke User Name deze max en min score hebben toegekend.

Ik dacht initieel aan een Verticaal zoeken, maar het probleem is dan dat ik de ranges niet exact kan definieren aangezien ik in een pivottabel werk die regelmatig wordt geüpdated.

Iemand een lumineus idee?
 
met draaitabel.opvragen
 
Ik gebruik deze functie reeds voor Scores op te vragen, maar om deze functie te gebruiken waarbij de Score een criterium is en ik een Row Label (User Name) wil opvragen lukt het me niet...
 
heb je een voorbeeldbestandje ?
 
Zeker, zie bijlage.
Op sheet 1 vindt u de inputtabel en de 2 bijhorende pivottabellen (over max en min)
Mijn vraag vindt u terug op sheet 2

Alvast bedankt voor tijd erin te steken!
 

Bijlagen

zie bijlage
ik heb daar haast alles met verwijzingen gedaan, het kon ook met "user" of "kwartaal" of "jaar" etc
maa dan heb je toch een idee
 

Bijlagen

Ik snap het niet zo goed, want nu bevat de tabel enkel scores maar het is de bedoeling dat bij User Max bv. g en d komen ?
 
hoe zou je dat anders opvragen in een gewone tabel zodat je daar een opsomming krijgt van meerdere users ?? Met vert.zoeken krijg je maar 1 username !
Je gevraagde zie ik enkel op te lossen mits VBA. In bijlage een aanzet tot oplossing via een UDF. Gaat dit in de richting van je vraag.
Bovendien vraag ik me af of je 2 draaitabellen nodig hebt. Komt iedere zone,username,jaar,kwartaal maar 1 maal voor ? Dat zou alles een stuk vergemakkelijken, dan zou je bv; met gemiddelde kunnen werken.


ik begrijp het niet, ik kan het bestand niet uploaden, want het is blijkbaar een ongeldig bestand ????

nu in 2 keer, de werkmap en de module1 apart dan maar ...

Code:
Option Explicit
Sub tt()
  MsgBox Wie("min", "2011", "1")
End Sub

Function Wie(Wat As String, Jaar As String, Kwart As String)
  Dim Waarde As Double, bMax As Boolean, b As Boolean
  Dim vt As Variant, c As Range, i As Integer, k As Integer, r As Integer

  'Application.Volatile
  With Sheets("sheet1").PivotTables(1)                     'onze draaitabel
    Select Case LCase(Wat)
      Case "min": bMax = False                             'je vraagt de minima
      Case "max": bMax = True                              'of de maxima
      Case Else: Wie = "MinMax?": Exit Function            'iets anders mag niet
    End Select

    On Error Resume Next                                   'doorgaan bij fouten
    b = False
    k = .DataBodyRange.Columns.Count                       'aantal kolommen in databodyrange
    For i = 1 To k                                         'alle kolommen aflopen
      Set c = .DataBodyRange.Cells(1, i)                   'alle cellen in 1e rij van databody aflopen
      vt = True                                            'maak vt iets anders dan string
      vt = c.PivotCell.ColumnItems(2).Value                'geef vt de inhoud van columitems(2)
      If VarType(vt) = 8 Then                              'is vartype van vt een string, dan is het geen subtotaal
        If c.PivotCell.ColumnItems(1).Value = Jaar And c.PivotCell.ColumnItems(2).Value = Kwart Then  'ons gevraagde jaar en kwartaal
          k = i: b = True: Exit For                        'k=nr van gezochte kolom en stop de loop
        End If
      End If
    Next
    If Not b Then Wie = "Kolom???": Exit Function

    Waarde = .GetPivotData("min of score", "jaar", Jaar, "kwartaal", Kwart)  'even Waarde een waarde geven
    For Each c In .DataBodyRange.Columns(k).Cells          'loop allle cellen in die kolom van de draaitabel af
      vt = True                                            'maak vt iets anders dan een string
      vt = c.PivotCell.RowItems(2).Value                   'geef vt inhoud van rowitems(2)
      If VarType(vt) = 8 And (1 <= VarType(c) And VarType(c) <= 5) Then  'vt is een getal
        If Not bMax And Waarde > c.Value Or bMax And Waarde < c.Value Then  'je zoekt een minimum en de huidige waarde < huidig minimum of je zoekt maximum en ...
          Wie = ""                                         'wis vorig resultaten
          Waarde = c.Value                                 'nieuwe grenswaarde
        End If
        If Waarde = c.Value Then Wie = Wie & c.PivotCell.RowItems(2).Value & ", "  'alle personen die voldoen aan gestelde grenswaarde
      End If
    Next
  End With
  Wie = IIf(Wie <> "", Left(Wie, Len(Wie) - 2), "")        'ev. laatste 2 karakters wissen
End Function
 

Bijlagen

Laatst bewerkt:
Elke combinatie {User/Zone/Jaar/Kwartaal} is inderdaad een unieke combinatie, bv voor kwartaal 1 heb je een unieke combinatie, voor kwartaal 2 enz...

Bedankt voor de code en de uitleg erbij !
Ik probeer ze spoedig te doorgronden en in in mijn bestand te verwerken, zal iets laten weten indien het lukt.
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan