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

Selecteren meest recente datum

Status
Niet open voor verdere reacties.

Anjes

Gebruiker
Lid geworden
11 mei 2006
Berichten
13
Hallo,

Voor het uilijsten van personeelsgegevens haal ik deze gegevens uit een tabel (ODBC-koppeling). In deze tabel wordt er echter historie bewaard. Iedere keer als er een mutatie wordt gedaan, wordt dit in deze tabel opgeslagen.
Voor ieder personeelslid zijn er dus verschillende mutatiedata.

Nu wil ik van ieder personeelslid de meest recente gegevens hebben. Omdat niet bij ieder personeelslid de mutatiedatum gelijk is, gebruik ik de formule:

=ALS(Blad1!$A2<Blad1!$A3;Blad1!A2;"")

In kolom A staat dan het personeelslid.
Sortering is eerst op personeelslid en vervolgens op mutatiedatum.

Dit werkt prima, maar is erg omslachtig, omdat je lege regels krijgt als er van een personeelslid meerdere mutatiedata zijn. Bij de oudere data, krijg je een blanco regel.

Is er een andere, wellicht makkelijke manier?

Alvast bedankt,
Anjes
 
Anjes,
Zet is even een klein voorbeeldje hier neer. De gegevens kun je aanpassen als het over privé gaat. Eerst het bestandje even zippen voordat je het plaatst.
 
Kijk maar of dit je bevalt. Met VBA code onder blad2. Als je nadere uitleg wilt kun je die krijgen. Typ in de geel gemarkeerde cel (Blad2) de gewenste datum.
 
Laatst bewerkt:
Hallo Cor,

Bedankt voor je reactie.
Het is alleen niet de oplossing. Je krijgt dan iedereen met bijv. mutatiedatum 1-3-2006.
Niet iedereen heeft die mutatiedatum. Bij persoon 1 wijzigt part-perc op 1-3-2006, bij persoon 2 op 1-5-2006. Persoon 1 heeft op 1-5-2006 geen mutatiedatum, omdat er per die datum niets is gewijzigd. Als ik voor mutatiedatum 1-5-2006 kies, dan krijg ik persoon 1 niet op de lijst.
Het kan ook zijn dat iemand op 1-3-2006 een mutatie heeft en ook op 1-6-2006. De meest recente mutatie is dan 1-6-2006.
Ik zou dus graag een totaaloverzicht willen van álle medewerkers met de laatste mutatiedatum.
Lekker warrig, maar hopelijk duidelijk.

Groeten,
Anjes
 
Anjes,
Waaraan kunnen we zien wie er op een datum een mutatie heeft. Als er zoveel gelijke data in staan is het moeilijk om dat te bepalen, temeer omdat het systeem van muteren voor ons onbekend is.
 
Op het moment dat er een datum staat na 1-1-2006, betekent dit dat er in 2006 een mutatie is geweest. Een mutatie op persoonsniveau van bijvooorbeeld functiewijziging, wijziging dienstverband, salariswijziging, periodiek in salaris.
Datum 1-1-2006 is de start voor 2006 nav de jaarafsluiting. Die datum heeft iedereen. Op het moment dat er iets wijzigt, door bijv. een jaarlijkse periodiek voor persoon A op 1-3-2006 wordt er voor die datum voor A een mutatie aangemaakt. De datum 1-1-2006 is dan historie, maar wordt in deze tabel wel bewaard. Hij heeft dan 2 regels, met datum 1-1-2006 en 1-3-2006.
Maar men. B heeft op 1-5-2006 zijn periodiekdatum. Voor hem zijn de 2 regels met datum 1-1-2006 en 1-5-2006.
Mevr. C heeft geen andere mutaties. Zij heeft 1 regel, met datum 1-1-2006.
Mevr.D heeft een mutatie op voor 1-2-2006 omdat ze meer uren is gaan werken en op 1-5-2006 omdat ze dan ook een periodiek heeft gehad. Ze heeft dan 3 regels, met datum 1-1-2006 en 1-2-2006 en 1-5-2006. De meest recente datum is 1-5-2006, daarin staan het nieuwe salaris en de nieuwe parttime%.

Wat ik graag wil is een overzicht met de actuele gegevens.
Dus:
men.A met de gegevens voor mut.datum 1-3-2006
men.B met de gegevens voor mut.datum 1-5-2006
mevr.C met de gegevens voor mut.datum 1-1-2006
mevr.D met de gegevens voor mut.datum 1-5-2006

Het lukt mij alleen met de ingewikkelde formule in Voorbeeld.zip. Waarbij ik dus een blanco regel krijg voor de historische mutaties. Wat ik hopelijk op een andere manier kan voorkomen, dan niet meer de blanco regels hoef te verwijderen met knippen en plakken en zo ieder moment over de meest actuele gegevens kan beschikken.

Ingewikkeld he. :confused: Maar hopelijk zo duidelijk.

Bedankt,
Anjes
 
Anjes,
Kijk maar of je met deze oplossing kan leven. Zelfde principe als het eerdere voorstel.
 
Laatst bewerkt:
Hallo Cor,

Hartstikke bedankt voor deze oplossing. Het is erg handig om deze te hebben en ik kan er veel mee.

Mijn eigenlijke vraag blijft echter nog steeds staan. Want mij wordt gevraagd één totaal lijst te hebben van álle medewerkers en dan met de meest recente datum.

Groeten
Anjes
 
Beste Anjes,
Zal erg m'n best doen om aan je wensen tegemoet te komen maar ik vrees dat, wat jij wilt een beetje in de richting van het onmogelijke gaat. Zou op het moment niet weten op welk criterium er gezocht moet worden.
 
Dit KNUTSELWERKJE maakt uit je voorbeeldbestand de lijst die je nodig hebt:

Sub MakeList()
Dim rLijst As Range
Dim strNaam As String
Dim lLoop As Long, lCount As Long, lAantal As Long

Application.ScreenUpdating = False
Set rLijst = Range("Lijst")
Sheets("Blad1").Range("E:E").Clear
rLijst.Columns(1).AdvancedFilter xlFilterCopy, , Sheets("Blad1").Range("E1"), True
lLoop = Sheets("Blad1").Range("E2", Sheets("Blad1").Range("E65535").End(xlUp)).Rows.Count

For lCount = 1 To lLoop
rLijst.AdvancedFilter xlFilterCopy, Sheets("Blad1").Range("E1:E2"), Sheets("Blad2").Range("A1")
lAantal = Sheets("Blad2").Range("A65535").End(xlUp).Row

If lAantal > 2 Then
Sheets("Blad2").Select
Range("A1:D100").Sort Key1:=Range("B2"), Order1:=xlDescending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
End If

Sheets("Blad2").Rows("2:2").Copy Destination:=Sheets("blad3").Range("a65536").End(xlUp).Offset(1, 0)
Sheets("Blad2").Cells.Clear
Sheets("Blad1").Range("E2").Delete xlShiftUp

Next lCount
Sheets("Blad1").Range("E1").Clear
Sheets("Blad1").Range("A1").Select

End Sub


Groetjes - Marrosi
 
Anjes,
De code van Marossi heb ik voor je in een module gezet en in blad3 een knop gemaakt. Het is van belang dat je de namen van de tabbladen niet wijzigt. Kijk even of de code z'n werk goed doet, ik heb de indruk van wel. Mocht de code (in de zin van tabbladbenaming) aangepast moeten worden dan trek je aan de bel. Ik weet niet hoe het met jouw kennis van VBA gesteld is, vandaar deze actie mijnerzijds. Met dank aan Marossi, knap gedaan.
 
Laatst bewerkt:
Jullie hebben weer iemand (en collega's met mij) blij gemaakt!

Dit ondanks dat het dichtbij het onmogelijke zat en dankzij het knustelwerk van Marrosi.
Cor, jouw VBA heb ik geknipt en geplakt in het originele bestand. Zelf bedenken kan ik het niet, maar lezen en beetje begrijpen wel. Het is me dan ook gelukt de code voor de tabbladen aan te passen, zo dat het nog steeds goed werkt ;-)

Geweldig en bedankt!

groetjes,
Anjes
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan