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

laatste vijf datums in draaitabel

Status
Niet open voor verdere reacties.

Spiesse

Gebruiker
Lid geworden
14 jul 2011
Berichten
902
hello again...

voor een draaitabel ben ik op zoek naar een manier om enkel de laatste 5 dagen van invoer te tonen. Tussen de dagen kan er verschil zitten, dat ze dus niet aaneensluitend zijn...

via de opties van de draaitabel kan ik groeperen per 5 dagen, maar daar zit dan het probleem dat ik die data niet kan sorteren van nieuw naar oud... De dagen zouden dus apart moeten zichtbaar zijn, met dan de gegevens van die bepaalde dag...

wie weet hier een oplossing voor?

thx! spiesse
 
ik denk dat dit het gemakkelijkst zal gaan...

in bijlage een aangepast bestand. In de draaitabel zijn er momenteel 7 dagen zichtbaar. Dit mogen er maar 5 zijn, en telkens de tabel vernieuwd wordt moeten de nieuwste data bovenaan staan, en de 4 voorafgaande data. Dus de oudste data dienen weg te vallen...

Dus bij vernieuwen enkel de laatste 5 invoerdagen zichtbaar krijgen, gesorteerd op jongste eerst...

alvast bedankt!

Bekijk bijlage laatste 5 dagen tonen in draaitabel.xlsx
 
Met een omweg:

Ik schrijf de verschillende datums weg naar een hulpblad (blad3)
Dan zet ik een filter aan 13-06-2012 (kies hier een vaste datum die altijd in de tabel staat, je kunt in een draaitabel nl niet alle cellen uitzetten.
dan loop ik alle datums door en zet deze uit, behalve 13-06-2012.
Dan worden de bovenste 5 datums van blad3 weer aangezet, daarna wordt 13-06-2012 weer uitgezet.

er zal best een betere manier zijn maar deze werkt (bij mij) wel.

Code:
Sub datumfilter()

With Sheets("blad1")
For Each cl In .Range("M2:M" & .Cells(Rows.Count, "M").End(xlUp).Row)
If InStr(c01, cl.Value) = 0 Then c01 = c01 & "|" & cl.Value
Next
Sheets("blad3").Range("A1").Resize(UBound(Split(Mid(c01, 2), "|")) + 1, 1) = WorksheetFunction.Transpose(Split(Mid(c01, 2), "|"))
End With
With Sheets("blad3")
.Range("A1:A" & .Cells(Rows.Count, "M").End(xlUp).Row).Sort (.Range("A1")), xlDescending
End With
With Sheets("blad2").PivotTables("Draaitabel1").PivotFields("ingevoerd op")

Dim Item As PivotItem
.PivotItems(CDate("6/13/2012")).Visible = True
For Each Item In Sheets("blad2").PivotTables("Draaitabel1").PivotFields("ingevoerd op").PivotItems
If Item.Name <> CDate("6/13/2012") Then
Item.Visible = False
End If
Next

.PivotItems(CDate(Sheets("blad3").Range("A1").Value)).Visible = True
.PivotItems(CDate(Sheets("blad3").Range("A2").Value)).Visible = True
.PivotItems(CDate(Sheets("blad3").Range("A3").Value)).Visible = True
.PivotItems(CDate(Sheets("blad3").Range("A4").Value)).Visible = True
.PivotItems(CDate(Sheets("blad3").Range("A5").Value)).Visible = True
.PivotItems(CDate("6/13/2012")).Visible = False
End With
Sheets("blad2").PivotTables("Draaitabel1").PivotFields("ingevoerd op").AutoSort _
        xlDescending, "ingevoerd op"

End Sub

Niels
 
ik ga deze straks es proberen, nu een ander varkentje dat ik mag wassen van mijne baas :)

groeten maar alvast bedankt voor de gedane moeite en hulp!

spiesse
 
Probeer dan deze die is wat eenvoudiger.

Code:
Sub datumfilter()

With Sheets("blad1")
    For Each cl In .Range("M2:M" & .Cells(Rows.Count, "M").End(xlUp).Row)
        If InStr(c01, cl.Value) = 0 Then c01 = c01 & "|" & cl.Value
        Next
    Sheets("blad3").Range("A1").Resize(UBound(Split(Mid(c01, 2), "|")) + 1, 1) = WorksheetFunction.Transpose(Split(Mid(c01, 2), "|"))
End With

With Sheets("blad3")
    .Range("A1:A" & .Cells(Rows.Count, "M").End(xlUp).Row).Sort (.Range("A1")), xlDescending
End With

With Sheets("blad2").PivotTables("Draaitabel1").PivotFields("ingevoerd op")
    For Each cl In Sheets("blad3").Range("A1:A5")
        .PivotItems(CDate(cl.Value)).Visible = True
    Next
    For Each cl In Sheets("blad3").Range("A6:A5000").SpecialCells(2)
        .PivotItems(CDate(cl.Value)).Visible = False
    Next
End With
Sheets("blad2").PivotTables("Draaitabel1").PivotFields("ingevoerd op").AutoSort _
        xlDescending, "ingevoerd op"

End Sub

Niels
 
Een eerste poging lukt, een tweede niet... krijg een foutmelding bij .pivotitem (cdate(cl.value)).visible=true..
 
in uw bestand idd alles ok, het mijne niet...

in kolom L (de kolom van de ingevoerde datum op het tabblad 'doppers' zijn er geen andere cellen buiten data...
het blad 2 uit mijn voorbeeldbestand noemt in het echte bestand 'draaitabel vakbond'...

een blad 3 heb ik ook in mijn echt bestand...

kan de macro hieraan aangepast worden?

thx!
 
Dus blad1 heet "doppers"
blad2 heet "draaitabel vakbond"

hoe heet de draaitabel?
Klik in de draaitabel, dan ribbontab opties, links boven zie je dan de naam van de draaitabel.


Niels
 
hey niels,

op mijn werk heb ik idd excel 2010. ik bekijk het es morgen in samenwerking met het hoofdbestand...
 
Dag Spiesse,

Die credits zijn niet voor mij maar voor WHER.

Niels
 
hey niels,
goeiemorgen. de laatste oplossing is ook een goeie. wordt effe zoeken om deze in te voegen in mijn hoofdbestand maar moet wel lukken...

ook thx voor je pm! vermoedelijk zal ik je hulp nog wel nodig hebben :)

groeten

david (spiesse)
 
niels,

als ik de data bekijk op blad, en ik kijk naar de macro, dan zouden deze moeten gesorteerd zijn van nieuw naar oud he? dit is wat ik heb op blad 3:
31/05/2012
31/01/2012
30/05/2012
30/03/2012
30/01/2012
29/05/2012
29/03/2012
29/02/2012
28/03/2012
27/04/2012
27/03/2012
27/02/2012
26/04/2012
26/03/2012
25/05/2012
25/04/2012
24/05/2012
24/04/2012
24/02/2012
24/01/2012
23/05/2012
23/03/2012
23/02/2012
22/05/2012
21/06/2012
21/02/2012
20/06/2012
20/04/2012
20/03/2012
19/06/2012
19/04/2012
19/03/2012
19/01/2012
18/06/2012
18/04/2012
18/01/2012
17/04/2012
17/01/2012
16/04/2012
16/03/2012
16/02/2012
16/01/2012
15/12/2011
15/06/2012
15/05/2012
15/02/2012
15/01/2012
14/06/2012
14/05/2012
13/04/2012
13/03/2012
13/01/2012
6/12/2012
4/12/2012
3/12/2012
6/11/2012
5/11/2012
5/10/2012
2/10/2012
1/10/2012
6/07/2012
5/07/2012
6/06/2012
3/05/2012
2/02/2012
3/01/2012

zou hier een hapering kunnen zitten in het deel van de macro waar de foutmelding verschijnt?
 
Probeer dit eens.


Code:
Sub datumfilter()

With Sheets("blad1")
    For Each cl In .Range("M2:M" & .Cells(Rows.Count, "M").End(xlUp).Row)
        If InStr(c01, cl.Value) = 0 Then c01 = c01 & "|" & cl.Value
        Next
    Sheets("blad3").Range("A1").Resize(UBound(Split(Mid(c01, 2), "|")) + 1, 1) = WorksheetFunction.Transpose(Split(Mid(c01, 2), "|"))
End With

With Sheets("blad3")
For Each cl In .Range("A1:A" & .Cells(Rows.Count, "A").End(xlUp).Row)
cl.Value = CDate(cl.Value)
Next
    .Range("A1:A" & .Cells(Rows.Count, "M").End(xlUp).Row).Sort (.Range("A1")), xlDescending
End With

With Sheets("blad2").PivotTables("Draaitabel1").PivotFields("ingevoerd op")
    For Each cl In Sheets("blad3").Range("A1:A5")
        .PivotItems(CDate(cl.Value)).Visible = True
    Next
    For Each cl In Sheets("blad3").Range("A6:A5000").SpecialCells(2)
        .PivotItems(CDate(cl.Value)).Visible = False
    Next
End With
Sheets("blad2").PivotTables("Draaitabel1").PivotFields("ingevoerd op").AutoSort _
        xlDescending, "ingevoerd op"

End Sub

Niels
 
ander manier hij ziet de datum als text, zo niet meer.

Code:
Sub datumfilter()
ActiveWorkbook.RefreshAll
With Sheets("blad1")
 .Range("M2:M" & .Cells(Rows.Count, "M").End(xlUp).Row).Copy Sheets("blad3").Range("A1")
End With
With Sheets("blad3")
.Range("A1:A" & .Cells(Rows.Count, "A").End(xlUp).Row).RemoveDuplicates Columns:=1, Header:=xlNo

    .Range("A1:A" & .Cells(Rows.Count, "A").End(xlUp).Row).Sort (.Range("A1")), xlDescending
End With

With Sheets("blad2").PivotTables("Draaitabel1").PivotFields("ingevoerd op")
    For Each cl In Sheets("blad3").Range("A1:A5")
        .PivotItems(cl.Value).Visible = True
    Next
    For Each cl In Sheets("blad3").Range("A6:A5000").SpecialCells(2)
        .PivotItems(cl.Value).Visible = False
    Next
End With
Sheets("blad2").PivotTables("Draaitabel1").PivotFields("ingevoerd op").AutoSort _
        xlDescending, "ingevoerd op"

End Sub

Niels
 
haai niels,

samenzitten met collega's is dus nie goe voor de goede gang van zaken e... man man

de dames zouden nu graag het volgende zien: in de kolom D in mijn tabblad doppers (zijnde de kolom die de laatste dag van werkloosheid bevat) zou enkel de data zichtbaar mogen zijn die groter zijn dan vandaag()-1...

via die slicermethode had ik iets kunnen maken, maar zou moeten aangepast worden dus...

sjonge sjonge...
 
Dag Spiesse

Sorry maar die slicermethode komt niet van mij, ik heb geen excel 2010 dus kan het ook niet voor je aanpassen.
De oplossing met slicer is gegeven door WHER.

Niels
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan