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

Unieke verschillijst + verschiltijd

Status
Niet open voor verdere reacties.

BarryVdW

Gebruiker
Lid geworden
18 nov 2018
Berichten
38
Beste,

In bijlage een lijst met datums en tijdstippen en gebruikers wanneer ze inloggen en terug uitloggen.
Graag had ik een lijst gemaakt van hoeveel er tegelijk ingelogd zijn en hoelang iedereen individueel is ingelogd.

In kolom A staan de datums met tijdstippen. Ik veronderstel dat deze eigenlijk in een aparte kolom moeten staan, maar de datum mag er eigenlijk afvallen, daar ik toch de lijsten trek per datum. Met zoek en vervang is dit makkelijk op te lossen.
In kolom B staan de unieke USER nummers en de status of ze ingelogd of uitgelogd zijn.
Een aantal unieke zaken optellen in een bepaald bereik is makkelijk te doen wanneer ze uniek in een cel staan, wanneer er verschillende zaken in een cel staan is een ander verhaal.
Hopelijk begrijpen jullie een beetje mijn uitleg.

Met vriendelijke groeten,
Barry
 
Laatst bewerkt:
zo ?
En als je klaar bent met de vraag, misschien zouden we dan beter de bijlagen verwijderen ivm. privacy.
Ik had daar anders ook de 3e kolom gebruikt kunnen hebben.
 

Bijlagen

Laatst bewerkt:
Hartelijk dank cow18
Knap werk!

Heb geprobeerd om de lijst op te maken voor 8/02 maar wil mij niet lukken.
Ik heb de lijst van 8/02 in de plaats van 9/02 in Blad1 gekopieerd, dan de macro laten draaien, maar krijg er foutmelding op.
Heb dan de andere tabbladen aangemaakt, maar gaf geen verschil.
Welke zaken moet ik nog doen om dit voor een andere dag te kunnen klaarspelen?

Met vriendelijke groeten,
Barry
 
ik heb alles nog even langsgelopen en mogelijks wat foutafhandeling gedaan zodat je zou moeten zien welke rij je probleem veroorzaakt.
Staat die 3e kolom er altijd bij of was dat enkel voor nu ? Anders als je een tabel hebt met de usernummer en de echte naam, is dat even gemakkelijk.

Je zou eigenlijk je gegevens van 8/2 gewoon moeten zetten ipv die van 9/2 en het zou moeten werken.
Hoe krijg je die gegevens vooraf aangeleverd ? Is dat een csv of een txt bestand of iets anders ?

Lukt het niet, geef die data dan mee in een bijlage.
 

Bijlagen

@cow18,

Altijd leuk om oplossingen met meerdere dictionary's te zien.:thumb:

Even een vraagje; waarom gebruik je deze constructie?
Code:
With Sheets("Blad1")
      .Columns(1).NumberFormat = "0.00"
      arr = .UsedRange.Resize(, 3)
      .Columns(1).NumberFormat = "dd/mm/yyyy hh:mm:ss"
   End With

Wat het doet begrijp ik wel maar ben het volgens mij niet eerder tegengekomen.
Voordeel: geen geneuzel met cdate oid?
Nadeel: extra interactie met het werkblad?
 
de macro werkt in het voorbeeldbestand, maar zodra TS er een andere dag op loslaat, treedt er een fout op.
Du staat er iets geks in, zodat je die cdbl hapert (maar cdbl(string)=0), staan er geen 3 kolommen in het nieuwe bestand, klopt het aantal enkele aanhalingstekens in nederlandstalige meldingen met "inlog" of "afmeld" niet zodat sp(1) de mist in gaat, ... .
In die andere dag(en) zit er in de inlog- of afmeldregels iets beduidend anders, zodat het fout gaat, dus zoek niet de speld in de hooiberg, gok er naar ...
Bovendien, die constructie is, doordat ze op het werkblad en niet in het geheugen gebeurt, een beetje tijdrovend (gokje, 1 microseconde, miereneuker zeker).
Komen die data uit een csv of een txt of een ander bestand en ging er in het inlezen iets fout, ... .

Dus ja, na een 2e voorbeeld van TS zal duidelijker zijn wat er aan de hand is en de uitleg zal, achteraf zoals altijd, heel simpel zijn.
Regels met "ingelogd" zijn in de 3e kolom altijd "system", bij "afgemeld" staat er dan soms een deftige naam voor de "(". Wie/wat levert die 3e kolom ?
Is dat usernummer of dat IP-adres verderop uniek en staat die ergens in een aparte tabel, dan kan je ook daarmee verder ...
 
Laatst bewerkt:
Beste,

Ik haal de gegevens uit de logger. Deze kopieer en plak ik gewoon in excel en verwijder de nodige kolommen zodat ik enkel de kolommen over houd zoals in bijlage (testdatums). De 3de kolom is in principe niet nodig.
Ik kopieer deze dan naar uw bestand, in eerste instantie zie ik niets veranderen. Ik voer dan de macro uit, de gegevens in tabblad logger onder kolom H, I en J verdwijnen en krijg dan de foutmelding fout 13 tijdens uitvoering (uw bestand in bijlage).
De namen van personen in de 3de kolom hebben specifieke logins, daarmee dat hij deze toont. De meeste geeft hij aan als system, omdat dat de standaard gebruikers zijn en zijn enkel te herkennen aan de usernummer in de 2de kolom.

Met vriendelijke groeten,
Barry
 
Laatst bewerkt:
ik vrees dat de lengte van lijst van alle ingelogden me nekt, dus heb ik die even afgeblokt op 254. Lukt het met dat getal, maak er dan eens achtereenvolgens 500 of 1000 van. Lukt het niet maak er dan 10 van.
Code:
        If dict_U.Count Then s = Left(Replace(Join(dict_U.keys, "|"), "aquafinad\", ""), [COLOR="#FF0000"]254[/COLOR]) Else s = ""   '<------- mogelijks probleem met de lengte
Dan heb ik de 3 dagen als aparte tabbladen toegevoegd en de macro nogmaals laten lopen voor die bladen.
Ik krijg geen foutmeldingen en zie in tabblad "logger" en "draaitabel" dat er nieuwe waarden komen, dus ok.
Grappig, maar bijkomstig voor het ogenblik en voor TS, de grafiek past zich tussentijds niet aan, ondanks toevoeging van die "screenupdating" en die "doevents". Weer een MS-grapje ?

Nog een optie, in plaats van iedere dag de oude gegevens te overschrijven zou je die kunnen "toevoegen", maar omdat die aflopend per dag zijn, zou er vooraf nog een keer gesorteerd moeten worden, niet onoverkomelijk in VBA.
Dan ben je ook van het probleem af, dat er bepaalde users over middernacht heen nog ingelogd waren en iets later nog afmelden of eeuwig ingelogd zijn, daar zit een kleine telfout anders.
1.000 rijen per dag, je kan gerust een paar jaar bijhouden.
 

Bijlagen

Laatst bewerkt:
Bedankt cow18,

Bij het laten lopen van de macro over de 3 tabbladen, liep hij de 3 bladen direct af. De datum van het laatste tabblad gebruikte hij dan voor zijn weergave bij mij.
Heb de macro dan aangepast in de uw eerste file met de 254 en zo werkt het perfect bij mij.
Ik kreeg eerst nog wel bij het tabblad logger datums van het jaar 1900 met daaronder die van de gekozen datum, maar als ik het tabblad eerst volledig leeg maak en dan de macro laat lopen, doet die het perfect.
Nogmaals dank.
 
Het zal dus aan het verschil in versie liggen.
Ik gebruik Excel365 maar herinnerde me dat in Excel2013 op die index een beperking zat van lengte.
Welke versie draai jij ?
Was die lijst van aanwezige users eigenlijk wel interessant voor jou ? Anders gooi je die integraal er uit en bovendien stond dat niet in je initiële vraag, dus was dat een bonuspunt.

Dat andere, gewoon iedere dag je nieuwe gegevens onder die van gisteren hangen, is dat geen optie ?
Dan kan je de zaken bv. een jaar bijhouden en met een slicer op de draaitabel of de tabel kan je van alles gaan analyseren + vermijdt je die telfouten van die users die nog ingelogd waren om middernacht.
 
Laatst bewerkt:
Zit inderdaad met 2013.
De lijst mocht er zeker bij zijn, laat het zien in cijfers ipv in de grafiek.

Om de verschillende dagen onder elkaar te plaatsen is ook een optie.
Ik gebruik het nu vooral om te kijken of we niet boven onze max aantal licenties komen per dag.

In ieder geval hartelijk dank! Ik had het zeker niet voor elkaar gekregen.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan